Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

2
respostas

Pessimo curso, não consigo realizar o deploy

/mnt/c/projetos/Blockchain$ forge create   src/token.sol:MagnaToken   --rpc-url https://rpc.ankr.com/polygon_amoy/**********************   --private-key ***************************************   --constructor-args 10000000   --broadcast   --legacy   --verify   --etherscan-api-key 43YUGQUDJMZKZHDE3J3SSAA6R4BK1BZM1T
[⠊] Compiling...
No files changed, compilation skipped
Warning: Dry run enabled, not broadcasting transaction

Contract: MagnaToken
Transaction: {
  "from": "0x02******2",
  "to": null,
  "maxFeePerGas": "0x6718efd3e",
  "maxPriorityFeePerGas": "0x6718efcc0",
  "gas": "0x81a56",
  "input": "0x60806040*",
  "nonce": "0x0",
  "chainId": "0x13882"
}
ABI: [
  {
    "type": "constructor",
    "inputs": [
      {
        "name": "initialSupply",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "balanceOf",
    "inputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "name",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string",
        "internalType": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "symbol",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string",
        "internalType": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "_to",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_value",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "success",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "Transfer",
    "inputs": [
      {
        "name": "from",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "to",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "value",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  }
]

Warning: To broadcast this transaction, add --broadcast to the previous command. See forge create --help for more.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas

Olá Gislaine.
Tudo bem?
Caso precise de ajuda para resolver algum erro avise ai.
Bons estudos.

Oi Gislaine.
Aqui de novo. :)
Teste ai estas configurações:

  1. Confirme a versão do Foundry e do forge
forge --version

Se estiver desatualizado, atualize com:

foundryup
  1. Verifique o chainId retornado pela sua RPC
    Substitua <RPC_URL> pela sua URL:
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' <RPC_URL>

Anote o valor retornado (hex), por exemplo 0x13882 (decimal 80002).
3. Crie um foundry.toml na raiz do projeto (se não existir)
Conteúdo mínimo recomendado (substitua YOUR_ETHERSCAN_KEY pelo seu valor):

[profile.default]
src = "src"
out = "out"

[etherscan]
api_key = "YOUR_ETHERSCAN_KEY"

Salve como foundry.toml.
4. Exporte variáveis de ambiente (opcional, mais seguro que colocar no arquivo)
No Linux/macOS:

export ETHERSCAN_API_KEY="YOUR_ETHERSCAN_KEY"
export PRIVATE_KEY="sua_chave_privada"

No Windows PowerShell:

$env:ETHERSCAN_API_KEY="YOUR_ETHERSCAN_KEY"
  1. Teste deploy sem verificação para isolar o problema
forge create src/token.sol:MagnaToken \
--rpc-url <RPC_URL> \
--private-key $PRIVATE_KEY \
--constructor-args 10000000 \
--broadcast \
--legacy \
-vvvv
  • -vvvv mostra logs detalhados.
  • Se ainda aparecer "Dry run enabled", verifique se --broadcast está sendo realmente aplicado.
  1. Se o deploy com --broadcast não for executado
    a) Verifique se a private key é válida e começa com 0x.
    b) Confirme saldo suficiente na conta no RPC (MATIC/ETH).
    c) Teste outro provedor RPC para garantir que o problema não é do nó.
  2. Verificação no Etherscan/Polygonscan
  • Confirme que foundry.toml contém a chave etherscan ou que ETHERSCAN_API_KEY está definida.
  • Confirme que o chainId da RPC é suportado pelo explorer.
  • Para Polygon mainnet ou Mumbai:
[etherscan]
api_key = { polygon = "SUA_CHAVE", polygonMumbai = "SUA_CHAVE_DE_TESTNET" }
  1. Se a verificação falhar por chain desconhecido
  • Verifique se o explorer é compatível com Etherscan/Polygonscan.
  • Caso não seja, faça verificação manual via site do explorer (source + compiler/version + settings) ou use API específica.
  1. Logs e diagnóstico final
    Se persistir o problema, cole (sem chaves privadas) o output de:
forge create src/token.sol:MagnaToken \
--rpc-url <RPC_URL> \
--private-key 0x... \
--constructor-args 10000000 \
--broadcast \
--legacy \
-vvvv

Resumo :

  1. Criar foundry.toml com seção [etherscan] ou exportar ETHERSCAN_API_KEY.
  2. Rodar curl para confirmar chainId da RPC.
  3. Executar forge create com --broadcast e -vvvv.
  4. Se o chainId não for suportado pelo Etherscan/Polygonscan, use verificação manual ou outro explorer compatível.

O erro ocorreu porque o Foundry não encontrou uma configuração válida para verificação e deploy do contrato, resultando em "Dry run enabled" mesmo com a flag --broadcast. A causa principal era a ausência de um arquivo foundry.toml com a chave do Etherscan ou da variável de ambiente ETHERSCAN_API_KEY, além da necessidade de confirmar o chainId da RPC usada.
A correção sugerida envolveu: criar o foundry.toml com a chave correta, exportar variáveis de ambiente se preferido, verificar o chainId da rede e executar o deploy com --broadcast e -vvvv para garantir que a transação fosse realmente enviada, isolando problemas de dry run e compatibilidade de rede.
Analise ai com calma e envie um feedback com os resultados.
Bons estudos.