Урок 2

Aprofunde-se nos exemplos de contratos Multisig

Nesta lição, embarcaremos em uma exploração aprofundada das três diferentes estruturas de contrato multisig apresentadas na Lição 1: o Contrato Lambda, o Contrato MultisigAction e o Contrato MultisigView. A compreensão desses contratos é fundamental devido ao papel crítico que desempenham no campo do blockchain e das finanças descentralizadas. Nossa exploração envolverá uma desconstrução meticulosa de seu código, uma elaboração de seus recursos exclusivos e discussões sobre aplicações práticas e casos de uso.

Contrato Multisig Lambda

O Contrato Multisig Lambda é um salto significativo na programação de contratos inteligentes devido ao uso do tipo sp.lambda . Introduz a possibilidade de executar funções arbitrárias que não estão pré-determinadas no momento da implantação do contrato. Aqui está uma visão geral detalhada de seus principais componentes:

  1. Parâmetros Iniciais: O contrato é inicializado (__init__) com uma lista de membros que têm permissão para propor e assinar propostas e o número mínimo de assinaturas necessárias para executar uma proposta. Estes são armazenados no armazenamento do contrato (self.data), criando um registro de referência para o contrato operar.

  2. Função Propor: A função propose serve para criar novas propostas. Os membros podem enviar funções lambda (compreendendo operações arbitrárias) que gostariam que o contrato executasse. Essas propostas são armazenadas em uma estrutura de dados big_map , sendo atribuído a cada proposta um identificador exclusivo.

  3. Função de sinalização: A função sign facilita o endosso da proposta. Os membros podem assinar para apoiar propostas. Essas assinaturas, anexadas ao identificador exclusivo da proposta, são coletadas e mantidas em um big_map separado.

  4. Função Executar: A função execute representa o cerne da operação do contrato. Se uma proposta reuniu o número necessário de assinaturas, os membros podem invocar esta função para executar a função lambda proposta, aplicando-a ao armazenamento do contrato.
    O Contrato Multisig Lambda oferece ampla versatilidade, adequado para cenários que exigem estruturas de controle complexas, flexíveis e potencialmente dinâmicas, como DAOs (Organizações Autônomas Descentralizadas), serviços de carteira com múltiplos proprietários e protocolos DeFi complexos.

Este contrato requer a execução de funções lambda arbitrárias com múltiplas assinaturas. Ele apresenta os conceitos de envio e assinatura de funções lambda. Vamos dissecar suas funções:

  1. submit_lambda: esta função permite que os membros enviem funções lambda ao contrato. Trata-se essencialmente de propor uma operação contratual que requer aprovação de múltiplas assinaturas. No painel direito do IDE SmartPy, após o envio bem-sucedido de uma função lambda, você observará uma nova transação iniciada pelo endereço do remetente para o endereço do contrato.

  2. vote_lambda: Esta função permite que os membros votem (assinaturas) a favor de uma função lambda enviada. Após a votação, no painel do IDE, você notará uma nova transação do endereço do membro para o endereço do contrato.

Contrato MultisigAction

O Contrato MultisigAction introduz um mecanismo de votação democrático no domínio dos contratos inteligentes. Nesse modelo, os membros propõem ações específicas, votam nelas e as executam ao atingir o quórum. Este contrato apresenta uma combinação única de consenso humano com execução automatizada de contratos, impondo um controle democrático sobre o comportamento do contrato.

Os principais componentes deste contrato são:

  1. Parâmetros Iniciais: Assim como no contrato Lambda, o Contrato MultisigAction leva uma lista de membros e o número de votos necessários durante a inicialização.

  2. Função Propor Ação: Esta função serve para adicionar novas propostas. Os membros podem submeter ações predefinidas no contrato, associando-as a um identificador único. Essas ações propostas são armazenadas em big_map.

  3. Função de ação de votação: Esta função foi projetada para votar a favor das ações propostas. Os votos estão associados ao identificador único da proposta e são mantidos em um big_map distinto.

  4. Função Executar Ação: Esta função entra em ação quando uma proposta obtém votos suficientes. Os membros podem chamar esta função para executar a ação proposta.
    O Contrato MultisigAction é ideal para situações em que um grupo de indivíduos precisa chegar a um consenso sobre ações contratuais específicas, como em DAOs onde os membros votam na alocação de recursos ou alterações de protocolo.

  5. submit_proposal: Este é o processo de propor uma nova ação. No contexto do nosso exemplo, um membro propõe adicionar um novo signatário ao contrato.

  6. Quando esta operação for realizada no IDE SmartPy, você verá uma nova transação sendo criada no painel direito do IDE. O resumo da transação indicará o remetente (endereço do membro proponente) e o destinatário (endereço do contrato). Pode ser algo assim:

