บทเรียนที่ 2

Mergulhe mais fundo nos exemplos de contratos Multisig

Nesta lição, vamos embarcar numa exploração aprofundada das três estruturas contratuais multisig diferentes introduzidas na Lição 1: o Contrato Lambda, o Contrato MultiSigAction e o Contrato MultiSigView. Estes contratos são fundamentais para entender devido ao papel crítico que desempenham no campo da blockchain e das finanças descentralizadas. A nossa exploração envolverá uma desconstrução meticulosa do seu código, uma elaboração das suas características únicas e discussões sobre aplicações práticas e casos de utilização.

Contrato Multisig Lambda

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

  1. Parâmetros iniciais: O contrato é inicializado (__init__) com uma lista de membros que podem 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), criar um registo de referência para o contrato a operar.

  2. Propor Função: A função de proposta serve para criar novas propostas. Os membros podem submeter funções lambda (compostas por operações arbitrárias) que gostariam que o contrato executasse. Estas propostas são armazenadas numa estrutura de dados big_map, com cada proposta atribuído um identificador único.

  3. Função de sinal: A função de sinal facilita o endosso da proposta. Os membros podem assinar propostas de apoio. Estas assinaturas, anexadas com o identificador exclusivo da proposta, são recolhidas e mantidas num big_map separado.

  4. Função de execução: A função de execução representa o cerne da operação do contrato. Se uma proposta tiver reunido 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 uma ampla versatilidade, adequado para cenários que exigem estruturas de controlo complexas, flexíveis e potencialmente dinâmicas, tais como DAOs (Organizações Autónomas Descentralizadas), serviços de carteira com vários proprietários e protocolos DeWi-Fi complexos.

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

  1. submit_lambda: Esta função permite que os membros submetam funções lambda ao contrato. Isto é essencialmente propor uma operação de contrato que requer aprovação multiassinatura. No painel direito do SmartPy IDE, após o envio bem-sucedido de uma função lambda, 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 submetida. Após a votação, no painel IDE, notará uma nova transação do endereço do membro para o endereço do contrato.

Contrato de Multiassinatura

O Contrato MultiSigAction apresenta um mecanismo de votação democrático no domínio dos contratos inteligentes. Neste modelo, os membros propõem ações específicas, votam nelas e executam-nas ao atingirem o quórum. Este contrato apresenta uma mistura única de consenso humano com execução automatizada de contratos, impondo um controlo democrático sobre o comportamento do contrato.

Os principais componentes deste contrato são:

  1. Parâmetros iniciais: Tal como no contrato Lambda, o Contrato MultiSigAction recebe uma lista de membros e o número de votos necessários durante a inicialização.

  2. Propor Função de Ação: Esta função serve para adicionar novas propostas. Os membros podem apresentar ações predefinidas no contrato, associando-as a um identificador único. Estas ações propostas ficam armazenadas num big_map.

  3. Função Vote Action: Esta função foi concebida para votar a favor das ações propostas. Os votos estão associados ao identificador único da proposta e são mantidos num big_map distinto.

  4. Executar Função de Ação: Esta função entra em jogo quando uma proposta obteve 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_proposit_proposit: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 executada no IDE SmartPy, verá uma nova transação a ser criada no painel direito do IDE. O resumo da transação indicará o remetente (o endereço do membro proponente) e o destinatário (o endereço do contrato). Pode parecer algo como isto:

Aqui, o estatuto 'OK' mostra que a proposta foi submetida com sucesso.

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

  2. Quando o signatário 1 votar a favor da proposta, verá uma nova transação, com o signatário 1 como remetente e o contrato como destinatário. Uma transação semelhante será registada quando o signatário 2 votar a favor da proposta:

Estas transações indicam que tanto o signatário 1 como o signatário 2 votaram com êxito a proposta.

Contrato MultiSigView

O Contrato MultiSigView leva adiante o conceito de consenso democrático mas aplica-o 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 da ação.

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

  1. Parâmetros iniciais: Tal como nos contratos anteriores, o Contrato MultiSigView é inicializado com uma lista de membros e um número indicando os votos necessários.

  2. Função Submeter Proposta: Esta função permite aos membros introduzir novas propostas na forma de bytes arbitrários. Os bytes são armazenados num big_map, indexados pelos próprios bytes, representando um identificador de proposta único.

  3. Função de Proposta de Voto: Esta função permite que os membros endossem as propostas. Os votos são rastreados num big_map separado, ligado ao identificador de bytes exclusivo da proposta.

  4. É função votada: Esta função, uma visão em cadeia, verifica se uma proposta adquiriu os votos necessários. Retorna um valor booleano que indica o estado de votação da proposta.
    O Contrato MultiSigView é particularmente útil nos casos em que o contrato inteligente precisa manter um registo de 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

