WEB3DEV

Cover image for Implantando Contratos Inteligentes na Cadeia Privada Qan
Isabela Curado Nehme
Isabela Curado Nehme

Posted on

Implantando Contratos Inteligentes na Cadeia Privada Qan

Este guia irá mostrar passo a passo como implantar um contrato inteligente Solidity na nova Cadeia Qan. Observe que esta cadeia é muito nova e, portanto, este guia não é de forma alguma exaustivo, mas apenas um exemplo para ajudar os desenvolvedores a embarcarem neste novo e emocionante ecossistema. Poderão haver alterações adicionais neste guia ou no ecossistema Qan no futuro e, sendo assim, este guia também poderá estar sujeito a alterações.

Etapa 1: Obtenha um Endereço Assinado x-link e uma Chave Privada

Qan é uma blockchain compatível com Ethereum resistente a quantum, e esse processo é alcançado por meio de endereços assinados x-link. Basta instalar o x-link através do docker e gerar um endereço e uma chave privada seguindo este guia. Esse é um processo curto que não deve demorar mais de 5 minutos se você estiver acostumado com o docker. Uma vez iniciado em sua máquina, o Xlink validará suas transações para contornar a verificação de segurança quantum por 24 horas, mesmo se você fechá-la.

https://learn.qanplatform.com/developers/qan-testnet/setting-up-qan-testnet/2.-install-qan-xlink

Nota: use o seguinte comando para executar o docker e gerar a chave.

docker run -d --name=xlink --restart=always --volume=xlink:/xlink qanplatform/xlink 0 http://rpc.qanx.live:8545
Enter fullscreen mode Exit fullscreen mode

Assim que terminar o processo, você poderá encontrar seu mnemônico e sua chave privada clicando em “Volumes” e depois em “xlink”. Basta clicar no arquivo “privkey” para mostrar a chave privada.

https://miro.medium.com/v2/resize:fit:720/format:webp/1*MBFbBVun91qJzrcPFwdEaQ.png

Etapa 2: Crie uma Pasta npm e Instale as Dependências Necessárias

Basta clonar este git https://github.com/zorglob21/qan-solidity-deployment ou criar um repositório npm e instalar os pacotes você mesmo.

git clone https://github.com/zorglob21/qan-solidity-deployment
Enter fullscreen mode Exit fullscreen mode

Em seguida, abra uma janela de terminal no diretório clonado e construa as dependências.

npm i
Enter fullscreen mode Exit fullscreen mode

Etapa 3: Crie e Compile um Contrato Inteligente

Crie seu contrato inteligente na pasta de contratos e salve-o com uma extensão .sol.

https://miro.medium.com/v2/resize:fit:640/format:webp/1*3APJuNCd22VTvpdgKNFAsA.png

Agora vamos compilá-lo. Para ter certeza de que temos a versão correta do compilador para nosso contrato, instale a versão solc apropriada com:

npm install --save-dev [email protected] // qualquer versão que você precisar!
Enter fullscreen mode Exit fullscreen mode

Então iremos compilá-lo com este comando solc:

npx solcjs --bin --abi --include-path node_modules/ --base-path . --output-dir ./bin ./contracts/<REPLACEWITHYOURCONTRACTNAME>.sol
Enter fullscreen mode Exit fullscreen mode

Os arquivos compilados aparecerão na pasta “bin”.

Etapa 4: Implantação

Agora que nossos arquivos binários e a ABI foram gerados, só precisamos implantar na cadeia qan live. Para isso, utilizaremos a última versão da biblioteca ethers. Isso é importante porque versões mais antigas podem não funcionar.

Mas primeiro, devemos inserir a chave privada que geramos na etapa 1 em um arquivo .env. Portanto, crie um arquivo .env na raiz da pasta e insira a chave privada que você gerou com o X-link.

PRIVATE_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
Enter fullscreen mode Exit fullscreen mode

Já temos este script de implantação pronto na pasta git. Basta substituir a ABI e o caminho binário pelos nomes de arquivo apropriados gerados pelo solc para o seu contrato e colar seu endereço de implantação real como um argumento na função getTransactionCount().

 wallet = await wallet.connect(provider);
 const abi = fs.readFileSync("./bin/<SET YOUR FILE NAME HERE>.abi", "utf8");
 const binary = fs.readFileSync("./bin/<SET YOUR FILE NAME HERE>.bin", "utf8");

 const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
 console.log("Start deployment!");

 const nonce = await provider.getTransactionCount("PASTE YOUR ADDRESS HERE");
 console.log(nonce)

 // Define configurações de otimização
 const overrides = {
     gasPrice: '90000000000', // Ajusta o preço do gás adequadamente
     gasLimit: '10000000', // Ajusta o limite do gás adequadamente
     // Ativa o otimizador Solidity
     nonce: nonce,
     optimizer: {
       enabled: true,
       runs: 200, // Numero de execuções para o otimizador (ajustar conforme necessário)
     },
   };
Enter fullscreen mode Exit fullscreen mode

Observe as configurações gasPrice e gasLimit, bem como a contagem de nonce. No momento em que este artigo foi escrito, esses valores estavam corretos e eram necessários, mas poderão estar sujeitos a alterações num futuro próximo. Forneça argumentos adicionais para o construtor do contrato na função de implantação, antes de passar as substituições.

Depois que tudo isso estiver feito, só precisamos de alguns qan para rede de testes:

https://learn.qanplatform.com/developers/qan-testnet/setting-up-qan-testnet/3.-request-tokens-from-the-faucet

E então estamos prontos para ir:

node deploy.js
Enter fullscreen mode Exit fullscreen mode

Se você não receber uma mensagem de erro, deverá receber esta mensagem impressa no terminal:

Start deployment!
0
Enter fullscreen mode Exit fullscreen mode

O número é o nonce (o número de transações emitidas pelo seu endereço). Aguarde alguns segundos e sua transação deverá aparecer no qanlive explorer.

https://qanx.live/?source=post_page-----aa41c448ca64--------------------------------

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*cdTaDfYYtLu51dNZk1o1Dw.png

E voilà! Pronto!

Este artigo foi escrito por YN, e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.

Latest comments (0)