为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序(4)
- UID
- 1066743
|
为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序(4)
区块链样本客户端现在详细分析客户端代码,以了解它的工作原理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| function runClient(){
logHelper.initialize(config.processname, config.env, config.log4js);
logger = logHelper.getLogger('blockchain_sample_client.js');
var user = 'vojha25';
var affiliation = 'Bank_Home_Loan_Admin';
var args = process.argv.slice(2);
if(args.length >=1){
var input = JSON.parse(args);
if(validate.isValidString(input['user'])){
user = input['user'];
}
if(validate.isValidString(input['affiliation'])){
affiliation = input['affiliation'];
}
}
setup()
.then(function(resp){
return bcSdk.recursiveRegister({username: user, affiliation: affiliation})
})
.then(function(resp){
return bcSdk.recursiveLogin({username: user, password: resp['body']['password'] })
})
.then(function(resp){
var id = Math.floor(Math.random() * (100000 - 1)) + 1;
var maStr = '{"propertyId":"prop1","landId":"land1","permitId":"permit1","buyerId":"vojha24","personalInfo":{"firstname":"Varun","lastname":"Ojha","dob":"dob","email":"varun@gmail.com","mobile":"99999999"},"financialInfo":{"monthlySalary":162000,"otherExpenditure":0,"monthlyRent":41500,"monthlyLoanPayment":40000},"status":"Submitted","requestedAmount":4000000,"fairMarketValue":5800000,"approvedAmount":4000000,"reviewedBy":"bond","lastModifiedDate":"21/09/2016 2:30pm"}';
var ma = JSON.parse(maStr);
ma['id'] = 'la'+id;
return bcSdk.createMortgageApplication({user: user, mortgageApplication: ma})
})
.then(function(resp){
var ma = resp.body;
return bcSdk.getMortgageApplication({user: user, id: ma['id']})
})
.then(function(resp){
logHelper.logMessage(logger,"runClient","Fetched mortgage application",resp.body);
})
.catch(function(err){
logHelper.logError(logger,"runClient","Error Occurred",err);
})
}
|
上面的清单中显示的 blockchain_sample_client.js 将执行以下操作:
- 读取在调用客户端时传入的命令行参数。客户端需要两个值:用户名和从属关系。如果在客户端调用期间未提供任何值,客户端将使用默认值。
- 然后客户端会执行区块链网络的设置。在设置期间,会初始化链对象,并为其配置客户端通信的所有对等节点和成员服务。设置期间还会初始化 Cloudant 数据存储。
- 然后客户端会继续注册默认用户,或者注册作为命令行参数传入的用户。
- 随后是登记步骤,这一步使用注册期间获取的一次性密码来获取 ECert 对。这个 ECert 对将存储在基于 Cloudant 的键值存储中。
- 然后客户端会创建一个样本抵押贷款申请 JSON 对象。它随后会调用 blockchain_sdk.js 文件中的 createMortgageApplication API。这个 createMortgageApplication 方法调用区块链中的合适的链代码方法,并传入贷款申请 JSON 内容。
- 成功创建抵押贷款申请后,客户端会调用 getMortgageApplication 方法,该方法进而会调用合适的链代码方法来查询区块链,以获取上一步中创建的抵押贷款申请。
|
|
|
|
|
|