Aqui, o status ‘OK’ mostra que a proposta foi enviada com sucesso.

  1. vote_proposal: O próximo passo é votar a proposta. Esta função permite que os signatários existentes votem na proposta apresentada na etapa anterior.

  2. Quando o signatário 1 votar na proposta, você verá uma nova transação, com o signatário 1 como remetente e o contrato como destinatário. Uma transação semelhante será registrada quando o signatário 2 votar na proposta:

Essas transações indicam que tanto o signatário 1 quanto o signatário 2 votaram com sucesso na proposta.

Contrato MultisigView

O Contrato MultisigView leva adiante o conceito de consenso democrático, mas o aplica a bytes arbitrários em vez de ações contratuais predefinidas. Este contrato abre caminhos onde o consenso pode ser alcançado sobre os dados representados como bytes, sem levar imediatamente à execução de ações.

Os principais blocos de construção deste contrato são:

  1. Parâmetros Iniciais: Tal como acontece com os contratos anteriores, o Contrato MultisigView é inicializado com uma lista de membros e um número que indica os votos necessários.

  2. Função Enviar Proposta: Esta função permite que os membros introduzam novas propostas na forma de bytes arbitrários. Os bytes são armazenados em um big_map, indexado pelos próprios bytes, representando um identificador único da proposta.

  3. Função de votação de proposta: Esta função permite que os membros endossem as propostas. Os votos são rastreados em um big_map separado, vinculado ao identificador único de bytes da proposta.

  4. Função É Votada: Esta função, uma visão on-chain, verifica se uma proposta obteve os votos necessários. Retorna um valor booleano que indica o status de votação da proposta.
    O Contrato MultisigView é particularmente útil nos casos em que o contrato inteligente precisa manter um registro das propostas aprovadas, como em aplicações criptográficas onde os bytes podem representar acordos com hash, provas ou qualquer outra forma de dados que exija aprovação coletiva.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 2

Aprofunde-se nos exemplos de contratos Multisig

Nesta lição, embarcaremos em uma exploração aprofundada das três diferentes estruturas de contrato multisig apresentadas na Lição 1: o Contrato Lambda, o Contrato MultisigAction e o Contrato MultisigView. A compreensão desses contratos é fundamental devido ao papel crítico que desempenham no campo do blockchain e das finanças descentralizadas. Nossa exploração envolverá uma desconstrução meticulosa de seu código, uma elaboração de seus recursos exclusivos e discussões sobre aplicações práticas e casos de uso.

Contrato Multisig Lambda

O Contrato Multisig Lambda é um salto significativo na programação de contratos inteligentes devido ao uso do tipo sp.lambda . Introduz a possibilidade de executar funções arbitrárias que não estão pré-determinadas no momento da implantação do contrato. Aqui está uma visão geral detalhada de seus principais componentes:

  1. Parâmetros Iniciais: O contrato é inicializado (__init__) com uma lista de membros que têm permissão para propor e assinar propostas e o número mínimo de assinaturas necessárias para executar uma proposta. Estes são armazenados no armazenamento do contrato (self.data), criando um registro de referência para o contrato operar.

  2. Função Propor: A função propose serve para criar novas propostas. Os membros podem enviar funções lambda (compreendendo operações arbitrárias) que gostariam que o contrato executasse. Essas propostas são armazenadas em uma estrutura de dados big_map , sendo atribuído a cada proposta um identificador exclusivo.

  3. Função de sinalização: A função sign facilita o endosso da proposta. Os membros podem assinar para apoiar propostas. Essas assinaturas, anexadas ao identificador exclusivo da proposta, são coletadas e mantidas em um big_map separado.

  4. Função Executar: A função execute representa o cerne da operação do contrato. Se uma proposta reuniu o número necessário de assinaturas, os membros podem invocar esta função para executar a função lambda proposta, aplicando-a ao armazenamento do contrato.
    O Contrato Multisig Lambda oferece ampla versatilidade, adequado para cenários que exigem estruturas de controle complexas, flexíveis e potencialmente dinâmicas, como DAOs (Organizações Autônomas Descentralizadas), serviços de carteira com múltiplos proprietários e protocolos DeFi complexos.

