Лямбда-контракт Multisig - это значительный скачок в программировании смарт-контрактов благодаря использованию типа sp.lambda
. Это вводит возможность выполнения произвольных функций, которые не предопределены на момент развертывания контракта. Вот подробный обзор его основных компонентов:
Начальные параметры: Контракт инициализируется(__init__
) списком членов, которым разрешено предлагать и подписывать предложения, и минимальным количеством необходимых подписей для выполнения предложения. Они хранятся в хранилище контракта(self.data
), создание справочной записи для работы контракта.
Функция предложения (Propose Function): Функция propose
служит для создания новых предложений. Участники могут представить лямбда-функции (состоящие из произвольных операций), которые они хотели бы, чтобы выполнял контракт. Эти предложения хранятся в структуре данных big_map
, причем каждому предложению присваивается уникальный идентификатор.
Функция знака: Функция знака
облегчает одобрение предложения. Члены клуба могут поставить свою подпись в поддержку предложений. Эти подписи, присоединенные к уникальному идентификатору предложения, собираются и хранятся в отдельной big_map
.
Функция выполнения (Execute Function): Функция execute
представляет собой суть работы контракта. Если предложение набрало необходимое количество подписей, участники могут вызвать эту функцию для выполнения предложенной лямбда-функции, применив ее к хранилищу контракта.
Лямбда-контракт Multisig обладает широкой универсальностью и подходит для сценариев, требующих сложных, гибких и потенциально динамичных структур управления, таких как DAO (децентрализованные автономные организации), сервисы кошельков с несколькими владельцами и сложные протоколы DeFi.
Этот контракт требует выполнения произвольных лямбда-функций с несколькими подписями. Он знакомит с концепциями представления и подписи лямбда-функций. Давайте разберем его функции:
submit_lambda: Эта функция позволяет членам группы отправлять лямбда-функции в контракт. По сути, это предложение операции по контракту, которая требует одобрения несколькими подписями. На правой панели SmartPy IDE после успешного выполнения лямбда-функции Вы увидите новую транзакцию, инициированную адресом отправителя на адрес контракта.
vote_lambda: Эта функция позволяет членам клуба отдать свои голоса (подписи) в пользу представленной лямбда-функции. После голосования в панели IDE Вы заметите новую транзакцию с адреса участника на адрес контракта.
Контракт MultisigAction вводит в сферу смарт-контрактов механизм демократического голосования. В этой модели участники предлагают определенные действия, голосуют за них и выполняют их при достижении кворума. Этот контракт представляет собой уникальное сочетание человеческого консенсуса с автоматическим исполнением контракта, обеспечивая демократический контроль над поведением контракта.
Основными компонентами этого контракта являются:
Начальные параметры: Как и в контракте Lambda, контракт MultisigAction принимает при инициализации список членов и количество необходимых голосов.
Функция предложения действия (Propose Action Function): Эта функция служит для добавления новых предложений. Участники могут выполнять действия, которые заранее определены в контракте, связывая их с уникальным идентификатором. Эти предлагаемые действия сохраняются в big_map
.
Функция "Голосовать за действие": Эта функция предназначена для подачи голосов в пользу предлагаемых действий. Голоса ассоциируются с уникальным идентификатором предложения и хранятся в отдельной карте big_map
.
Функция "Выполнить действие": Эта функция вступает в действие, когда предложение набирает достаточное количество голосов. Участники могут вызвать эту функцию для выполнения предложенного действия.
Контракт MultisigAction идеально подходит для ситуаций, когда группе лиц необходимо достичь консенсуса по определенным действиям контракта, например, в DAO, где члены голосуют по распределению ресурсов или изменениям протокола.
submit_proposal: Это процесс подачи предложения о новом действии. В контексте нашего примера участник предлагает добавить в контракт нового подписанта.
Когда эта операция будет выполнена в SmartPy IDE, Вы увидите, как в правой панели IDE создается новая транзакция. В сводке транзакций будут указаны отправитель (адрес предлагающего участника) и получатель (адрес контракта). Это может выглядеть примерно так:
Здесь статус 'OK' показывает, что заявка была успешно подана.
vote_proposal: Следующий шаг - голосование за предложение. Эта функция позволяет существующим подписантам проголосовать по предложению, поданному на предыдущем шаге.
Когда подписант 1 проголосует за предложение, Вы увидите новую транзакцию, в которой подписант 1 будет отправителем, а контракт - получателем. Аналогичная операция будет зарегистрирована, когда подписант 2 проголосует за предложение:
Эти транзакции указывают на то, что и подписант 1, и подписант 2 успешно отдали свои голоса за предложение.
Контракт MultisigView несет в себе концепцию демократического консенсуса, но применяет ее к произвольным байтам вместо предопределенных действий по контракту. Этот контракт открывает возможности для достижения консенсуса в отношении данных, представленных в виде байтов, не приводя сразу же к выполнению действий.
Основными составными частями этого контракта являются:
Начальные параметры: Как и предыдущие контракты, контракт MultisigView инициализируется списком членов и числом, обозначающим необходимое количество голосов.
Функция "Представить предложение": Эта функция позволяет участникам вводить новые предложения в виде произвольных байтов. Байты хранятся в big_map
, индексируемой самими байтами, представляющими собой уникальный идентификатор предложения.
Функция "Голосовать за предложение": Эта функция позволяет участникам одобрить предложения. Голоса отслеживаются в отдельной big_map
, связанной с уникальным байтовым идентификатором предложения.
Функция Is Voted: Эта функция, представляющая собой представление на цепочке, проверяет, набрало ли предложение необходимое количество голосов. Он возвращает булево значение, указывающее на статус голосования по данному предложению.
Контракт MultisigView особенно полезен в тех случаях, когда смарт-контракт должен вести учет одобренных предложений, например, в криптографических приложениях, где байты могут представлять собой хэшированные соглашения, доказательства или любые другие формы данных, требующие коллективного одобрения.
Лямбда-контракт Multisig - это значительный скачок в программировании смарт-контрактов благодаря использованию типа sp.lambda
. Это вводит возможность выполнения произвольных функций, которые не предопределены на момент развертывания контракта. Вот подробный обзор его основных компонентов:
Начальные параметры: Контракт инициализируется(__init__
) списком членов, которым разрешено предлагать и подписывать предложения, и минимальным количеством необходимых подписей для выполнения предложения. Они хранятся в хранилище контракта(self.data
), создание справочной записи для работы контракта.
Функция предложения (Propose Function): Функция propose
служит для создания новых предложений. Участники могут представить лямбда-функции (состоящие из произвольных операций), которые они хотели бы, чтобы выполнял контракт. Эти предложения хранятся в структуре данных big_map
, причем каждому предложению присваивается уникальный идентификатор.
Функция знака: Функция знака
облегчает одобрение предложения. Члены клуба могут поставить свою подпись в поддержку предложений. Эти подписи, присоединенные к уникальному идентификатору предложения, собираются и хранятся в отдельной big_map
.
Функция выполнения (Execute Function): Функция execute
представляет собой суть работы контракта. Если предложение набрало необходимое количество подписей, участники могут вызвать эту функцию для выполнения предложенной лямбда-функции, применив ее к хранилищу контракта.
Лямбда-контракт Multisig обладает широкой универсальностью и подходит для сценариев, требующих сложных, гибких и потенциально динамичных структур управления, таких как DAO (децентрализованные автономные организации), сервисы кошельков с несколькими владельцами и сложные протоколы DeFi.
Этот контракт требует выполнения произвольных лямбда-функций с несколькими подписями. Он знакомит с концепциями представления и подписи лямбда-функций. Давайте разберем его функции:
submit_lambda: Эта функция позволяет членам группы отправлять лямбда-функции в контракт. По сути, это предложение операции по контракту, которая требует одобрения несколькими подписями. На правой панели SmartPy IDE после успешного выполнения лямбда-функции Вы увидите новую транзакцию, инициированную адресом отправителя на адрес контракта.
vote_lambda: Эта функция позволяет членам клуба отдать свои голоса (подписи) в пользу представленной лямбда-функции. После голосования в панели IDE Вы заметите новую транзакцию с адреса участника на адрес контракта.
Контракт MultisigAction вводит в сферу смарт-контрактов механизм демократического голосования. В этой модели участники предлагают определенные действия, голосуют за них и выполняют их при достижении кворума. Этот контракт представляет собой уникальное сочетание человеческого консенсуса с автоматическим исполнением контракта, обеспечивая демократический контроль над поведением контракта.
Основными компонентами этого контракта являются:
Начальные параметры: Как и в контракте Lambda, контракт MultisigAction принимает при инициализации список членов и количество необходимых голосов.
Функция предложения действия (Propose Action Function): Эта функция служит для добавления новых предложений. Участники могут выполнять действия, которые заранее определены в контракте, связывая их с уникальным идентификатором. Эти предлагаемые действия сохраняются в big_map
.
Функция "Голосовать за действие": Эта функция предназначена для подачи голосов в пользу предлагаемых действий. Голоса ассоциируются с уникальным идентификатором предложения и хранятся в отдельной карте big_map
.
Функция "Выполнить действие": Эта функция вступает в действие, когда предложение набирает достаточное количество голосов. Участники могут вызвать эту функцию для выполнения предложенного действия.
Контракт MultisigAction идеально подходит для ситуаций, когда группе лиц необходимо достичь консенсуса по определенным действиям контракта, например, в DAO, где члены голосуют по распределению ресурсов или изменениям протокола.
submit_proposal: Это процесс подачи предложения о новом действии. В контексте нашего примера участник предлагает добавить в контракт нового подписанта.
Когда эта операция будет выполнена в SmartPy IDE, Вы увидите, как в правой панели IDE создается новая транзакция. В сводке транзакций будут указаны отправитель (адрес предлагающего участника) и получатель (адрес контракта). Это может выглядеть примерно так:
Здесь статус 'OK' показывает, что заявка была успешно подана.
vote_proposal: Следующий шаг - голосование за предложение. Эта функция позволяет существующим подписантам проголосовать по предложению, поданному на предыдущем шаге.
Когда подписант 1 проголосует за предложение, Вы увидите новую транзакцию, в которой подписант 1 будет отправителем, а контракт - получателем. Аналогичная операция будет зарегистрирована, когда подписант 2 проголосует за предложение:
Эти транзакции указывают на то, что и подписант 1, и подписант 2 успешно отдали свои голоса за предложение.
Контракт MultisigView несет в себе концепцию демократического консенсуса, но применяет ее к произвольным байтам вместо предопределенных действий по контракту. Этот контракт открывает возможности для достижения консенсуса в отношении данных, представленных в виде байтов, не приводя сразу же к выполнению действий.
Основными составными частями этого контракта являются:
Начальные параметры: Как и предыдущие контракты, контракт MultisigView инициализируется списком членов и числом, обозначающим необходимое количество голосов.
Функция "Представить предложение": Эта функция позволяет участникам вводить новые предложения в виде произвольных байтов. Байты хранятся в big_map
, индексируемой самими байтами, представляющими собой уникальный идентификатор предложения.
Функция "Голосовать за предложение": Эта функция позволяет участникам одобрить предложения. Голоса отслеживаются в отдельной big_map
, связанной с уникальным байтовым идентификатором предложения.
Функция Is Voted: Эта функция, представляющая собой представление на цепочке, проверяет, набрало ли предложение необходимое количество голосов. Он возвращает булево значение, указывающее на статус голосования по данному предложению.
Контракт MultisigView особенно полезен в тех случаях, когда смарт-контракт должен вести учет одобренных предложений, например, в криптографических приложениях, где байты могут представлять собой хэшированные соглашения, доказательства или любые другие формы данных, требующие коллективного одобрения.