Solidity
如何收取交易費用的百分比?
例子:
uint public createPostCost = 0.0003 ether; function createPost(bytes32 _post) public payable { require(msg.value >= createPostCost); Post memory newPost; newPost.post = _post; }
在討論論壇 dapp 中,目前的實現向使用者收取每個創建文章的固定費用。我希望收費是動態的,比如交易天然氣成本的 10%。這可以在契約中實施嗎?或者這是前端 web3 需要處理的事情?
是的,您可以讓費用成為交易氣體的函式。你會做這樣的事情:
uint256 charge = gasleft() / 10;
這是敏感的,您應該知道它會
gasleft()
返回執行時可用的 gas 量。因此,如果您gasleft()
在函式開頭呼叫,則數字將高於函式結尾。此外,有人可能會發送大量不必要的汽油,因此他們最終可能會付出很多。
我的意見是最好在前端處理這個問題。
編輯
如果你想考慮到
gasPrice
,你可以使用tx.gasprice
. 請參閱此處了解更多資訊。