《Hello Solidity!》之 payable

编程入门 行业动态 更新时间:2024-10-24 08:22:44

《Hello <a href=https://www.elefans.com/category/jswz/34/1770851.html style=Solidity!》之 payable"/>

《Hello Solidity!》之 payable

可支付

本节我们讨论一个划时代的函数修饰符 – payable

payable的出现是划时代的 🥳

在它出现前,函数只能将代表货币的数字作为参数传入;

在它出现后,函数可以将货币直接作为参数传入。

在以太坊中,因为货币(以太币)、数据(事务负载)、以及智能合约代码本身都存在于以太坊,

所以可以在调用函数的同时付钱给智能合约。

这就允许出现很多有趣的逻辑!

比如要求必须支付指定数量的以太才能运行函数,

function doSomething() external payable {// 检查调用方是否支付0.001以太require(msg.value == 0.001 ether);// 如果已支付,则运行函数逻辑do();
}

在上面的例子中,msg.value是一种可以查看调用方向合约发送了多少以太的方法,另外ether是一个内建单元。

从调用方那边看到的应该是下面这样子:

// 假设 `KarezaContract` 在以太坊上指向你的合约:
KarezaContract.doSomething().send(from: web3.eth.defaultAccount, value: web3.utils.toWei(0.001))

JavaScript使用value字段来指定发送多少(0.001)以太。

如果把事务想象成信封,你发送到函数的参数就是信的内容。添加value很像在信封里面放钱 – 信件内容和钱同时发送给了接收者。

注意:如果一个函数没标记为payable,而你尝试利用上面的方法发送以太,函数将拒绝你的事务。


在线小册子引流 ==> 《Hello Solidity!》

更多推荐

《Hello Solidity!》之 payable

本文发布于:2024-03-05 03:55:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711246.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Solidity   payable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!