【问题标题】:Corda: Creating contracts dynamicallyCorda:动态创建合约
【发布时间】:2017-10-05 16:47:10
【问题描述】:

在我们的用例中,我们需要在运行时定义某些规则,节点将根据这些规则与网络中的其他节点进行交易。例如,我们想在前端定义一个速率,并检查事务是否仅针对该特定节点以该速率发生。换句话说,我们能否在运行时定义条款和条件,这是否仍被称为智能合约,或者智能合约是否需要始终进行硬编码。有没有其他的方法来看待这个?

【问题讨论】:

    标签: corda


    【解决方案1】:

    合约本身是硬编码的。这是因为每个节点都需要同意给定的交易根据合约规则永远有效。如果它们因节点而异,一些节点会认为交易有效,而另一些节点会认为交易无效,从而导致账本不一致。

    相反,您必须在流程中强制执行此逻辑。假设您有一个提议交易的TradeOffer 流。每个节点都可以安装自己的由TradeOffer 流发起的响应流。每个节点的响应流可以施加不同的条件。例如,一个节点可能会签署任何交易,而另一个节点会检查提议的速率是否在指定范围内。

    【讨论】:

      【解决方案2】:

      为了扩展 Joel 的评论,合约确实是硬编码的,但只要代码每次都以相同的方式运行(即它是确定性的),将元逻辑放入其中并没有错。

      这是什么意思?好吧,你可以在你的状态中放置一个 String 类型,它包含一个可以被评估的表达式(如果你参考https://relayto.com/r3/FIjS0Jfy/VB8epyay73,你可以看到包含在智能合约中使用的一个非常基本的数学表达式)。使这个 String 尽可能复杂并没有错,但是请注意,如果您删除 Corda 提供的大量验证保护,如果您开始简化编码验证逻辑和把它全部放到一个字符串中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-30
        • 2020-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多