Hyperledger part 4 - Implement business network

Link bài trước
http://www.giaosucan.com/2018/08/hyperledger-part-3-build-blockchain.html

Ở bài này, mình sẽ hướng dẫn các bạn cách implement một business network đơn giản dùng Hyplerleger composer. Một mạng blockchain thông thường có 3 loại Resource là
Business network ở đây là land-registry. Một dạng business mua bán bất động sản. Trong mạng blockchain này có 5 loại đối tượng tham gia (participants)

Participants

Cá nhân: Những người mua bán bất động sản
Ngân hàng: Cung cấp tín dụng cho người mua bán
Công chứng viên: Người sẽ validate các giao dịch
Nhân viên môi giới: Người trung gian thực hiện các giao dịch mua bán
Công ty bảo hiểm: Bảo hiểm cho việc mua bán, đề phòng chuyện ko hay xảy ra

Assets

Tài sản trong mạng blockchain này là bất động sản, các khoản vay của ngân hàng

Transactions

Transaction là các giao dịch mua bán, thực hiện các khoản vay khi mua bán bất động sản trong mạng blockchain,
Source code để build mạng business network Hyperledger bao gồm  4 loại file chính
Model files: Đây giống kiểu object trong Java, mô tả các participants, assets và các transactions. Định nghĩa các thuộc tính. Hyperledger composer cung cấp 1 loại ngôn ngữ là model language để mô tả chúng
Access file: (ACL file) vì Hyperledger Fabric là permissioned blockchain. Vì thấy cần phải quy định những participants nào trong mạng blockchain được quyền access. Ví dụ admin thì có quyền xem toàn bộ các transaction, nhưng user thì chỉ được xem transaction của mình. Hyperleger cung cấp Access Control Language (ACL) để định nghĩa các permission này
Script file: Đây là JavaScript file thực hiện các business logic trong mạng blockchain
Query file: Thực hiện query data

Implementation

Bạn có thể dùng Yeoman để generate source boostrap của project
yo hyperledger-composer:businessnetwork


Yeoman sẽ hỏi 1 số thông tin về source code như name, license, namespace….
Sau khi nhập đủ thông tin bạn sẽ thấy source được generate như hình dưới
Đối với model file, bạn khai báo các participant như Individual, Bank, Employee … sử dụng từ khóa participant, các thuộc tính thì khai báo kiểu biến như ngôn ngữ thông thường (Kiểu dữ liệu tên_biến)
participant PrivateIndividual identified by id {
 o String id
 o String name
 o String address
 o Double balance default = 0.0
}

participant Bank identified by id {
 o String id
 o String name
 o Double balance default = 0.0
}



Các assets định nghĩa bằng từ khóa assets, chú ý đến thuộc tính id (định danh này là bắt buộc phải có)
asset RealEstate identified by id {
 o String id
 o String address
 o Double squareMeters
 o Double price
 --> PrivateIndividual owner
}


Source code generate sẵn 1 file permission.acl định nghĩa các permission mặc định, bạn có thể modify để add thêm
rule Default {
   description: "Allow all participants access to all resources"
   participant: "ANY"
   operation: ALL
   resource: "org.acme.landregistry.*"
   action: ALLOW
}

rule SystemACL {
 description:  "System ACL to permit all access"
 participant: "ANY"
 operation: ALL
 resource: "org.hyperledger.composer.system.**"
 action: ALLOW
}

File logic.js là nơi implement các nghiệp vụ cần thiết như mua bán bất động sản, thực hiện các khoản vay… được viết thành các method ví dụ
function buyingRealEstate( trade ){
 var notaryFees = 0.1 * trade.realEstate.price
 var realEstateAgentFees = trade.realEstateAgent.feeRate * trade.realEstate.price
 var insuranceCostFirstMonth = trade.insurance.monthlyCost
 var totalCost = notaryFees + realEstateAgentFees + insuranceCostFirstMonth
 // Updates the seller's balance
 trade.seller.balance += trade.realEstate.price


Bài tiếp theo sẽ hướng dẫn các bạn develop application để tương tác với mạng blockchain này.

Powered by Blogger.