Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fabric JAVA SDK测试样例

NotificationsYou must be signed in to change notification settings

liuwenru/FabricJavaSDKExamples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Fabric JAVA SDK测试样例

一、调用链码说明(不使用Fabric-CA模块)

1.1 测试代码结构说明

├── pom.xml├── src│   ├── main│   │   ├── java│   │   │   └── ijarvis│   │   │       └── intelliq│   │   │           ├── FabricApp.java# 初始化Fabric Client对象以及连接组织信息│   │   │           ├── LedgerRecord.java# 链码中数据结构Bean│   │   │           └── SampleUser.java# 抽象超级账本中用户信息(实际就是MSP下user文件夹中生成的用户身份文件)│   │   └── resources│   │       └── log4j.xml  │   └──test│       ├── java│       │   └── ijarvis│       │       └── intelliq│       │           └── AppTest.java# Junit测试代码文件│       └── resources│           ├── crypto-config# 测试环境下所有证书以及MSP文件集合│           │   ├── ordererOrganizations│           │   │   └── example.com│           │   └── peerOrganizations│           │       ├── org1.example.com│           │       └── org2.example.com│           └── log4j.xml

由于调用链码调用初始化需要初始化fhclient等等一系列的对象,所以建议使用Junit运行代码。

1.2、 核心代码说明

使用SDk调用链码主要的步骤是:

  • 1、初始化HFClient
  • 2、实例化已经实现接口User的类加载已有的证书文件以及连接用户的私钥文件
  • 3、调用client.setUserContext(peer0org1);方法更新client的配置文件
  • 4、通过client获取通道对象(channel),客户端设置发起交易需要使用的Orderer以及Peer对象
  • 5、通过channel对象设置调用链码的名称参数等等信息发起调用链码
packageijarvis.intelliq.Fabric;// 省略相关的包导入publicclassSampleUserimplementsUser {privatefinalStringcertFolder;privatefinalStringuserName;publicSampleUser(StringcertFolder,StringuserName) {this.certFolder =certFolder;this.userName =userName;    }//省略相关Set和Get方法/**    *    * 重要实现方法,不使用CA需要自己实现如何加载私钥以及证书信息    */@OverridepublicEnrollmentgetEnrollment() {returnnewEnrollment() {@OverridepublicPrivateKeygetKey() {try {returnloadPrivateKey(Paths.get(certFolder,"/keystore/ea2db84973c9c54436c47d7e10b9b63420f654ecd7c541fab14646e976294393_sk"));                }catch (Exceptione) {returnnull;                }            }@OverridepublicStringgetCert() {try {returnnewString(Files.readAllBytes(Paths.get(certFolder,"/signcerts/Admin@org1.example.com-cert.pem")));                }catch (Exceptione) {return"";                }            }        };    }//测试代码所以固定写死相关的MSPID@OverridepublicStringgetMspId() {return"Org1MSP";    }/***     * 实现加载证书服务     */publicstaticPrivateKeyloadPrivateKey(PathfileName)throwsIOException,GeneralSecurityException {PrivateKeykey =null;InputStreamis =null;try {is =newFileInputStream(fileName.toString());BufferedReaderbr =newBufferedReader(newInputStreamReader(is));StringBuilderbuilder =newStringBuilder();booleaninKey =false;for (Stringline =br.readLine();line !=null;line =br.readLine()) {if (!inKey) {if (line.startsWith("-----BEGIN ") &&line.endsWith(" PRIVATE KEY-----")) {inKey =true;                    }continue;                }else {if (line.startsWith("-----END ") &&line.endsWith(" PRIVATE KEY-----")) {inKey =false;break;                    }builder.append(line);                }            }//byte[]encoded =DatatypeConverter.parseBase64Binary(builder.toString());PKCS8EncodedKeySpeckeySpec =newPKCS8EncodedKeySpec(encoded);KeyFactorykf =KeyFactory.getInstance("ECDSA");key =kf.generatePrivate(keySpec);        }finally {is.close();        }returnkey;    }}

1.3、其他说明

如果觉得所给测试用例代码不够明确,可以参考官方网站此处的代码示例本代码只是将官方代码进行简化方便做实验以及测试。

About

Fabric JAVA SDK测试样例

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp