费用限制说明

费用限制

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

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

可以在 VisionBox 和 VisionWeb 中设置此值:

VisionBox

就 VisionBox 智能合约部署而言,所有全局设置都在 visionbox.js 文件中,feeLimit的参数 ,指的是费用限额。

module.exports = {
  development: {
    from: 'VR7P6zGiRDP4G1pkWGqe3Ys91CBchk82Nn',
    privateKey: 'your private key',
    consume_user_resource_percent: 60, 
    fee_limit: 100000000, // fee limit
    host: "https://vtest.infragrid.v.network/",
    port: 8090,
    fullNode: "https://vtest.infragrid.v.network/",
    solidityNode: "https://vtest.infragrid.v.network/",
    eventServer: "https://vtest.infragrid.v.network/",
    network_id: "*" // Match any network id
  }
};

VisionWeb

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

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