天道酬勤,学无止境

corda

使用网络地图服务更改 Corda 网络参数(Corda network parameter change with Network Map Service)

问题 我已经在我的虚拟机上运行了corda 的网络地图服务。 当我更改白名单文件时,网络地图服务会重建网络地图以及网络参数。 如果网络参数文件已更改并且不再与网络地图服务所宣传的内容匹配,则该节点将自动关闭。 在我的情况下,所有节点都被关闭,这是预期的。 启动时收到消息“节点正在使用带有哈希的参数:X,但网络地图正在广告:Y”。 删除网络参数后,它可以正常启动。 根据此处提到的文档,要手动接受更新的网络参数并将参数批准发送回区域运营商,必须使用来自更新的 parametersHash 调用 RPC 方法 fun acceptNewNetworkParameters(parametersHash: SecureHash)。 我从corda shell调用了上面提到的函数,如下所示: run acceptNewNetworkParameters parametersHash: "ba19fc1b9e9c1c7cbea712efda5f78b53ae4e5d123c89d02c9da44ec50e9c17d" 我收到错误“RPC 失败:java.lang.IllegalArgumentException:参数类型不匹配”。 我需要弄清楚corda节点如何从网络地图服务接受更新的网络参数,以及如何防止corda节点在获得新参数后关闭。 注意:使用具有以下配置更改的网络地图服务: 缓存超时

2021-10-24 03:19:59    分类:技术分享    corda

Corda:我们可以开发由 IIS 网络服务器运行的 Dapps 来与 Corda 平台通信吗?(Corda: Can we develop Dapps that will be run by IIS webserver to talk to Corda platform?)

