最佳实践

本指南向用户介绍智能合约开发中的一些最佳实践。

用户付费比率

用户支付比率定义为智能合约用户应支付的费用比率。 因此,例如,如果用户支付比率设置为 60,则用户支付合同成本的 60%。 此参数将接受 0 到 100 之间的任何整数,包括 0 和 100。 但是,强烈建议设置 1 和 99 之间的值。 原因是保护自己,即合同开发者免受恶意无限循环超时攻击。

有几个地方可以设置此值:

在 Tron-Box 中

在 DApp 开发期间,您必须使用 tronbox.js 文件。 在此文件中,有一个 consume_user_resource_percent:的参数,它指的是用户付费比率。

module.exports = {
 networks: {
 development: {
 from: 'TPL66VK2gCXNCD7EJg9pgJRfqcRazjhUZY',
 privateKey: 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0',
 consume_user_resource_percent: 30, //Set user pay ratio here
 fee_limit: 100000000,
 host: "https://api.trongrid.io",
 port: 8090,
 fullNode: "http://127.0.0.1:16667",
 solidityNode: "http://127.0.0.1:16668",
 // eventServer: "https://api.shasta.trongrid.io",
 network_id: "*" // Match any network id
 },
 testnet: {
 from: 'TPL66VK2gCXNCD7EJg9pgJRfqcRazjhUZY',
 privateKey: 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0',
 consume_user_resource_percent: 30, //Set user pay ratio here
 fee_limit: 100000000,
 host: "https://api.trongrid.io",
 port: 8090,
 fullNode: "https://api.shasta.trongrid.io",
 solidityNode: "https://api.shasta.trongrid.io",
 eventServer: "https://api.shasta.trongrid.io",
 network_id: "*" // Match any network id
 },
 production: {}
 }
};

在 Tron-Studio 中

可以在 Run 选项卡下的 Tron Studio IDE 中设置用户支付率。

在 Tron-Web 中

tronweb.contract.new API 调用接受一个名为 userFeePercentage 的参数。 此参数是指用户支付比率。

let abi = 'some abi for contract';
let code = 'bytecode';
async function deploy_contract(){
 let contract_instance = await tronWeb.contract().new({
 abi:JSON.parse(abi),
 bytecode:code,
 feeLimit = 1_000_000_000,
 callValue = 0,
 userFeePercentage = 1, //Set the user pay ratio here
 parameters:[para1,2,3,...]
 })
 console.log(contract_instance.address);
}