首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序(4)

为基于 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                    方法,该方法进而会调用合适的链代码方法来查询区块链,以获取上一步中创建的抵押贷款申请。
返回列表