如何存入墨水!智能合约



我对将使用Ink实现的智能合约有一些想法!基板上。

这些想法大多涉及呼叫者向智能合约中存款,智能合约将无限期持有,然后呼叫者可能会在未来的某个时候提取,这取决于其他因素。

我发现了一个允许呼叫者退出智能合约的例子:

https://github.com/paritytech/ink/blob/master/examples/contract-transfer/lib.rs

这暗示了调用者进行存款的一种方法——self.env().transferred_value()方法表明调用者可以/已经发送/发送值。

我正在努力寻找一个将资金存入智能合约的例子。也许我错过了一些基本的东西?

理想情况下,我希望避免实现一个占用2个地址并从一个地址转移到另一个地址的函数(合约已经有了&知道自己的地址!(,而是倾向于调用者发送一个金额,并将其存入智能合约。

我认为这可能与智能合约方法有关,该方法不需要参数,但不确定,也不清楚合同将如何接收&持有资金。

正在寻找一个具体的代码示例来全面展示这是如何工作的,但也很感激任何评论来澄清或纠正我(很可能是不正确的(理解。

提前感谢!

您的合同的方法,即期望付款的方法,应该标记为#[ink(message, payable)],例如这里所示。在调用该方法期间,用户应指定以本国货币发送的金额(如果是polkadot-js,则为应付方法的value字段(。

在该方法中,您可以使用let amount = Self::env().transferred_value();来获取已发送的金额。如果您的交易没有被拒绝,您的合同将在其余额中持有amount代币。它的工作方式与Solidity相同。

获取合同Self::env().balance()的当前余额。发送本地货币Self::env().transfer(to, amount)

也许检查一下这个例子会有用。

相关内容

  • 没有找到相关文章

最新更新