Mergulhe mais fundo nos exemplos de contratos Multisig

Nesta lição, vamos embarcar numa exploração aprofundada das três estruturas contratuais multisig diferentes introduzidas na Lição 1: o Contrato Lambda, o Contrato MultiSigAction e o Contrato MultiSigView. Estes contratos são fundamentais para entender devido ao papel crítico que desempenham no campo da blockchain e das finanças descentralizadas. A nossa exploração envolverá uma desconstrução meticulosa do seu código, uma elaboração das suas características únicas e discussões sobre aplicações práticas e casos de utilização.

Contrato Multisig Lambda

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

  1. Parâmetros iniciais: O contrato é inicializado (__init__) com uma lista de membros que podem 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), criar um registo de referência para o contrato a operar.

  2. Propor Função: A função de proposta serve para criar novas propostas. Os membros podem submeter funções lambda (compostas por operações arbitrárias) que gostariam que o contrato executasse. Estas propostas são armazenadas numa estrutura de dados big_map, com cada proposta atribuído um identificador único.

  3. Função de sinal: A função de sinal facilita o endosso da proposta. Os membros podem assinar propostas de apoio. Estas assinaturas, anexadas com o identificador exclusivo da proposta, são recolhidas e mantidas num big_map separado.

  4. Função de execução: A função de execução representa o cerne da operação do contrato. Se uma proposta tiver reunido 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 uma ampla versatilidade, adequado para cenários que exigem estruturas de controlo complexas, flexíveis e potencialmente dinâmicas, tais como DAOs (Organizações Autónomas Descentralizadas), serviços de carteira com vários proprietários e protocolos DeWi-Fi complexos.

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

  1. submit_lambda: Esta função permite que os membros submetam funções lambda ao contrato. Isto é essencialmente propor uma operação de contrato que requer aprovação multiassinatura. No painel direito do SmartPy IDE, após o envio bem-sucedido de uma função lambda, 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 submetida. Após a votação, no painel IDE, notará uma nova transação do endereço do membro para o endereço do contrato.

Contrato de Multiassinatura

O Contrato MultiSigAction apresenta um mecanismo de votação democrático no domínio dos contratos inteligentes. Neste modelo, os membros propõem ações específicas, votam nelas e executam-nas ao atingirem o quórum. Este contrato apresenta uma mistura única de consenso humano com execução automatizada de contratos, impondo um controlo democrático sobre o comportamento do contrato.

Os principais componentes deste contrato são:

  1. Parâmetros iniciais: Tal como no contrato Lambda, o Contrato MultiSigAction recebe uma lista de membros e o número de votos necessários durante a inicialização.

  2. Propor Função de Ação: Esta função serve para adicionar novas propostas. Os membros podem apresentar ações predefinidas no contrato, associando-as a um identificador único. Estas ações propostas ficam armazenadas num big_map.

  3. Função Vote Action: Esta função foi concebida para votar a favor das ações propostas. Os votos estão associados ao identificador único da proposta e são mantidos num big_map distinto.

  4. Executar Função de Ação: Esta função entra em jogo quando uma proposta obteve 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_proposit_proposit: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 executada no IDE SmartPy, verá uma nova transação a ser criada no painel direito do IDE. O resumo da transação indicará o remetente (o endereço do membro proponente) e o destinatário (o endereço do contrato). Pode parecer algo como isto:

Aqui, o estatuto 'OK' mostra que a proposta foi submetida com sucesso.

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

  2. Quando o signatário 1 votar a favor da proposta, verá uma nova transação, com o signatário 1 como remetente e o contrato como destinatário. Uma transação semelhante será registada quando o signatário 2 votar a favor da proposta:

Estas transações indicam que tanto o signatário 1 como o signatário 2 votaram com êxito a proposta.

Contrato MultiSigView

O Contrato MultiSigView leva adiante o conceito de consenso democrático mas aplica-o 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 da ação.

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

  1. Parâmetros iniciais: Tal como nos contratos anteriores, o Contrato MultiSigView é inicializado com uma lista de membros e um número indicando os votos necessários.

  2. Função Submeter Proposta: Esta função permite aos membros introduzir novas propostas na forma de bytes arbitrários. Os bytes são armazenados num big_map, indexados pelos próprios bytes, representando um identificador de proposta único.

  3. Função de Proposta de Voto: Esta função permite que os membros endossem as propostas. Os votos são rastreados num big_map separado, ligado ao identificador de bytes exclusivo da proposta.

  4. É função votada: Esta função, uma visão em cadeia, verifica se uma proposta adquiriu os votos necessários. Retorna um valor booleano que indica o estado de votação da proposta.
    O Contrato MultiSigView é particularmente útil nos casos em que o contrato inteligente precisa manter um registo de 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