Solidity

如何收取交易費用的百分比?

  • April 22, 2019

例子:

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. 請參閱此處了解更多資訊。

引用自:https://ethereum.stackexchange.com/questions/69960