Tag: 科尔达

集成测试@InitiatedBy侧过帐交易输出的最终结果

我有一个情况,我有@InitiatingFlow ,称为ProposeMemberFlow,和相应的@InitiatedBy ProposeMemberFlowResponder。 我希望在我的集成测试中包含一些东西,这些东西测试响应者在启动流启动了FinalityFlow子流之后有一个事务输出状态。 我天真地在响应流中调用了waitForLedgerCommit ,发布了对CollectSignaturesFlow的响应,但是我发现启动流程在响应流程完成之前完成 – 大概是后者正在等待保险库更新。 我是通过CordaService进行集成测试 – 是使用expectEvents等待VaultUpdate的“有线方式”,以便我知道何时可以安全地测试CordaService? 很像这里 ? 谢谢

在Windows上Corda gradle安装失败:“无法解析net.i2p.crypto:eddsa:0.2.0”

在Windows上设置https://github.com/roger3cev/corda-training-template时 ,我得到以下堆栈跟踪。 这似乎是一个以.crypto结尾的文件名问题 What went wrong: Could not resolve all files for configuration ‘:java-source:compileClasspath’. Could not resolve net.i2p.crypto:eddsa:0.2.0. Required by: project :java-source > net.corda:corda-core:1.0.0 Could not resolve net.i2p.crypto:eddsa:0.2.0. Could not get resource ‘https://jcenter.bintray.com/net/i2p/crypto/eddsa/0.2.0/eddsa-0.2.0.pom’. Failed to move file ‘C:\Users\A57C\AppData\Local\Temp\gradle_download2832834655657514563bin’ into filestore at ‘C:\Users\A57C\.gradle\caches\modules-2\files-2.1\net.i2p.crypto\eddsa\0.2.0\d2905a940ee7c59e1636e1c3541069ccbbcdf227\eddsa-0.2.0.pom’ Failed to create parent directory ‘C:\Users\A57C\.gradle\caches\modules-2\files-2.1\net.i2p.crypto’ when creating directory ‘C:\Users\A57C\.gradle\caches\modules-2\files-2.1\net.i2p.crypto\eddsa\0.2.0\d2905a940ee7c59e1636e1c3541069ccbbcdf227’ Could not resolve […]

在MockNetwork测试中,NetworkMapCache是​​空的

我正在编写一些轻量级的流测试嘲弄一切,我遇到了错误,在所有节点NetworkMapService只包含节点本身。 另一方面,身份服务包含参与测试的所有3个节点。 net = MockNetwork() issuer = net.createNode(legalName = CHARLIE.name) alice = net.createNode(legalName = ALICE.name) bob = net.createNode(legalName = BOB.name) issuer.registerInitiatedFlow(IssueClaimFlow.Issuer::class.java) alice.registerInitiatedFlow(VerifyClaimFlow.Prover::class.java) MockServices.makeTestDatabaseAndMockServices(createIdentityService = { InMemoryIdentityService(listOf(ALICE_IDENTITY, BOB_IDENTITY, CHARLIE_IDENTITY), emptySet(), DEV_TRUST_ROOT) } ) net.registerIdentities() net.runNetwork() 在这种情况下,流程顺利进行,直到第一次sendAndRecieve()调用。 在那里我得到: 12:28:12.832 [模拟网络]警告net.corda.flow。[8f685c46-9ab6-4d64-b3f2-6b7476813c3b] – 由意外的exception终止java.lang.IllegalArgumentException:不知道党C = ES,L =马德里O =爱丽丝公司 有趣的事情,测试仍然完成绿色(没有有用的工作完成你)。 但是,它可能是另一个问题的话题。 我可以通过像这样手动设置缓存来克服它: alice.services.networkMapCache.addNode(issuer.info) bob.services.networkMapCache.addNode(alice.info) 但是,这是正确的方式去? 我在样品或任何地方都看不到这样的东西。

M14 FinalityFlow:签名validation失败

