代码之家  ›  专栏  ›  技术社区  ›  Adrian

节点是否可以在没有状态cordapp的情况下对事务进行签名?

  •  0
  • Adrian  · 技术社区  · 6 年前

    state/contract cordapp公司?节点仍然具有 flow-cordapps 随着流动。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Joel    6 年前

    这是不可能的,但不是因为原因 manish 如上所述。

    从Corda 3开始,将交易发送给监管机构进行签署将导致 java.io.NotSerializableException

    这种行为是有意义的——在看不到输入和输出状态的事务上签名的目的是什么?如果您确实希望提供签名,则可以通过发送 FilteredTransaction 如果所有的状态都被过滤掉了,以及监管机构没有的任何其他组件的类定义。然后使用 serviceHub.createSignatures(filteredTransaction) .

    注:这里是一个例子,我收到的stacktrace时,我试图发送一个交易对手 SignedTransaction 对于没有类定义的组件:

    java.io.NotSerializableException: Unexpected throwable: net.corda.core.transactions.WireTransaction -> net.corda.core.transactions.WireTransaction -> null java.lang.reflect.InvocationTargetException: net.corda.core.transactions.WireTransaction -> net.corda.core.transactions.WireTransaction -> null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.construct(ObjectSerializer.kt:138)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.readObjectBuildViaConstructor(ObjectSerializer.kt:97)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.readObject(ObjectSerializer.kt:82)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObject$node_api(DeserializationInput.kt:135)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api(DeserializationInput.kt:109)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api$default(DeserializationInput.kt:108)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput$deserialize$1.invoke(DeserializationInput.kt:98)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.des(DeserializationInput.kt:80)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.deserialize(DeserializationInput.kt:96)
        at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:123)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:111)
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:111)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:86)
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111)
        at net.corda.core.transactions.SignedTransaction.getCoreTransaction(SignedTransaction.kt:273)
        at net.corda.core.transactions.SignedTransaction.getId(SignedTransaction.kt:55)
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:264)
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:279)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.createSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.createSignature(AbstractNode.kt:820)
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:302)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820)
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:311)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820)
        at com.template.Responder.call(App.kt:58)
        at com.template.Responder.call(App.kt:54)
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96)
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44)
        at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092)
        at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788)
        at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100)
        at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62)
    Caused by: java.lang.Exception: Malformed transaction, OUTPUTS_GROUP at index 0 cannot be deserialised
        at net.corda.core.transactions.TraversableTransaction.deserialiseComponentGroup(MerkleTransaction.kt:70)
        at net.corda.core.transactions.TraversableTransaction.<init>(MerkleTransaction.kt:25)
        at net.corda.core.transactions.WireTransaction.<init>(WireTransaction.kt:43)
        ... 47 more
    Caused by: java.io.NotSerializableException: Unexpected throwable: Interface net.corda.core.contracts.ContractState requires a field named participants but that isn't found in the schema or any superclass schemas net.corda.nodeapi.internal.serialization.carpenter.InterfaceMismatchException: Interface net.corda.core.contracts.ContractState requires a field named participants but that isn't found in the schema or any superclass schemas
        at net.corda.nodeapi.internal.serialization.carpenter.ClassCarpenter.validateSchema(ClassCarpenter.kt:434)
        at net.corda.nodeapi.internal.serialization.carpenter.ClassCarpenter.build(ClassCarpenter.kt:106)
        at net.corda.nodeapi.internal.serialization.carpenter.MetaCarpenterBase.step(MetaCarpenter.kt:69)
        at net.corda.nodeapi.internal.serialization.carpenter.MetaCarpenter.build(MetaCarpenter.kt:98)
        at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory.processSchema(SerializerFactory.kt:235)
        at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory.processSchema$default(SerializerFactory.kt:216)
        at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory$get$1.invoke(SerializerFactory.kt:185)
        at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory$get$1.invoke(SerializerFactory.kt:40)
        at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory.get(SerializerFactory.kt:184)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObject$node_api(DeserializationInput.kt:131)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api(DeserializationInput.kt:109)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api$default(DeserializationInput.kt:108)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput$deserialize$1.invoke(DeserializationInput.kt:98)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.des(DeserializationInput.kt:80)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.deserialize(DeserializationInput.kt:96)
        at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:123)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:111)
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:111)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:86)
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111)
        at net.corda.core.transactions.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:357)
        at net.corda.core.transactions.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:18)
        at net.corda.core.transactions.TraversableTransaction.deserialiseComponentGroup(MerkleTransaction.kt:66)
        at net.corda.core.transactions.TraversableTransaction.<init>(MerkleTransaction.kt:25)
        at net.corda.core.transactions.WireTransaction.<init>(WireTransaction.kt:43)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.construct(ObjectSerializer.kt:138)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.readObjectBuildViaConstructor(ObjectSerializer.kt:97)
        at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.readObject(ObjectSerializer.kt:82)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObject$node_api(DeserializationInput.kt:135)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api(DeserializationInput.kt:109)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.readObjectOrNull$node_api$default(DeserializationInput.kt:108)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput$deserialize$1.invoke(DeserializationInput.kt:98)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.des(DeserializationInput.kt:80)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.deserialize(DeserializationInput.kt:96)
        at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:123)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:111)
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:111)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:86)
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111)
        at net.corda.core.transactions.SignedTransaction.getCoreTransaction(SignedTransaction.kt:273)
        at net.corda.core.transactions.SignedTransaction.getId(SignedTransaction.kt:55)
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:264)
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:279)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.createSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.createSignature(AbstractNode.kt:820)
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:302)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820)
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:311)
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt)
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820)
        at com.template.Responder.call(App.kt:58)
        at com.template.Responder.call(App.kt:54)
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96)
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44)
        at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092)
        at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788)
        at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100)
        at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62)
    
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.des(DeserializationInput.kt:84)
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.deserialize(DeserializationInput.kt:96)
        at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:123)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:111)
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:111)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:86)
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80)
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111)
        at net.corda.core.transactions.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:357)
        at net.corda.core.transactions.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:18)
        at net.corda.core.transactions.TraversableTransaction.deserialiseComponentGroup(MerkleTransaction.kt:66)
        ... 49 more
    
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.des(DeserializationInput.kt:84) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.amqp.DeserializationInput.deserialize(DeserializationInput.kt:96) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:123) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:111) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66) ~[corda-core-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:111) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:86) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80) ~[corda-core-3.2-corda.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111) ~[corda-node-api-3.2-corda.jar:?]
        at net.corda.core.transactions.SignedTransaction.getCoreTransaction(SignedTransaction.kt:273) ~[corda-core-3.2-corda.jar:?]
        at net.corda.core.transactions.SignedTransaction.getId(SignedTransaction.kt:55) ~[corda-core-3.2-corda.jar:?]
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:264) ~[corda-core-3.2-corda.jar:?]
        at net.corda.core.node.ServiceHub$DefaultImpls.createSignature(ServiceHub.kt:279) ~[corda-core-3.2-corda.jar:?]
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.createSignature(ServiceHubInternal.kt) ~[corda-node-3.2-corda.jar:?]
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.createSignature(AbstractNode.kt:820) ~[corda-node-3.2-corda.jar:?]
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:302) ~[corda-core-3.2-corda.jar:?]
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt) ~[corda-node-3.2-corda.jar:?]
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820) ~[corda-node-3.2-corda.jar:?]
        at net.corda.core.node.ServiceHub$DefaultImpls.addSignature(ServiceHub.kt:311) ~[corda-core-3.2-corda.jar:?]
        at net.corda.node.services.api.ServiceHubInternal$DefaultImpls.addSignature(ServiceHubInternal.kt) ~[corda-node-3.2-corda.jar:?]
        at net.corda.node.internal.AbstractNode$ServiceHubInternalImpl.addSignature(AbstractNode.kt:820) ~[corda-node-3.2-corda.jar:?]
        at com.template.Responder.call(App.kt:58) ~[cordapp-0.1.jar:?]
        at com.template.Responder.call(App.kt:54) ~[cordapp-0.1.jar:?]
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.2-corda.jar:?]
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.2-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_171]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_171]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_171]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_171]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
        at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.2-corda.jar:?]
    
        2
  •  0
  •   manish    6 年前

    不,不可能。