Este contrato requer a execução de funções lambda arbitrárias com múltiplas assinaturas. Ele apresenta os conceitos de envio e assinatura de funções lambda. Vamos dissecar suas funções:

  1. submit_lambda: esta função permite que os membros enviem funções lambda ao contrato. Trata-se essencialmente de propor uma operação contratual que requer aprovação de múltiplas assinaturas. No painel direito do IDE SmartPy, após o envio bem-sucedido de uma função lambda, você observará uma nova transação iniciada pelo endereço do remetente para o endereço do contrato.

  2. vote_lambda: Esta função permite que os membros votem (assinaturas) a favor de uma função lambda enviada. Após a votação, no painel do IDE, você notará uma nova transação do endereço do membro para o endereço do contrato.

Contrato MultisigAction

O Contrato MultisigAction introduz um mecanismo de votação democrático no domínio dos contratos inteligentes. Nesse modelo, os membros propõem ações específicas, votam nelas e as executam ao atingir o quórum. Este contrato apresenta uma combinação única de consenso humano com execução automatizada de contratos, impondo um controle democrático sobre o comportamento do contrato.

Os principais componentes deste contrato são:

  1. Parâmetros Iniciais: Assim como no contrato Lambda, o Contrato MultisigAction leva uma lista de membros e o número de votos necessários durante a inicialização.

  2. Função Propor Ação: Esta função serve para adicionar novas propostas. Os membros podem submeter ações predefinidas no contrato, associando-as a um identificador único. Essas ações propostas são armazenadas em big_map.

  3. Função de ação de votação: Esta função foi projetada para votar a favor das ações propostas. Os votos estão associados ao identificador único da proposta e são mantidos em um big_map distinto.

  4. Função Executar Ação: Esta função entra em ação quando uma proposta obtém votos suficientes. Os membros podem chamar esta função para executar a ação proposta.
    O Contrato MultisigAction é ideal para situações em que um grupo de indivíduos precisa chegar a um consenso sobre ações contratuais específicas, como em DAOs onde os membros votam na alocação de recursos ou alterações de protocolo.

  5. submit_proposal: Este é o processo de propor uma nova ação. No contexto do nosso exemplo, um membro propõe adicionar um novo signatário ao contrato.

  6. Quando esta operação for realizada no IDE SmartPy, você verá uma nova transação sendo criada no painel direito do IDE. O resumo da transação indicará o remetente (endereço do membro proponente) e o destinatário (endereço do contrato). Pode ser algo assim:

Aqui, o status ‘OK’ mostra que a proposta foi enviada com sucesso.

  1. vote_proposal: O próximo passo é votar a proposta. Esta função permite que os signatários existentes votem na proposta apresentada na etapa anterior.

  2. Quando o signatário 1 votar na proposta, você verá uma nova transação, com o signatário 1 como remetente e o contrato como destinatário. Uma transação semelhante será registrada quando o signatário 2 votar na proposta:

Essas transações indicam que tanto o signatário 1 quanto o signatário 2 votaram com sucesso na proposta.

Contrato MultisigView

O Contrato MultisigView leva adiante o conceito de consenso democrático, mas o aplica a bytes arbitrários em vez de ações contratuais predefinidas. Este contrato abre caminhos onde o consenso pode ser alcançado sobre os dados representados como bytes, sem levar imediatamente à execução de ações.

Os principais blocos de construção deste contrato são:

  1. Parâmetros Iniciais: Tal como acontece com os contratos anteriores, o Contrato MultisigView é inicializado com uma lista de membros e um número que indica os votos necessários.

  2. Função Enviar Proposta: Esta função permite que os membros introduzam novas propostas na forma de bytes arbitrários. Os bytes são armazenados em um big_map, indexado pelos próprios bytes, representando um identificador único da proposta.

  3. Função de votação de proposta: Esta função permite que os membros endossem as propostas. Os votos são rastreados em um big_map separado, vinculado ao identificador único de bytes da proposta.

  4. Função É Votada: Esta função, uma visão on-chain, verifica se uma proposta obteve os votos necessários. Retorna um valor booleano que indica o status de votação da proposta.
    O Contrato MultisigView é particularmente útil nos casos em que o contrato inteligente precisa manter um registro das propostas aprovadas, como em aplicações criptográficas onde os bytes podem representar acordos com hash, provas ou qualquer outra forma de dados que exija aprovação coletiva.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.