Na BrightCity Chain Testnet, o ETH nativo paga o gas de toda execução EVM (transferências simples, deploy e chamadas de contrato). Por ser rede privada/testnet, o gas tem função operacional (metering e anti-abuso), não deve ser tratado como economia pública aberta.

Conceitos

ConceitoDescrição
ETH nativoMoeda da rede; saldo em contas EOA
GasUnidade de custo de computação por transação
Gas limit (bloco)Máximo 30.000.000 por bloco (0x1c9c380)
gasPricePreço legado por unidade de gas (sem EIP-1559 nesta configuração)
A rede está no fork Berlin. Não use APIs ou campos de transação de forks posteriores (por exemplo maxFeePerGas como padrão em redes London+), salvo compatibilidade explícita futura documentada pelo consórcio.

Quem precisa de saldo

  • Conta que envia transações (usuário, backend, deployer).
  • Conta que faz deploy de contrato (paga gas da criação).
  • Contratos que executam CALL com valor ou lógica que consome gas adicional.
Obtenha ETH de testnet via política do consórcio BrightCity (transferência para sua conta deployer ou de integração).

Estimar e enviar (ethers.js)

import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://rpc.fmartns.dev', {
  chainId: 20260520,
  name: 'brightcity-chain-testnet',
});

const signer = new ethers.Wallet(process.env.DEPLOYER_PRIVATE_KEY!, provider);

// Ler saldo nativo
const balance = await provider.getBalance(await signer.getAddress());

// Transação simples
const tx = await signer.sendTransaction({
  to: '0xDESTINO',
  value: ethers.parseEther('0.01'),
  gasPrice: 1_000_000_000n, // ajuste conforme política da testnet
  gasLimit: 21_000n,
});

const receipt = await tx.wait();
console.log({ balance: balance.toString(), status: receipt?.status });

Estimar gas de contrato

const HelloWorld = await ethers.getContractFactory('HelloWorld', signer);
const estimated = await provider.estimateGas({
  from: await signer.getAddress(),
  data: HelloWorld.getDeployTransaction('mensagem').data,
});

console.log('Gas estimado (deploy):', estimated.toString());

Relação com deploy

O deploy exige saldo na conta deployer. Se a transação falhar por gas, verifique saldo, gasPrice e gasLimit. Erros de bytecode (opcode inválido) são de compatibilidade de compilador: veja Deploy de contratos.

Próximos passos

Deploy de contratos

Hardhat com evmVersion: berlin

Diferenças vs Ethereum

Gas legado e fork Berlin