Продолжаю серию статей для софто-девелоперов и не только. В предыдущих сериях:
- Изучаем кишки golos.io: вечер 1
- Изучаем кишки golos.io 2: Регистрация в обход сайта
- Изучаем кишки golos.io 3: JS-версия без min и CLI-кошелек
- Изучаем кишки golos.io 4: скомпиленные бинарники golosd и cli_wallet для Ubuntu 16.0.4
- Изучаем кишки golos.io 5: разоблачение заговора наших майнеров и программистов + анонимная регистрация в golos
Сейчас продолжаю эксперименты с майнингом, анонимными счетами (которых у меня уже пачка), делегатством. Но об этом позже.
А сейчас, чтобы завершить начатое, хочу ответить на те вопросы, которые я поставил как цель своего исследования. На самом деле исследование затронуло те моменты, о которых я и не думал.
1. Сколько активных нод в golos.io на данный момент?
Их можно получить командой network_get_connected_peers через CLI-кошелек или по WS-протоколу. Вот же он:
- 109.195.56.195:55648
- 46.101.223.64:45029
- 88.198.34.136:60851
- 188.166.92.61:41067
- 138.68.101.115:4243
- 87.98.241.156:4243
- 95.85.26.132:1032
- 136.243.77.71:4243
- 192.151.147.194:37318
- 109.74.199.175:43099
- 46.4.89.67:4243
- 69.197.159.218:45083
- 142.54.168.58:4243
- 173.208.220.178:4243
- 144.217.4.243:33893
- 144.217.91.162:46119
- 173.208.150.170:20021
- 95.85.20.152:1477
- 212.41.60.32:41407
- 192.151.147.42:40241
Среди них есть и мой сервер.
Похоже 20 штук всего. Но может быть golosd подключается только к 20. В идеале нужно бы обратиться к каждой ноде запросить ее список, но это нужно делать по бинарному p2p протоколу, на не по JSON RPC. Но бинарный p2p протокол нигде не описан, поэтому так просто не получится (нужно изучать исходники golosd, а там C++, с которым я давно не связывался и желания пока не возникает).
2. Сколько майнеров на данный момент и какова сложность майнинга?
Майнеров можно получиь командой get_miner_queue или глянуть на странице http://steemul.ru/witnesses/ в самом низу, под списком делегатов.
С майнингом много приколов и хаков. Часть описал в статье 5, часть планирую описать позже (пока сам немного намайню).
На VDS DigitalOcean за $160 в мес. скорость получается около 1 PoW-блок раз в 3 часа. То есть можно намайнить около 8 блоков в сутки. За месяц 240 блоков (это если админы DigitalOcean не деактивируют VDS за высокую нагрузку!), за них, если я правильно понял, можно увеличить силу голова на 240*$0.15 (курс голоса) = $36. При этом заплатите вы $160. То есть уйдете в минус, конечно, если курс не вырастет.
Но! Во-первых, можно майнить на видеокартах.
А во-вторых есть хитрость с CPU! А именно Google, Amazon, Microsoft, DigitalOcean и прочие дают бонусы при первой регистрации. Часто эти бонусы получают и на маму, и на бабушку, и на дядю, и на тетю... :). Google дает $300, DigitalOcean тоже дает $300. Остальные скромнее. То есть у кого совсем туго с финансами, то можно эти бонусы как бы "конвертировать" в голос с помощью майнинга. Если же сервер покупать за свои кровные, то не выгодно. Получается халявные $300 можно конвертировать в твердые $50. Но опять же, Google прямо прописал что майнить у них нельзя, но так что могут деактивировать сервер (хотя я у них майнил LiteCoin для фана, не заблокировали тогда). DigitalOcean пока меня терпел.
3. Можно ли зарегистрироваться без привязки к соц. сети?
Можно и есть два способа:
1. С помощью команды create_account CLI-кошелька (она же в WS-протоколе). При этом этот новый аккаунт будет как бы дочерним по отношению к вашему текущему (то есть анонимности полной нет). Вот в этом recovery_account и будет указан родительский аккаунт (кто создал). Это платно, стоит 3 голоса (снимается с родительского аккаунта).
Второй способ полностью анонимный, но с ним есть проблемы. А именно, при регистрации сила голоса устанавливается равной нулю, а значит никакие транзакции в системе производить нельзя. Перевести силу голоса невозможно. Намайнить для таких новых аккаунтов тоже не получается (в теории должно работать).
4. Что произойдет с запрещенной информацией и спамом?
По идее в блокчейне останется и никто удалить не сможет, хотя на самом сайте можно скрыть. Хотя, желательно проверить на практике, но пока нет полностью анонимного аккаунта.
5. Есть ли сообщения в блокчейне, которые не видны (заблокированы) на сайте golos.io?
Я искал и таких не нашел. Конечно, просматривал вручную напрямую с блокчейна (чрез JSON-протокол обращался к свой ноде). Возможно еще вернусь к этому, просто очень много сообщений, нужно автоматизировать. Главное что я это могу сделать.
6. Какой наиболее простой способ работы по нейтивному протоколу?
Всего протоколов два. Один -- JSON, предпочитаемый порт 8090. Второй -- бинарный протокол, по которому общаются ноды между собой. Предпочитаемый порт 4243.
Первый JSON-протокол (через WebSocket) немного описан, есть рабочие библиотеки и примеры кода. Бинарный же протокол покрыт мраком, его можно понять лишь по исходникам. Пробовал анализировать с помощью Network Message Analyzer -- похоже все в зашифрованном виде передается, не как у биткойна (у биткойна открыто).
По этому кому нужен бинарный протокол -- нужно изучать исходники на C++.
В принципе, есть надстройка в виде JSON-протокола и там почти все есть, особой нужды в бинарном протоколе нет. Разве что можно было бы обращаться напрямую к нодам и получать у них блоки, минуя API сайта golos.io и не устанавливая свою ноду с открытым RPC-протоколом.
Ура, я ответил на свои вопросы! Ну, кроме 4, на него лишь теоретический ответ есть, пока нет возможности проверить.
Статья - огонь. С нетерпением жду продолжения.
А вот такой вопрос, немного не в тему. Возможно ли установить Web-клиент голоса локально, но подключить к удаленному шлюзу? Хотелось бы большей безопасности, но не загружать блокчейн.
Вы хотите поднять свой сайт (форк https://golos.id/), но не поднимать свою ноду golosd (использовать одну из нод из пункта 1 этой статьи)? Правильно понял?
Насколько я понимаю, сайт берет данные через RPC JSON-протокол по WebSockets. А ноды, как правило, закрывают этот протокол для внешнего доступа (ноды общаются по другому протоколу, бинарный p2p). Я открыл временно, можете юзать: ws://46.101.198.160:8090 -- можно подключаться точно так как к wss://ws.golos.io
Какая нода, мне не столь важно. Пусть хоть wss://ws.golos.io. Главное, устранить потенциальную утечку ключей.
Ясно. Кроме Web-клиента есть cli_wallet, правда не такой удобный. Web-клиент мне не доводилось запускать, скорее всего можно указать любой узел с RPC.
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
@harhor, @tristamoff, @dr-boo, @lex
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
@orator Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.