从昨天起,我一直在学习稳健。
有一件事让我很困惑。
address someone = msg.sender;
someone.transfer(10);如果你看上面的代码。太模棱两可了。
有人把10醚送到X,谁是X?它没有在代码中指定。
发布于 2018-01-26 02:30:28
address someone = msg.sender;
someone.transfer(10);msg.sender是指事务/呼叫的发送方。
address someone = msg.sender;意味着我们将发送者地址存储在某人变量中。
someone.transfer(10); --这相当于msg.sender.transfer(10),此函数允许将10醚从智能协议发送到发件人地址。
智能契约与“正常”地址并没有太大的不同。它只需要做更多的事情(在代码中允许它做的事情)。因此,智能契约可以拥有以太(更准确地说,它们的地址可以),并且它们的行为可以像普通地址一样。因此,智能合同可以将以太发送到地址并接收以太。但是,当智能契约接收到以太时,您可以告诉它做更多的事情,检查关键字payable以获得更多信息。
要回答评论中的问题:不,这并不意味着聪明的合同所有者(1)发送以太,而是合同本身,从自己的以太平衡。
(1)如果这是合理的话。合同本身并没有所有者。这个概念只存在于合同的代码中。
个人注意:但是,我不明白为什么要将msg.sender地址复制到一个变量中。优化在稳固性中非常重要,所以使用msg.sender,不要将它存储在任何地方:)
https://ethereum.stackexchange.com/questions/37534
复制相似问题