进程外验证

一个 Corda 节点会通过 ServiceHub.transactionVerifierService 来进行 transaction 的验证。这个默认是一个 InMemoryTransactionVerifierService,并且在进程中(in-process)对 transaction 进行验证。

Corda 可能会被配置为使用进程外验证。任意数量的验证者可能会通过节点暴露的 artemis SSL 端口开始跟节点连接。消息层会照看 load balancing。

注意:我们计划要针对于进程外验证引入 kernel level sandboxing 来作为当 inner sandbox escapes 的时候一道额外的防线。

为了配置一个节点使用进程外验证,需要在 node.conf 中指定 verifierType

myLegalName : "O=Bank A,L=London,C=GB"
p2pAddress : "my-corda-node:10002"
webAddress : "localhost:10003"
verifierType: "OutOfProcess"

你可以使用 ./gradlew verifier:standaloneJar 来构建一个 verifier jar 文件。

然后通过 java -jar verifier/build/libs/corda-verifier.jar <PATH_TO_VERIFIER_BASE_DIR> 运行它。

PATH_TO_VERIFIER_BASE_DIR 应该包含一个 certificates 文件夹(跟节点路径下的 certificates 文件夹一样),和一个包含以下内容的 verifier.conf 文件:

nodeHostAndPort: "my-corda-node:10002"
keyStorePassword : "cordacadevpass"
trustStorePassword : "trustpass"