如何为Corda的StartedMockNode添加额外LegalIdentity或Party身份?
为StartedMockNode添加额外LegalIdentity的实现方法
场景1:节点初始化时预配置多个身份
适合提前知晓节点需要多身份的测试场景,无需后续动态修改:
- 借助
MockNodeParameters配置类传入额外身份列表,参考代码:
// 生成测试用的额外身份,MockNetwork自带工具方法可直接调用 PartyAndCertificate extraIdentity = network.getTestIdentity(new X500Name("CN=SecondIdentity,O=TestOrg,L=Beijing,C=CN")); // 构建节点参数 MockNodeParameters nodeParams = new MockNodeParameters() .withAdditionalIdentities(Collections.singletonList(extraIdentity)); // 初始化节点 StartedMockNode nodeC = network.createPartyNode(nodeParams);
初始化完成后节点默认会携带原有自动生成的身份+你传入的所有额外身份
场景2:已初始化节点动态添加身份
针对已经创建完成的StartedMockNode,按照以下步骤操作即可添加新身份:
- 步骤1:生成合法的带证书身份凭证
// 生成新的密钥对 KeyPair newKey = network.getKeyGenerationService().generateKeyPair(); // 生成符合Corda身份规范的PartyAndCertificate实例 PartyAndCertificate newLegalId = network.getNetworkParameters() .getIdentityService() .generatePartyAndCertificate(newKey, new X500Name("CN=DynamicIdentity,O=TestOrg,L=Shanghai,C=CN"));
- 步骤2:将新身份注册到节点本地身份服务
nodeC.getServices().getIdentityService().verifyAndRegisterIdentity(newLegalId);
- 步骤3:同步身份到模拟网络(必填)
// 更新网络映射缓存,确保其他测试节点能识别该节点的新身份 network.getNetworkMapCache().addNode(nodeC.getInfo());
验证方式:调用
nodeC.getInfo().getLegalIdentities()即可查看该节点当前绑定的所有LegalIdentity,确认添加结果。
内容的提问来源于stack exchange,提问作者Leonard Saers
相关产品推荐
相关产品推荐

