我编写了以程,以促进两方之间的交易 - 发行人和
订阅者
。我在收集交易对手的签名
阶段一直收到此错误:
java.lang.IllegalArgumentException:CollectSignaturesFlow的发起人必须对事务进行签名。
堆栈跟踪:
java.lang.IllegalArgumentException: The Initiator of CollectSignaturesFlow must have signed the transaction.
at net.corda.core.flows.CollectSignaturesFlow.call(CollectSignaturesFlow.kt:89) ~[corda-core-3.3-corda.jar:?]
at net.corda.core.flows.CollectSignaturesFlow.call(CollectSignaturesFlow.kt:64) ~[corda-core-3.3-corda.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:290) ~[corda-core-3.3-corda.jar:?]
at com.sample.flow.sampleFlow$Initiator.call(sampleFlow.kt:106) ~[main/:?]
at com.sample.flow.sampleFlow$Initiator.call(sampleFlow.kt:30) ~[main/:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.3-corda.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.3-corda.jar:?]
at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.9-jdk8.jar:0.7.9]
at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.9-jdk8.jar:0.7.9]
at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9]
at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_181]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_181]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_181]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.3-corda.jar:?]
我的暗号:flow.kt
progressTracker.currentStep = GATHERING_SIGS
val participantsParties = sampleState.participants.map { serviceHub.identityService.wellKnownPartyFromAnonymous(it)!! }
val flowSessions = (participantsParties - serviceHub.myInfo.legalIdentities.get(0)).map { initiateFlow(it) }.toSet()
val fullySignedTx = subFlow(CollectSignaturesFlow(partSignedTx, flowSessions, listOf(ourSigningKey), GATHERING_SIGS.childProgressTracker()))
我尝试了在线提供的解决方案,即:
我不知道我错在哪里。有人能帮我一下吗?提前感谢!
你的解决方案是错误的;我将使用< code>cordapp-example流程演示两方(或多方)如何签署交易:
发起方
和响应方
。 颁发者
是启动发起方
的一方,则您的订阅者
是运行响应方的参与方
。 颁发者
首先创建标识输入、输出、命令和所需签名者的事务。 发行人
签署交易,注意结果如何称为partSignedTx
;这是因为订阅者
尚未签名。 颁发者
创建一个与订阅者的会话,以用作通信通道,通过该通道,他们收集订阅者的
签名(您不会像创建自己的会话,而只是与其他人创建会话)。 颁发者
使用该会话从订户
请求签名。 响应程序
流内的订阅者
对事务进行签名。 器
流中的颁发者
接收签名。收集签名流
具有发送
(发送要签名的事务)和接收
(接收签名)。请注意结果如何称为 fullSignedTx
,因为现在颁发者和
订阅者都
对事务进行了签名。在定点数学中,我使用了大量16位信号,并用32位中间结果进行乘法运算。例如: 假设a是一个q14数,那么c与b的比例相同。 这很好,适用于有符号和无符号算术。 问题是:如果我混合类型会发生什么?例如,如果我知道乘数“a”总是在 0.0 到 1.0 之间,那么很容易使其成为无符号的 int q15 以获得额外的精度(并将移位计数更改为 15)。但是,我从来不明白如果您尝试在 C 中将有符号和无符号数
web3.eth.sendSignedTransaction()方法用来发送已经签名的交易,例如,可以使用web3.eth.accounts.signTransaction() 方法进行签名。 调用: web3.eth.sendSignedTransaction(signedTransactionData [, callback]) 参数: signedTransactionData:Strin
在使用PHP的本机password_hash()函数时,我必须(或应该)生成自己的salt,尽管(据我所知),它已经可以创建salt,如本例所示(由http://www.php.net): 目前,我一直在使用sha512进行散列,并生成38,500个字符盐。(我不确定字符计数是否真的重要,所以我还是试了试...它似乎奏效了,比如允许我成功注册和登录用户,但我不知道它的全部安全缺陷)类似这样的东西:
学习如何使用其他语言开发自己的模块,并且通过各种插件来扩展Ansible.探索Ansible的Python API,并且编写Python插件,将其结合到你自己系统的各种解决方案中,这是非常有意义的. Python API 开发动态的Inventory数据源 Developing Modules Developing Plugins 帮助测试PR 开发者同时可能也对完全发现感兴趣,可以参考 Ansi
开发者须知 简介 本部分主要介绍百度网盘开放平台的接入流程,主要包括申请appid和获取用户授权。获取授权后,即可根据开发需求,依照接口的使用规则进行相应的开发。 接入流程 1.成为开发者 step1:使用百度账号登录开放平台官网 请在官网首页右上角找到登录入口,使用百度账号进行登录。如果您还没有百度账号,请按照百度账号统一注册流程进行注册。 step2: 申请账号认证并接入 登录后,点击官网首页
签署以太坊交易 要使脱机签名交易得到签署,需要设定一个RawTransaction类型。RawTransaction类似于前面提到的Transaction类型,但是它不需要通过具体的账号地址来请求,因为可以从签名中推断出来。 为了创建和签署原生交易,交易的顺序如下: 1.确定交易发起者帐户的下一个可用随机数nonce 2.创建RawTransaction对象 3.使用递归长度前缀编码(RLP即Re