Sas*_*imm 1 smartcontracts substrate rust-ink
我对智能合约有一些想法,我将使用 Ink 来实现它们!在基板上。
大多数这些想法都涉及调用者将存款存入智能合约,该合约将无限期持有,然后调用者可能能够在未来的某个时间点提取,具体取决于其他因素。
我找到了一个允许调用者退出智能合约的示例:
https://github.com/paritytech/ink/blob/master/examples/contract-transfer/lib.rs
这暗示了调用者进行存款的方法 - 该self.env().transferred_value()方法表明调用者可以/已经发送/发送价值。
我正在努力寻找一个将资金存入智能合约的示例。也许我在这里遗漏了一些基本的东西?
理想情况下,我想避免实现一个需要 2 个地址并从一个地址转移到另一个地址的函数(合约已经拥有并知道自己的地址!),而是有利于调用者发送金额,并将其存入智能合约。
我认为这可能通过智能合约方法实现,该方法不带参数,但不确定且完全不清楚合约将如何接收和持有资金。
寻找一个具体的代码示例来展示它是如何完整工作的,但也感谢任何评论来澄清或纠正我的(很可能是不正确的)理解。
提前致谢!
小智 6
您的合同中期望付款的方法应标记为,#[ink(message, payable)]例如,如下所示。在调用该方法期间,用户应指定以本机货币发送的金额(如果polkadot-js是value应付方法的字段)。
在该方法中,您可以使用let amount = Self::env().transferred_value();来获取发送的金额。如果您的交易未被拒绝,您的合约将amount在其余额中持有代币。它的工作方式与Solidity中相同。
获取当前合约余额Self::env().balance()。发送本国货币Self::env().transfer(to, amount)。
也许检查该示例会很有用。
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |