Skip to content

Implantando Contratos Inteligentes na Cadeia Privada Qan

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

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

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

npm i

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!

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

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

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)
     },
   };

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

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

Start deployment!
0

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.