Close Menu
    Assinantes
    Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn SoundCloud RSS
    Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn SoundCloud Telegram RSS
    Bitcoin Block | Notícias & BlockchainBitcoin Block | Notícias & Blockchain
    • Bitcoin
    • Análise
    • Economia
    • Altcoins
    • Blockchain
    • Destaques
      • El Salvador
      • Bitcombão
      • Documentários
    • Loja
    Assinantes
    Bitcoin Block | Notícias & BlockchainBitcoin Block | Notícias & Blockchain
    Início » Reduzindo os Custos de Implantação de Contratos Inteligentes com Clones
    WEB3

    Reduzindo os Custos de Implantação de Contratos Inteligentes com Clones

    Vanessa BarrosBy Vanessa Barros16/07/2024Updated:16/07/2024Nenhum comentário4 Mins Read
    Compartilhe Facebook Twitter Pinterest LinkedIn Telegram Email WhatsApp
    smart-contracts-cripto-bitcoinblock
    Compartilhe
    Facebook Twitter LinkedIn Pinterest Email Telegram WhatsApp Copy Link

    Muitas vezes, ao desenvolver smart contracts, precisamos criar Factory Pattern—contratos que geram outros contratos. No entanto, instanciar um novo contrato diretamente pode ser caro. É aí que entram os clones. Os clones nos permitem usar o bytecode de um contrato base que já está armazenado na blockchain Ethereum, eliminando a necessidade de publicar o bytecode novamente para cada novo clone criado.

    Compreendendo o Uso de Clones em Solidity

    Clones são contratos inteligentes que compartilham o mesmo bytecode (lógica), mas têm instâncias separadas de armazenamento de estado. Isso significa que, quando você clona um contrato, todas as funcionalidades e comportamentos definidos no código original são replicados, mas cada clone tem um estado de dados único e independente.

    Em Solidity, a biblioteca Clones da OpenZeppelin simplifica o processo de criação de clones. Esta biblioteca usa uma técnica conhecida como “padrão de proxy delegado”, onde um contrato mestre (modelo) serve como um proxy para encaminhar chamadas para os clones, minimizando os custos de implementação e armazenamento.

    Exemplo de Contrato e Fábrica Usando Clones

    Vamos examinar um exemplo prático de implementação de contratos clonáveis usando Solidity e a biblioteca Clones da OpenZeppelin.

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;
    
    import "@openzeppelin/contracts/proxy/Clones.sol";
    
    contract ClonableContract {
        uint256 public data;
    
        constructor() {
            _disableInitializers();
        }
    
         function initialize(
            uint256 initialData_
        ) external initializer {
            data = initialData_;
        }
    
        function setData(uint256 _data) external {
            data = _data;
        }
    }
    
    contract Factory {
        address public template;
        event CloneCreated(address indexed clone);
    
        constructor() {
            template = address(new ClonableContract());
        }
    
        function createClone(uint256 initialData_) external {
            address clone = Clones.clone(template);
            clone.initialize(initialData_);
            emit CloneCreated(clone);
        }
    }

    Explicação do Código

    ClonableContract:

    • Este contrato define uma variável data que pode ser atualizada através da função setData.
    • O construtor desabilita inicializadores de forma eficiente para garantir que não haja múltiplas inicializações ao clonar.
    • No exemplo, a função initialize faz parte do contrato ClonableContract. Esta função é crucial porque, ao usar clones de contratos, o Solidity não permite que construtores sejam executados em instâncias clonadas. Em vez disso, funções de inicialização como initialize são usadas para configurar variáveis de estado iniciais ou realizar qualquer configuração necessária após a criação do clone.

    Factory:

    • A fábrica é responsável por criar clones do ClonableContract.
    • Durante a inicialização do contrato Factory, o endereço do contrato ClonableContract é usado como modelo inicial.
    • A função createClone é usada para criar novos clones. Ela utiliza a função clone da biblioteca Clones para criar um novo contrato baseado no modelo fornecido.
    • Após criar o clone, a função initialize é chamada no clone para definir parâmetros iniciais, neste caso, o valor inicial de data.
    • Um evento CloneCreated é emitido para registrar a criação de cada clone.

    Benefícios dos Clones em Solidity

    • Eficiência de Gás: Clones são mais eficientes em termos de gás na blockchain Ethereum em comparação com a implantação de contratos do zero, pois evitam duplicação de código e operações de inicialização.
    • Flexibilidade: Permite a criação dinâmica de contratos com diferentes configurações sem a necessidade de novas implantações.
    • Padrões de Design: Facilita a implementação de padrões como o Padrão de Fábrica, onde múltiplas instâncias de contratos são necessárias com lógica semelhante.

    Nota sobre a Execução de Construtores

    É importante notar que, ao criar um clone usando Clones.clone, o construtor do contrato modelo (neste caso, ClonableContract) não é executado. Isso ocorre porque a operação de clonagem copia o bytecode do modelo diretamente, incluindo seu layout de armazenamento, mas não aciona a lógica do construtor. Portanto, qualquer inicialização ou configuração necessária para cada instância de clone deve ser gerenciada através de funções de inicialização separadas ou outros mecanismos.

    Considerações Finais

    O uso de clones em Solidity proporciona uma solução robusta para casos de uso onde a criação dinâmica e eficiente de contratos é essencial. Ao aproveitar bibliotecas como a Clones da OpenZeppelin, os desenvolvedores podem facilmente implementar padrões de design poderosos enquanto otimizam o consumo de recursos na blockchain. Esta abordagem não só reduz custos, mas também simplifica a gestão e manutenção de contratos inteligentes em aplicações descentralizadas (dApps) e sistemas de blockchain.

    Texto escrito por Gustavo Toledo

    Isenção de responsabilidade: As opiniões, bem como todas as informações compartilhadas nesta análise de preços ou artigos mencionando projetos, são publicadas de boa fé. Os leitores deverão fazer sua própria pesquisa e diligência. Qualquer ação tomada pelo leitor é prejudicial para sua conta e risco. O Bitcoin Block não será responsável por qualquer perda ou dano direto ou indireto.

    Se aceita Pix, aceita Criptoativos!

    Usando a tecnologia do SWAPX, os Truthers podem realizar pagamentos via Pix, diretamente de seu Truther.

    Inclusão, Liberdade e Inovação!

    Venha ser um Truther

    Fonte

    Blockchain Contratos Inteligentes Criptomoedas dApps Economia Tecnologia Tokens Web3
    Siga-nos no Google News
    Share. Facebook Twitter Pinterest LinkedIn Email WhatsApp Copy Link
    Vanessa Barros
    • Facebook
    • X (Twitter)
    • Instagram
    • LinkedIn

    Chefe de Redação e Editora de Notícias da Indústria Blockchain

    Posts Relacionados

    Bitcoin Bitcoin Block31/05/20254 Mins Read

    Investigadores Revelam Endereços Secretos da MicroStrategy com Mais de 70 Mil Bitcoins

    31/05/2025
    Altcoins Bitcoin Block31/05/20254 Mins Read

    Litecoin Lança L2 e contratos inteligentes

    31/05/2025
    Economia Bitcoin Block30/05/20253 Mins Read

    CEO do JPMorgan critica ideia de reserva estratégica de Bitcoin nos EUA

    30/05/2025
    Add A Comment
    Leave A Reply Cancel Reply

    Pesquisar:
    Impressa

    KEO World lança Workeo para pagamentos entre empresas e financiamento de transações

    30/05/2025

    Integridade ESG divulga pesquisa com as empresas líderes em inclusão de pessoas com deficiência (PcDs) 

    26/05/2025

    Bitybank distribui 10 mil reais em pizza no Bitcoin Pizza Day

    22/05/2025

    Nova Sondagem Industrial da CNI / Indústrias / Sugestão

    21/05/2025

    MB | Mercado Bitcoin celebra Pizza Day com distribuição de pizzas em São Paulo

    20/05/2025

    Braza Bank entra para a 5° posição no Bacen

    15/05/2025

    Amazon avalia investir em Goiás após conhecer política estadual de IA

    15/05/2025

    Newsletter

    Cadastre-se em nossa Newsletter e receba nossas novidades em primeira mão diretamente em seu E-mail

    Cadastrar
    Debate Descentralizado

    Vamos Tokenizar a Economia! – Startup Brasileira e as Regras do Mercado Financeiro

    30/10/2024

    Paulo Kogos discute a situação política e econômica do Brasil e a ameaça da moeda digital estatal

    13/08/2024

    Coinbase e os planos no Brasil: Entrevista com Fábio Plein

    26/07/2024

    Marcos Eduardo analisa a Economia, Política e o Papel do Bitcoin no Brasil

    24/04/2024

    O papel das stablecoins e o futuro do mercado cripto

    09/02/2024
    Tags
    Altcoins Análise Banco central Bitcoin Blockchain CEX Contratos Inteligentes Criptomoedas DAO dApps DeFi DEX Drex Economia ETFs Eventos Exchange Finanças FinTech Games Halving Inovação Inteligência Artificial Internet Investimentos Memecoin Mercado Financeiro Metaverso Mineração NFT PIX Política Privacidade Proof of Stake Proof of Work SEC Segurança Stablecoins Tecnologia Tokenização Tokens Web3
    Diário de Bordo

    Diário de Bordo 01 | El Salvador

    18/04/2023

    Diário de Bordo 0

    20/01/2023
    Facebook X (Twitter) Instagram TikTok Twitch YouTube LinkedIn Telegram
    • Developed By DFK Digital Solutions

    A LIBERDADE É SUA, A DECISÃO TAMBÉM

    Politicas de Privacidade

    • contato@bitcoinblock.com.br

    Type above and press Enter to search. Press Esc to cancel.