-
Notifications
You must be signed in to change notification settings - Fork 3
EOS

Очень тяжело найти публичный тестнет. По какой-то причине, все закрывают доступ в свои сети, никуда не подключиться. Возможно это связано с потенциальными дырками в протоколе и реализации. Единственное что смог найти - jungle.cryptolions.io Нигде не найдёшь инфы по мейннету! Ни адресов нод, ни конфигов ничего! Cryptolions в этом смысле сильно помогли и сделали нормальный конфиг и инструкцию
Пытался поднять block producer ноду для тестнета Jungle, но она постоянно ловила херню и падала. При этом приходится делать hard resync. Выключение block producer фич спасает.
При неуспешной посылке транзакций ответ супер неинформативен. Нормальные адекватные сообщения о том что произошло можно читать в логах ноды. Если убрать вывод о новых блоках и высеры о невозможности подключения
docker-compose logs -f --tail 0 nodeos | grep -v "Received block" | grep -v "net_plugin.cpp"
То можно читать информативный вывод.
Одна из проблем с созданием акков была в том что мы пытались сделать премиум имя и не могли это понять потому что в ответах ничего не было.
Премиум имена - что-то типа top level domains (.com .by .ru) в интернете.
То есть если у нас будет куплено имя .multy, то можно будет делать vadimicus.multy
Обычные имена состоят из 12 символов из словаря 12345abcdefghijklmnopqrstuvwxyz (ещё точка но вроде только для премиум)
Имена получают на аукционе. Актуальные ставки
При создании аккаунта тратится некоторое количество RAM и стейкается непоторое количество CPU и NET (вроде бы при удалении аккаунта RAM возвращают, а CPU и NET освобождается через несколько дней). При этом тратится этот ресурс с создаваемого акка. То есть надо покупать RAM для акка который создаёшь. То есть пушится сразу две операции:
- создание акка
aaaabbbbcccc. - покупка для акка
aaaabbbbcccc1337 RAM. - (cleos ещё добавляет delegatebw в акк
aaaabbbbcccc228 CPU и 228 NET, пока не понятно обязательно ли это)
stackoverflow вопрос про создание акков там в ответе есть несколько сервисов которые предоставляют такую услугу, но цены конские
Не нашёл никаких упоминаний того что подпись на разные штуки существует. Пытался сделать через p2p протокол, там можно получить информацию о propagated blocks. Оказалось не стабильно и не информативно. Можно получить только блок. Написал мейнтейнеру eos-go, говорит только через p2p. В итоге придходится делать бесконечный цикл, с проверкой блоков.
Почти все данные, которые нам нужны, хранятся в сложном специфичном для каждой операции формате. На пример действии transfer в открытом виде содержится только информация о том кто отправляет токены. Информация о том сколько переведоно, каких токенов и кому содержится в бинарном формате, который надо парсить
Не понятно как вычисляется цена за которую покупают/продают RAM в основных токенах. Задал вопрос в чатике - скинули whitepaper Bancor Protocol
Также вот что нашёл:
/**
* When buying ram the payer irreversiblly transfers quant to system contract and only
* the receiver may reclaim the tokens via the sellram action. The receiver pays for the
* storage of all database records associated with this action.
*
* RAM is a scarce resource whose supply is defined by global properties max_ram_size. RAM is
* priced using the bancor algorithm such that price-per-byte with a constant reserve ratio of 100:1.
*/То есть цена за байт всегда 100:1. Но цена в чём? Было бы круто иметь данные о текущей цене. Написал issue по этому поводу
Кусок кода с вычислением цен
В коде оперируют странными данными из connecor'а, доступа к которым нет. Пытался покрутить, повертеть - цены не те выходят.
Данные о текущем supply можно получить с эндпоинта /v1/chain/get_table_rows. При этом в issue отвечают, что можно просто поделить quote / supply и получить цену за байт. Получается цена чуть ниже (вычисленная 888 RAM за 0.1 EOS, реальная 883 за 0.1 EOS). Добавил расчёт fee - всё сошлось.
- Не понятно как считается количество RAM которое нужно для операции/транзакции. Проверка осуществляется где-то здесь, но затем ускользает в веренице спагетти-кода. На девелоперских ресурсах говорят что захардкожены но сколько не понятно.
- Цена за создание аккаунта будет крайне плавающей. При этом надо умудриться не продешевить в любой данный момент времени.
- CPU и NET - также участвуют в создании аккаунта, их тоже надо учитываь в ценах.
- Купить крутое премиум имя типа
.multy - Есть history_plugin, который умеет хранить историю транзакций в mongo. Возможно нам стоит это использовать
- block.one планирует выпускать iOS кошелёк и бесплатно создавать аккаунты. proof (Step 3)
Мультисиг на EOS-е есть, вот статья на тему использования мультисига
Для отправки транзакции в сеть клиентам необходимо отправить на сервер транзакцию в hex формате и подпись в формате BASE-58.
Вот пример отправки транзакции:
{
"compression" : "none",
"packed_context_free_data" : "",
"packed_trx" : "4dde3b5b0719f4f71c61000000000100a6823403ea3055000000572d3ccdcd01000050d2ccabb00600000000a8ed32322f10b0db269d43917990d45dd351042fe5640000000000000004454f53000000000e746573742066726f6d206c796e78",
"signatures" : [
"SIG_K1_Kc9HXdE49MxBHWqQYopbUJzRN74uZjyBX1fLyvSAEwdQbgoFscEUFA2sxgmaeFt8kmi5N5mVv29CEXsKYX3bp7uGiKjmN9"
]
}
вот gist в котором парень на swift пытается реализовать сериализацию, но у его при отправке пишет ошибка сериализации.
Тут еще есть вариант работы с транзакциями на С++.
Для подписи используется предыдущий вариант сериализации, но в начале добавляется id сети и в конце добавляется массив из 32 нулевых байт.