费用限制说明
费用限制
在主网上部署合约之前,最好能设置一个合理的费用限制。 费用限制是指 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();
Updated about 3 years ago