【问题标题】:Solidity documentation mint and send functionSolidity 文档创建和发送功能
【发布时间】:2022-08-14 07:59:54
【问题描述】:

在文档中,solidity 有这个硬币示例,我阅读了文档,但我无法理解两者的区别和目的是什么? mint 和 send 函数在做什么? send 函数很有意义,但 mint 函数令人困惑。 “向一个地址发送一定数量的新创建币,只能由合约创建者调用”是什么意思

    标签: blockchain ethereum solidity smartcontracts remix


    【解决方案1】:

    部署硬币合约时,只要您创建一些东西,就没有什么可以使用的。创建硬币的过程称为铸币。

    将一定数量的新创建的硬币发送到一个地址 铸币通常被认为是从某处发送硬币。这可能听起来令人困惑,但可以这样想:

    如果您想要定期转账:地址(Alice)发送到地址(Bob)

    如果你有一个方法要做:address(Nothing) to address(Contract Creator),现在你可以创建硬币了。

    只能由合约创建者调用

    这是有道理的,因为铸币是凭空创造价值的,而这份合约只允许创造者。

    【讨论】:

    • 好的,这是有道理的,但仍然有点困惑。当调用 mint 函数时,你能举一些例子吗?我知道铸币,但这个铸币功能是奖励合约创建者还是铸币者。并且每次有人使用合约时,这个铸币功能都会奖励吗?谁得到好处?
    【解决方案2】:

    如果您查看mint 函数,它有这个require 语句:

     require(msg.sender==minter)
    

    所以只有“铸币者”可以这样称呼。 “铸币者账户”将创建代币并将代币分发给其他账户或出售代币。所以合约所有者创建者和财务管理员是分开的。在部署合约时设置minter

        // you declare the state variable first
        address public _minter;
    
        // you assign a value during the construction of the contract
    
        constructor(address minter_){
            _minter=minter_;        
         }
    

    在面向对象编程中,constructor 在您创建类的实例时被调用。在 Solidity 中,我们在部署合约时创建了一个合约实例。当我们部署合约时,我们必须传递这个参数。如果你在 remix 上部署,你会得到这个:

    您必须在框中输入铸币者地址。

    • send 函数被定义为公共的,所以任何人都可以调用它。在上面的例子中,它只是用来向接收者账户发送一些硬币。

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 2021-04-11
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      相关资源
      最近更新 更多