Обновление Safe Network 🇷🇺 07 октября 2021 г

Это машинный перевод. Оригинал на английском здесь: Update 07 October, 2021

Мы представили идею Клиент, пишущий Spentbook не так давно и с тех пор опускаем голову, чтобы поработать лучший способ реализовать это. На этой неделе мы объясним, как мы думаем.

Общий прогресс

Несколько успешных ошибок на этой неделе. У @Chriso тесты CLI / API работают правильно, а это означает, что комбинация sn_cli / sn_api / safe_network теперь более или менее стабильна. Фактически, интерфейс командной строки и API теперь готовы к объединению в основное репо, что означает отсутствие проблем с объединением совместимых версий. : тада:

В этой связи замечательно видеть, как люди застревают в тестовой сети сообщества. Престижность @josh за то, что он сдвинулся с мертвой точки. Некоторое время он летал, что приятно видеть, и, что наиболее важно, файлы журналов, которые он сгенерировал, очень помогают нам в поиске ошибок, поэтому спасибо за то, что делились обновлениями!

@bochaco работает над некоторыми инструментами отладки, которые читают журналы узлов, чтобы проверить, что каждое полученное сообщение обрабатывается до конца. При получении команды узел должен (а) выполнять инструкции или (б) возвращать ошибку, но иногда они сидят и ничего не делают, что (в) может вызвать странные ошибки или даже (г) эффективно заблокировать узел. Используя этот инструмент, они выследили и устранили некоторых возможных виновников, и пока ситуация кажется намного лучше. Такой же анализ можно использовать и для остальной части команды, занимающейся поиском ошибок, включая @yogesh и @qi_ma, которые исследуют аналогичные случаи взаимоблокировки (бесконечные циклы), происходящие с внутренними командами. Мы планируем интегрировать этот инструмент проверки в процесс CI.

Клиент пишет Spentbook

Перед тем, как потратить DBC, клиент должен создать запись Spentbook. Это неизменяемый элемент данных, хранящийся на узлах Adult в сети, который содержит сведения о желаемой транзакции и гарантирует, что после того, как транзакция (повторная отправка DBC) произошла, то же DBC не может быть потрачено снова.

В нашем нынешнем мышлении поток выглядит следующим образом:

  • Клиент создает запись Spentbook и подписывает ее своим открытым ключом.
  • Клиент отправляет подписанную запись в Спентбук всем 7 старейшинам в соответствующем разделе.
  • Старейшины пишут эту запись в Spentbook 3 ближайшим взрослым по ее адресу
  • Старейшины из 7 разделов подписывают запись в Spentbook своим общим ключом BLS и возвращают ее Клиенту.
  • При условии, что Клиент получает не менее 5 таких сообщений (подавляющее большинство), он объединяет общие ключи BLS для создания Spentbook, подписанного действительным ключом раздела. На этом этапе это называется Spentproof.
  • Теперь клиент может попросить старейшин (которые также используют программное обеспечение Mint) переиздать его DBC. Он отправляет DBC вместе с Spentproof обратно старейшинам, которые подписывают переиздание.

Этот процесс имеет много привлекательных особенностей: сеть не участвует в сложном процессе удержания состояния (текущая информация об остатках на счетах и ​​т. Д.); Клиент делает тяжелую работу; количество сообщений туда и обратно приемлемо; и он должен быть достаточно простым в реализации без каких-либо серьезных реорганизаций или рефакторинга.

Мы все еще работаем над вопросами проверки (подтверждения платежа и т. Д.) И оптимизации, но это основная структура того, как мы избегаем двойных расходов.


Полезные ссылки

Не стесняйтесь отвечать ниже со ссылками на переводы этого обновления для разработчиков, и модераторы добавят их сюда.

Как проект с открытым исходным кодом, мы всегда ждем отзывов, комментариев и предложений сообщества - так что не стесняйтесь, присоединяйтесь и давайте вместе создадим безопасную сеть!