部署/执行的费用限制

费用限制

在主网上部署合约之前,最好能设置一个合理的费用限制。 费用限制是指 TRX 中智能合约部署/执行成本的上限。 有关能量成本模式,请参阅 能量。 此限制是以 sun (1TRX = 1e6 sun) 来衡量的。 最大限制为10000 TRX 或 1e10 sun。 如果将其设置为大于 1e10 的值,则会产生错误。

在部署大型合同或运行复杂功能时,此限制可能需要增加到 10000 TRX。 但是,检查超时、无限循环、非法操作和不存在的帐户转移部分,是为什么设置更高的限制有时候可能是不良做法的原因。

可以在 Tron-Box 和 Tron-Web 中设置此值:

Tron-Box

就 Tron-Box 智能合约部署而言,所有全局设置都在 tronbox.js 文件中。 在此文件中,有一个名为feeLimit的参数 ,指的是费用限额。

module.exports = {
  networks: {
    development: {
      from: 'TPL66VK2gCXNCD7EJg9pgJRfqcRazjhUZY',
      privateKey: 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0',
      consume_user_resource_percent: 30,
      feeLimit: 1e10,  // Set fee limit
      originEnergyLimit: 1e7,
      fullHost: 'https://api.shasta.trongrid.io',
      network_id: "*" // Match any network id
    },
  }
};

Tron-Web

tronweb.contract.new 的API调用传入一个名为feeLimit的参数。 此参数是指费用限额。

let abi = 'abi';
let code = 'bytecode';
async function deploy_contract() {
  let contract_instance = await tronWeb.contract().new({
    abi: JSON.parse(abi),
    bytecode: code,
    feeLimit: 1e10,  // Set fee limit
    callValue: 0,
    userFeePercentage: 30,
    originEnergyLimit: 1e7,
    parameters: [param1, param2, param3, ...]
  })
  console.log(contract_instance.address);
}
deploy_contract();