这只发生在M14 – 我有一个签名的交易stx。 首先,我sendAndReceive(anotherParty,stx)给一些参与者,让他们有机会validation事务的完整性并validationSignaturesExcept(notaryPubKey)。 然后我运行subFlow(FinalityFlow(stx)),并且FinalityFlow失败并出现SignatureException。 但是如果我使用一个像subFlow(FinalityFlow(stx.copy()))的克隆,它可以很好地工作.BTW,sendAndReceive(anotherParty,stx.copy())和subFlow(FinalityFlow(stx))是不好的。 这是为什么? \肖恩

我如何通过RPC检查流的当前状态?

我在FlowLogic类中find了一个recordAuditEvent(…)方法,但是我不明白如何使用它,我不知道这个用例是否有用。

CorDapps如何处理传递依赖

目前在v2中,如果一个CorDapp引用一个与模块Y有传递依赖关系的模块X,使得Corda使用Y,那么如果Corda和X的各自版本Y不同,则可能会发生版本冲突。 一个例子是重用依赖于Jackson的现有内部库,包含业务和序列化逻辑。 在这种情况下,生成的CorDapp打包和Corda运行时似乎强制执行与Corda相关的Y版本。 如果Y的版本差异很大,我们可以得到像X中断这样的场景,因为Y不支持某些types和方法。 有没有一种通用的方式,可以使用gradle配置(或其他一些机制)来限制X的正确版本以供X使用,而不会影响Corda运行时?

调用CordaRPCOps.startFlow时发生IllegalFlowLogicException

在一个CorDapp中,我定义了以下流程: @InitiatingFlow @StartableByRPC class EchoFlow(private val msg: String): FlowLogic() { override fun call(): String { return msg } } 然后,我将CorDapp部署到一个节点,并尝试运行它,如下所示: val result = proxy.startFlow { EchoFlow(“msg”) }.returnValue.getOrThrow() 但是,我收到以下例外情况: Exception in thread “main” net.corda.core.flows.IllegalFlowLogicException: FlowLogicRef cannot be constructed for FlowLogic of type com.template.EchoFlow due to missing constructor for arguments: [] 我应该如何使用CordaRPCOps.startFlow调用流?

Corda generateSpend支付硬币添加备忘录

嗨有没有办法使用Cash.generateSpend和一起分配消息备忘录? 我的用例很简单,当我花钱的情况下,我想标记现金到一些通用的类别,例如手动转移或自动转移到特定的一方。 我一直在通过https://docs.corda.net/api/kotlin/corda/net.corda.finance.contracts.asset/-cash/index.html,但没有方法来添加标签到资产转移的目的。 主要目的是当我查询我的历史交易时,我可以看到我的资金流动。

如何在“金额”类中表示负数?

根据文档,在Amount类中不允许使用负数: https : //docs.corda.net/api/kotlin/corda/net.corda.core.contracts/-amount/ 当一个ContractState类的Amount字段可以变为负值时(例如可以多付的余额),表示负数的最好方法是什么?

通过Kotlin Lambda到Corda Flow的类星体NPE

将一个lambda传递给CollectSignaturesFlow Quasar时,会以无提示方式崩溃,并且无法继续处理。 问题是与others.map { initiateFlow(it as Party) }.toSet() 。 将其移到外部并将其设置为局部variables可以解决问题。 有什么可以或不可以用Quasar序列化的已知问题? @InitiatingFlow @StartableByRPC class IOUIssueFlow(val state: IOUState) : FlowLogic() { @Suspendable override fun call(): SignedTransaction { val txCommand = Command( IOUContract.Commands.Issue(), state.participants.map { it.owningKey }) val builder = TransactionBuilder(serviceHub.networkMapCache.notaryIdentities.first()) .withItems( StateAndContract( state, IOUContract.IOU_CONTRACT_ID), txCommand) builder.verify(serviceHub) val others = state.participants – ourIdentity return subFlow( FinalityFlow( subFlow( […]