如何在Corda中编写可扩展为其他合同的基本合同

问题描述 投票:0回答:1

我需要使用可重用/可扩展的合约(接口)来构建cordapp”>

我已决定构建一个可重复使用的Cordapp平台,该平台将在需要时以最少的更新(每个合作伙伴)满足多个合作伙伴的需求。

我计划通过为州和合同创建基类来实现这一目标,这些基类应包含每种付款工具的所有可能的共同属性,并将由其他常规州和合同进行扩展。至于流程,我可以准备好所有基本的通用流程。然后可以根据需要编写定制的流程,并且(希望如此)这只是在最前面进行的最少添加。

为了实现上述计划,我最近通过测试Cordapp对其进行了尝试。

对于国家,我观察到我可能有一个具有所有可能的通用参数的(接口)状态(对于一个特定的付款工具),然后可以由其他常规国家按计划进行扩展。

对于合同,我有些挑战。

[当接口合同IXContract被扩展(通过开放类)XContract时,我收到了事务错误“合同验证失败:必需的com.template.contracts.IXContract.Commands命令,合同:com.template.contracts.XContract” 。这似乎是由单个XState使用的合同冲突引起的。

我还修改了代码,将IXContract作为开放类,将XContract作为抽象类。这返回了成功的事务,但是未捕获IXContract中的无效规则,这不是项目的预期行为。

为了避免合同冲突,我尝试了简单类的通常编程风格。对于基类IXContract,这次不扩展Contract接口(这使其不是合同类),而是包含具有合同规则的BaseContract方法。然后,我将该类自动连接到常规XContract类中(仍然扩展了合约接口),并调用BaseContract方法在其中应用合约规则。这已成功测试,并按要求捕获了合同规则。为了获得更多保证,调整了流程以符合合同规则,然后测试交易成功了。

但是,我注意到这显然会导致我们将来拥有大量的BaseContract类文件,但是这些已经到目前为止的测试。

这是实施可靠的项目的好方法,没有可能的前期风险吗?

如果您已经可以在我们的测试中预见到缺点,请提供最好的实现方法的建议。

我需要构建具有可重用/可扩展合同(接口)的cordapp,我决定构建一个可重用的Cordapp平台,该平台将以最少的更新(每个...]满足多个合作需求(按...

kotlin blockchain corda
1个回答
0
投票
我建议您不要创建子合同接口,因为您可能会遇到意外的问题。我见过的几乎所有cordapps都不需要更具体的协定接口,该协定接口仍然可以应用于多种状态类型。我只是经历了更多合同类的痛苦,也许还有很多其他方法。
© www.soinside.com 2019 - 2024. All rights reserved.