Corda:动态创建合同

Corda:动态创建合同,corda,Corda,在我们的用例中,我们需要在运行时定义某些规则,节点将根据这些规则与网络中的其他节点进行交易。例如,我们希望在前端定义一个速率,并检查事务是否仅以该特定节点的速率发生。换句话说,我们可以在运行时定义条款和条件吗?这仍然被称为智能合约还是智能合约需要始终硬编码。有没有其他方法来看待这个问题?合同本身是硬编码的。这是因为每个节点都需要同意,根据合同规则,给定的事务永远有效。如果它们根据节点变化,一些节点会考虑事务有效,而另一个节点会考虑事务无效,导致它们的分类帐不一致。 相反,您必须在流程中强制使用此

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

合同本身是硬编码的。这是因为每个节点都需要同意,根据合同规则,给定的事务永远有效。如果它们根据节点变化,一些节点会考虑事务有效,而另一个节点会考虑事务无效,导致它们的分类帐不一致。
相反,您必须在流程中强制使用此逻辑。假设您有一个提议交易的
TradeOffer
流。每个节点都可以安装自己的响应流,该响应流由
TradeOffer
flow启动。每个节点的响应流可以施加不同的条件。例如,一个节点可能会签署任何事务,而另一个节点则会检查提议的速率是否在指定的范围内。

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

我这是什么意思?好的,您可以在您的状态中放置一个字符串类型,其中包含一个表达式,然后可以对该表达式求值(如果您参考,您可以看到智能合约中包含了一个非常基本的数学表达式)。让这个字符串尽可能复杂并没有什么错,但要知道,如果您开始简化编码验证逻辑并将其全部放在字符串中,那么如果您删除了Corda提供的大量验证保护,那么您的应用程序的任何潜在用户都会开始感到惊讶