【问题标题】:Should I write a function on chain in smart contract or off chain?我应该在智能合约或链下编写链上功能吗?
【发布时间】:2023-02-05 00:50:44
【问题描述】:

我很困惑在什么情况下我应该将功能逻辑放在智能合约的链上?或作为 ethers.js/web3js 等在前端脱链。

在 web2 中,我认为无论将功能放在前端还是后端,它们的性能都是一样的。

这是一个链上的例子:

// give an address bonus token if its current balance is more than 0. 
// Maximum is 100. 

function bonus(address anyAddress) public {
    if (balanceOf(anyAddress) >= 0 && balanceOf(anyAddress) < 100)  {
        _mint(anyAddress, 100 - balanceOf(anyAddress));
    } 
}

显然,我可以使用前端逻辑通过在链上调用 _mint() 和 balanceOf() 函数来编写 a 函数,这可以执行相同的结果,并且可能会节省 gas。

那么,为什么要把打包好的函数上链呢?

【问题讨论】:

    标签: ethereum blockchain solidity smartcontracts web3js


    【解决方案1】:

    在合同中包含验证逻辑通常是一种很好的做法。为了更好的用户体验,您可以在前端复制验证。

    请注意,技术熟练的用户可以使用其他方式(从自定义脚本,通过另一个合约,......)执行合约功能 - 而不仅仅是通过您的前端应用程序从他们的 MetaMask 钱包。

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多