You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Для того, чтобы связать ассеты с внешним миром потребуется изменять балансы счетов извне, предлагаю это делать следующим образом.
Инициатор, который делает токенизацию (выпускает или изымает токены), инициирует транзакцию типа SETTLEMENT, со следующими полями:
type = Type.SETTLEMENT ## запрос на сеттлмент
to = default ## специальный адрес, константа используется чтобы облегчить расчет хэша транзакции
nonce = nonce ## нонс
value = amount ## сумма, на которую изменяется баланс, может быть отрицательной
fee = fee + default_reward ## суммарная награда, которую получат custodians
signature = sign ## подпись
data = script_to_validate ## сейчас это просто имя grpc сервиса, который генерирует стандартный ответ, в идеале это должен быть некий скрипт, который подтверждает совершение блокировки средств и т д
После включения такой транзакции в блок, создается account с адресом address(settlment_hash), на него зачисляется fee - default_fee
Сustodians(сейчас для простоты это commitee) могут сгенерировать транзакцию типа AGREEMENT, следующего вида:
type = Type. AGREEMENT ## одобрение сеттлмента
to = address(settlment_hash) ## адрес сгенерированный по хешу settlment
nonce = nonce ## нонс
value = amount ## 0
fee = fee ## комиссия
signature = sign ## подпись
data = proof ## sign(settlment_hash, pk)
Инициатор токенизации, должен собрать 2N/3 + 1 proof и выпустить транзакцию proof следующего вида
type = Type. PROOF ## одобрение сеттлмента
to = address(settlment_hash) ## адрес сгенерированный по хешу settlment
nonce = nonce ## нонс
value = amount ## 0
fee = fee ## комиссия
signature = sign ## подпись
data = proof ## aggregate_sign(sign(settlment_hash, pki)…)
После включения PROOF в блок (proof верен) баланс инициатора меняется на value, вознаграждение делится равно на всех участников proof
The text was updated successfully, but these errors were encountered:
похоже, что единственный способ не хранить в аккаунте список приславших Agreement, это делить reward пропорционально на всех custodian. проблема этого подхода в том, что кто-то при этом заплатит комиссию, кто-то нет (так как собираем мы 2N/3 + 1 голосов и часть может просто не голосовать).
не брать комиссию с Agreement тоже плохо, так как либо злоумышленник может заспамить сеть такими транзакциями и остановить прогресс либо они вообще не попадут в блок в зависимости от приоритезации пула
самым правильным на данный момент выглядет вариант с сохранением списка голосовавших в аккаунте и соответственно в стейте, нужно подумать о последствиях такого расширения аккаунта
Settlement
Для того, чтобы связать ассеты с внешним миром потребуется изменять балансы счетов извне, предлагаю это делать следующим образом.
Инициатор, который делает токенизацию (выпускает или изымает токены), инициирует транзакцию типа SETTLEMENT, со следующими полями:
После включения такой транзакции в блок, создается account с адресом address(settlment_hash), на него зачисляется fee - default_fee
Сustodians(сейчас для простоты это commitee) могут сгенерировать транзакцию типа AGREEMENT, следующего вида:
Инициатор токенизации, должен собрать 2N/3 + 1 proof и выпустить транзакцию proof следующего вида
После включения PROOF в блок (proof верен) баланс инициатора меняется на value, вознаграждение делится равно на всех участников proof
The text was updated successfully, but these errors were encountered: