【问题标题】:how can let the smart contract send a transaction to a node如何让智能合约向节点发送交易
【发布时间】:2018-07-18 20:51:46
【问题描述】:

我正在编写一个智能合约,它创建一个由两方签署的文档,然后让智能合约将签署的文档发送给某人以保存并进行一些分析。

现在我有了甲乙双方签署的文件,我怎么能让智能合约调用一个函数把这个文件发送给第三方来分析???我应该怎么写函数???

如何将此操作转化为可靠的“一旦 A 和 B 都签署了文件,智能合约会将其发送到分析单元以开始分析过程”。

谢谢

【问题讨论】:

  • 认为这可以通过使用以太坊闹钟来完成??我想如果新文档已添加到列表中,是否可以设置要执行的事务。我可以在第二方签署文件后立即发送,但你认为这个电话的费用应该由最后一个签署文件的人支付吗???
  • 我只会在第二方签署文档时引发一个事件。然后,该事件将成为第 3 方检索文档进行分析的触发器。这样,2 个签名者支付他们的交易费用(大致相同的金额),第 3 方支付使用智能合约完成活动的费用。
  • 感谢亚当的评论。但是我不明白,我怎么能让第3方知道他应该触发或调用检索文档的方法,他应该每隔一段时间检查一次事件状态吗?我很困惑函数体是什么?什么如果将文档发送到第三部分是时间敏感的,我的意思是文档应该在第二方签名后立即发送给第三方,而不应该等待检查事件状态并检索文档?!! -谢谢
  • 合约在第二方签署时引发事件。您有一个侦听事件然后触发文档检索的客户端。它就像在以太坊世界中一样“即时”。在此处阅读有关活动的更多信息:solidity.readthedocs.io/en/develop/contracts.html#events

标签: ethereum solidity smartcontracts


【解决方案1】:

伪代码(如果我们谈论的是以太坊,你当然需要根据 Solidity 规范编写程序):

    address thirdParty;
    bool signedByA;
    bool signedByB;
    byte[] docData;

  function signDoc() public {
    if(sender == "Aaddress") {
       signedByA = true;
    }
    if(sender == "Baddress") {
       signedByB = true;
    }

    if(signedByA && signedByB) {
      thirdParty.sendTransaction(docData);
    }       
}

细节取决于您的需要。谁以及如何签名,A 和 B 是否预定义或可以动态定义等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2021-10-29
    • 2020-05-26
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多