问题 我们使用了“Yo!CorDapp”示例(https://github.com/corda/spring-observable-stream)来构建 POC。 在这个 POC 中,我们可以用 .NET 代替 angular 作为前端,并使用 IIS webserver 代替 springboot webserver 来与 Corda 平台通信吗? 谢谢 回答1 您可以使用任何您想要的前端技术。 从 Corda 3 开始,您的后端必须基于 JVM,原因有两个: 您需要将各种流、状态和其他类定义加载到类路径上,以将其作为参数传递给流、从 Vault 中检索对象等。 您需要使用CordaRPCClient库来创建到节点的 RPC 连接 如果您真的需要用另一种语言编写后端,有一些解决方法: 创建一个位于主网络服务器和节点之间的瘦 Java 网络服务器。 Java Web 服务器将来自主 Web 服务器的 HTTP 请求转换为对节点的 RPC 调用,并将来自节点的 RPC 响应转换为对主 Web 服务器的 HTTP 响应这是 Braid 等图书馆采用的方法使用 GraalVM 等库将非 JVM 语言编译为 JVM 字节码此处提供了使用 GraalVM 在 Javascript 中编写 JVM 网络服务器的示例:https://github.com/nitesh7sid/cordapp

2021-10-24 01:39:03    分类:技术分享    corda

Corda - java.lang.IllegalArgumentException being thrown from a validating notary

I am getting the following exception from a validating notary: java.lang.IllegalArgumentException: Not a valid Java name: java.util.Set<example.mypackage.MyClass> MyClass is located in the states/contracts jar Stack Trace 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

2021-10-24 01:01:01    分类:问答    java   exception   corda

如何在通过 IntelliJ 运行 cordapp 时配置公证节点(How to configure notary node while running cordapp via IntelliJ)

问题 我想配置公证节点,例如作为非验证。 如何在cordapp示例NodeDriver.kt文件中配置它? 我可以在构建 gradle 文件中看到该选项并通过终端运行,但我特别希望通过 intellij 运行。 回答1 您需要将自己的公证规范列表传递给驱动程序: fun main(args: Array<String>) { val notaryName = CordaX500Name("MyNotary", "London", "GB") val notarySpec = NotarySpec(name = notaryName, validating = false) driver(DriverParameters(notarySpecs = listOf(notarySpec))) { // Driver logic. } }

2021-10-24 00:42:18    分类:技术分享    corda

向现有的corda网络添加新节点(Adding new node to existing corda network)

问题 我正在尝试在 corda 网络中使用现有节点添加新节点。 我是作为文档做的。 却达不到。 如文档中所述,这足以创建一个带有 node.conf 的文件夹吗? 如果那么它在运行引导程序时不更新文件夹中的数据和信息。 但是我可以通过在 node.conf 文件中添加corda 和corda webserver 来实现这一点。 将新节点添加到网络时,来自现有节点的正在进行的交易会发生什么? 我想向新节点文件夹中的cordapps文件夹添加任何其他corda jar吗? 我检查了其他节点文件夹并在cordapps文件夹下找到了corda jars。 在新节点文件夹中没有这些 jar 可以吗? 回答1 请注意 - 新节点应与现有节点具有相同的文件夹结构。 每个节点的 Node.conf、证书、附加节点信息文件可能不同。 如果您在开发模式下运行,那么建议您使用“gradlew.bat deployNodes”命令重新创建网络。 这将重新部署所有节点,包括新节点。 如果您在生产模式下运行,那么您必须使用网络地图 - “https://docs.corda.net/network-map.html”。 1. Is that enough to create a folder with node.conf as mentioned in documents. If then its not

2021-10-23 23:47:53    分类:技术分享    corda

在 Corda 中,一笔交易的输出可以被同一流中的新交易使用吗?(In Corda, can the output of one transaction be used by new transaction in the same flow?)

问题 根据以下场景有一个流程。 交易 1:输入 StateA - ContractA 导致输出 StateB - ContractA 交易 2:输入 StateB - ContractA 且无输出这在 Corda 中可能吗? 请分享一个带有响应的示例。 谢谢。 回答1 是的,这是可能的。 例如: @InitiatingFlow @StartableByRPC class TwoTransactionFlow(val inputStateAndRefA: StateAndRef<StateA>) : FlowLogic<Unit>() { @Suspendable override fun call() { val notary = serviceHub.networkMapCache.notaryIdentities[0] // Creating, signing and finalising the first transaction. val txBuilderOne = TransactionBuilder(notary) .addInputState(inputStateAndRefA) .addOutputState(StateB(), ContractA.ID) .addCommand(ContractA.Commands.Transfer(), ourIdentity

2021-10-23 22:59:26    分类:技术分享    kotlin   corda

Is Corda support state deletion scenario?

Is corda support state deletion scenario when don't need to use some state (in both dev/prod) Because I face exception when start node like "class not found exception", It's happen when I delete state class in project and use same old persistence file. I think it because of state class already insert in VAULT_STATES and it can't find that class when start node. I expect to have some method that provide state deletion. More info In Dev side I delete persistence file and of course it's work, but I just worry about Production side.

2021-10-23 20:37:32    分类:问答    corda

Corda RPC JacksonSupport.createDefaultMapper 在 Spring 客户端中使用 ObjectMapper(Corda RPC JacksonSupport.createDefaultMapper to use ObjectMapper in Spring client)

问题 如何在 Spring Boot 中注册新引入的 Corda RPC ObjectMapper? 即使在@Configuration类中有以下代码后,Jackson 也无法将Party对象序列化为 JSON 字符串。 @Bean public JsonComponentModule jsonComponentModule() { return new JsonComponentModule(); } @Bean @Primary public ObjectMapper cordaRpcObjectMapper(NodeRPCConnection rpc) { ObjectMapper objectMapper = JacksonSupport.createDefaultMapper(rpc.getProxy(), new JsonFactory(), true); objectMapper.registerModule(jsonComponentModule()); return objectMapper; } 回答1 经过一些调整后,我可以使用以下代码成功地向 Jackson 注册Corda RPC ObjectMapper 。 //Register any other custom (de)Serializer classes. @Bean public Module

2021-10-23 15:56:24    分类:技术分享    spring   corda   spring-rest

为什么“DockerForm”插件使用 OpenJDK 生成 Docker 镜像?(Why "DockerForm" plugin generates Docker images using OpenJDK?)

问题 根据 Corda 文档,推荐使用 Oracle JDK。 Corda 不正式支持 Open JDK。 参考:哪个 JDK 最适合 R3 Corda 框架 但是如果我们使用 DockerForm 为 Corda 节点创建 Docker 镜像,它内部使用的是 OpenJDK。 为什么会这样? 我的意思是,这只是一个一致性失误还是一个深思熟虑的决定? 回答1 Oracle JDK 附带的许可证不允许重新分发。 所以他们不能提供带有 Oracle JDK/JRE 的 Docker 镜像。 但是,您可以自己构建一个并在其上安装 Corda。

2021-10-23 14:03:44    分类:技术分享    corda

在公证节点查询数据,在普通节点查询事务(Query Data In Notary Node and Query Transaction in Normal Node)

问题 我有一个关于查询数据的问题: 有什么方法可以查询公证节点存储的所有数据,以及如何在Corda中查询其他节点中的交易? 回答1 在 Corda 中,每个节点都由自己的数据库支持。 这个数据库只存储节点知道的交易。 出于隐私原因,节点无法查询其他节点的数据库。 相反,您必须编写一个流程,让另一个节点为您查询其数据库并将结果发回。 但是,另一个节点可以控制共享哪些数据(如果有)。

2021-10-23 13:17:35    分类:技术分享    corda