-
Notifications
You must be signed in to change notification settings - Fork 36
Operations sequence #259
Comments
Yeah this change breaks compatibility with all libraries. Tested with python golos libs. |
Operations order is a backward compatibility requirement. All the operations signed before hardfork17 in some cases are getting identified by a number, not a name. So the order is a crucial stuff. This restriction is going to be removed in a softfork version following. golos-js is already getting updated, golos-pyhton will be updated until the hardfork comes. |
Я не говорю про библиотеки на ЯП js и python. Или другие языки программирования Вас мало интересуют? |
@asuleymanov We have started notifying all the community API libraries developers. That is why we have some time after public testing beginning - to help community developers introduce protocol versioning for API libraries. |
Так ладно понятно. И уж если говорите что оповещали то можно посмотреть где это было сделано? |
@asuleymanov Protocol versioning is not going to be reverted because of protocol structure changes mechanism existence requirements (long asset names or more votable chain params for example). It will be widely used in future. But don't be scared. There are no any backward compatibility obligations for API libraries. It just needs to be changed once and done. We've notified some of community library developers in personal, but not in public, because of a reference API libraries have not been fully updated yet and we did not finished updating our wiki and doxygen-generated documentation. You were in notification queue after Steepshot guys :) In case you asked in person, I think, the time has come. Just to solve the trouble for now. Changes are all about asset precision and ticker name serialisation. Version 16 had asset serialisation like So all the operations contained I think @b1acksun could help you deal with it. |
Спасибо большое за разъяснения. |
@asuleymanov I would really appreciate if you report the result of changes in golos-go. I mean, if it worked or not.
… On 13 Nov 2017, at 17:32, Aleksey Suleymanov ***@***.***> wrote:
Спасибо большое за разъяснения.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Т.е. еще разок для закрепления у меня материала. За разъяснения с значением amount огромное спасибо. Так как этот вопрос стоял в списке, но до него я просто не дошел. Как только реализую тестовую вариацию массива обязательно переделаю и проверю работоспособность. Обязательно по результатам отпишусь тут. |
Приветствую. Предложенный @nemo1369 вариант был опробован и работает на отлично. Ну по крайней мере со стандартными токенами проблем не возникло. Буду тестировать и разрабатывать дальше. И да @nemo1369 большая просьба посмотреть issues/272. |
Thanks for the report @asuleymanov. Talking about feature changes. Operations variant is only going to be extended until got replaced. The only important changes for API libraries developers will be described in doxygen-generated documentation. |
я чет не понял, у нас порядок операций изменится? |
@t3ran13 Operations set was extended for versioned operations with fundamental structure changes. |
но почему, например, операция vote теперь имеет порядок 40 вместо изначального 0? |
@t3ran13 Of course it is not, because stuff I've designed is about versioned operations. It means, daemon will be backward compatible with operations for versions 0-16, but it will not accept operations for version 17 just after hardfork time has come. Daemon with production network data is deployed at 46.101.132.158:2001 and 46.101.132.158:8090. |
Есть патерн ивент сорсинг, который запрещает такое делать. Может появиться vote_2.0 ,например, но старый останется как есть. Зачем , в данном случае, наращивать энтропию в архитектуре приложения? Как вы прикажете действовать тем кто будет сканировать блоки напрямую? До блока Х делайте так, после блока Х делацте сяк? При этом имя операции остается одним и тем же У меня мозг отказывается понимать архитектуру такого приложения. Я не понимаю почему нельзя это обойти по человечески? Зачем создавать костыль и инструменты для работы с кастылем? Почему нельзя ввести операции версии 2.0? |
@t3ran13 It was implemented exactly as you suppose. Internal implementation is like Talking about JSON-RPC protocol - implementing I think I just need to clean up the doxygen documentation to include the whole protocol description. |
т.е. данные в самой цепочке будут храниться корректно? а нечеловеческий вид лишь для rpc? при этом это вызано требованием сократить на 2 символа имя и сэкономить трафик? а если через пол года еще операции - добавяться/изменяться, то у нас получится еще одна полная фигня? не, давайте по человечески все делать, и чб в rpc было согласно "Event Sourcing" - vote & vote_17 (или vote_2.0), но текущая реализация... как потом разрабом с этим апи работать? ты лично будешь каждому рассказывать как все реализовано и работает? @ALL кто-то может прочекать код чб блоки не пострадали? |
в общем - изменения для апи только, но для апи это хоть и криво, но не критично) |
Как вариант, можно сделать версионирование апи. Т.е. в каждом запросе/ответе слать атрибут вида "api_version: 1". Имена операций на клиенте будут одинаковыми, но для разных версий API соответственно будет меняться соответствие имя-номер. |
это тоже немного усложняет обработку, немного проще когда каждое поле имеет свою версию, если ответы оборачивать в объекты, это не проблема) хотя и ваш вариант по своему хорош. просто что делать когда ответ смешанный? тогда он не годится) я просто понял, что сделано "как сделано" и никто переделывать сейчас желанием не горит |
Приветствую.
Из-за изменения последовательности операций в массиве. Большинство сторонних библиотек на других ЯП при переходе на 17 версию не смогут работать. Для этого программистам библиотек необходимо будет переписывать их. А можно попросить сделать более правильно (на мой взгляд).
Т.е. что я имею ввиду новые операции которые будут в 17 версии переместить в начало массива, а операции оставленные для 16 версии переместить в конец массива. Ведь сами операции и входные параметры не изменились. Но из-за сдвигания массива на 40 пунктов библиотеки и соответственно По ранее на них написанное перестанет работать. Вот как массив выглядит сейчас:
The text was updated successfully, but these errors were encountered: