HyperLedger Fabric 1.0 智能合約開發(fā)-數(shù)字貨幣發(fā)行和管理

1.簡介:

該智能合約實現(xiàn)一個簡單的商業(yè)應用案例,即數(shù)字貨幣的發(fā)行與轉賬。在這之中一共分為三種角色:中央銀行,商業(yè)銀行,企業(yè)。其中中央銀行可以發(fā)行一定數(shù)量的貨幣,企業(yè)之間可以進行相互的轉賬。
該設計架構來源于:https://yeasy.gitbooks.io/blockchain_guide/app_dev/chaincode_example03.html

2.主要實現(xiàn)如下的功能:

初始化中央銀行及其發(fā)行的貨幣數(shù)量
新增商業(yè)銀行,同時央行并向其發(fā)行一定數(shù)量的貨幣
新增企業(yè)
商業(yè)銀行向企業(yè)轉給一定數(shù)量的數(shù)字貨幣
企業(yè)之間進行相互的轉賬
查詢企業(yè)、銀行、交易信息

3.主要函數(shù)

init:初始化中央銀行,并發(fā)行一定數(shù)量的貨幣;
invoke:調用合約內部的函數(shù);
query:查詢相關的信息;
createBank:新增商業(yè)銀行,同時央行向其發(fā)行一定數(shù)量的貨幣;
createCompany:新增企業(yè);
issueCoin:央行再次發(fā)行一定數(shù)量的貨幣(歸于交易);
issueCoinToBank:央行向商業(yè)銀行轉一定數(shù)量的數(shù)字貨幣(歸于交易);
issueCoinToCp:商業(yè)銀行向企業(yè)轉一定數(shù)量的數(shù)字貨幣(歸于交易行為);
transfer:企業(yè)之間進行相互轉賬(歸于交易行為);
getCompanys:獲取所有的公司信息,如果企業(yè)個數(shù)大于10,先訪問前10個;
getBanks:獲取所有的商業(yè)銀行信息,如果商業(yè)銀行個數(shù)大于10,先訪問前 10 個
getTransactions:獲取所有的交易記錄 如果交易個數(shù)大于10,先訪問前 10 個;
getCompanyById:獲取某家公司信息;
getBankById:獲取某家銀行信息;
getTransactionBy:獲取某筆交易記錄;
writeCenterBank:修改央行信息;
writeBank:修改商業(yè)銀行信息;
writeCompany:修改企業(yè)信息;
writeTransaction:寫入交易信息。

4.數(shù)據(jù)結構設計

centerBank 中央銀行

Name:名稱
TotalNumber:發(fā)行貨幣總數(shù)額
RestNumber:賬戶余額
ID:ID固定為 0
bank 商業(yè)銀行
Name:名稱
TotalNumber:收到貨幣總數(shù)額
RestNumber:賬戶余額
ID:銀行 ID
company 企業(yè)
Name:名稱
Number:賬戶余額
ID:企業(yè) ID
transaction 交易內容
FromType:發(fā)送方角色 //centerBank:0,Bank:1,Company:2
FromID:發(fā)送方 ID
ToType:接收方角色 //Bank:1,Company:2
ToID:接收方 ID
Time:交易時間
Number:交易數(shù)額
ID:交易 ID

5.接口設計

init
request 參數(shù):
args[0] 銀行名稱
args[1] 初始化發(fā)布金額
response 參數(shù):
{"Name":"XXX","TotalNumber":"0","RestNumber":"0","ID":"XX"}
createBank
request 參數(shù):
args[0] 銀行名稱
response 參數(shù):
{"Name":"XXX","TotalNumber":"0","RestNumber":"0","ID":"XX"}
createCompany
request 參數(shù):
args[0] 公司名稱
response 參數(shù):
{"Name":"XXX","Number":"0","ID":"XX"}
issueCoin
request 參數(shù):
args[0] 再次發(fā)行貨幣數(shù)額
response 參數(shù):
{"FromType":"0","FromID":"0","ToType":"0","ToID":"0","Time":"XX","Number":"XX","ID":"XX"}
issueCoinToBank
request 參數(shù):
args[0] 商業(yè)銀行ID
args[1] 轉賬數(shù)額
response 參數(shù):
{"FromType":"0","FromID":"0","ToType":"1","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
issueCoinToCp
request 參數(shù):
args[0] 商業(yè)銀行ID
args[1] 企業(yè)ID
args[2] 轉賬數(shù)額
response 參數(shù):
{"FromType":"1","FromID":"XX","ToType":"2","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
transfer
request 參數(shù):
args[0] 轉賬用戶ID
args[1] 被轉賬用戶ID
args[2] 轉賬余額
response 參數(shù):
{"FromType":"2","FromID":"XX","ToType":"2","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
getBanks
response 參數(shù)
[{"Name":"XXX","Number":"XX","ID":"XX"},{"Name":"XXX","Number":"XX","ID":"XX"},...]
getCompanys
response 參數(shù)
[{"Name":"XXX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"},{"Name":"XXX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"},...]
getTransactions
response 參數(shù)
[{"FromType":"XX","FromID":"XX","ToType":"XX","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"},{"FromType":"XX","FromID":"XX","ToType":"XX","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"},...]
getCenterBank
response 參數(shù)
[{"Name":"XX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"}]
getBankById
request 參數(shù)
args[0] 商業(yè)銀行ID
response 參數(shù)
[{"Name":"XX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"}]
getCompanyById
request 參數(shù)
args[0] 企業(yè)ID
response 參數(shù)
[{"Name":"XXX","Number":"XX","ID":"XX"}]
getTransactionById
request 參數(shù)
args[0] 交易ID
response 參數(shù)
{"FromType":"XX","FromID":"XX","ToType":"XX","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
writeCenterBank
request 參數(shù)
CenterBank
response 參數(shù)
err  nil 為成功
writeBank
request 參數(shù)
Bank
response 參數(shù)
err  nil 為成功
writeCompany
request 參數(shù)
Company
response 參數(shù)
err  nil 為成功
writeTransaction
request 參數(shù)
Transaction
response 參數(shù)
 err nil 為成功 

我是按照這個架構來實現(xiàn)了一個數(shù)字貨幣發(fā)行與管理的智能合約的。
代碼鏈接如下:
https://github.com/HeartWillGo/MySmartContract.git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 2017.7.24 第一章 貨幣的本質與職能 第一節(jié) 貨幣的起源與發(fā)展 1.人類出現(xiàn)之初,社會生產水平極其底下,因...
    微與之期閱讀 1,757評論 0 9
  • 今天,2017年2月20日,陰天,有大風,第一次收到小黑送的花。 和室友阿玉嘻嘻哈哈得插花,家里沒有好看的花瓶,諾...
    Milcah_Z閱讀 223評論 2 2
  • 麗江是我和你短暫地醉生夢死過的地方。每個清晨都在小客棧里睡到自然醒,手拉著手去喝一個冰涼的牦牛酸奶,手腕上一大串銀...
    如果咖啡店閱讀 294評論 0 2
  • 李光鑫 2017-03-11 10:40:3940 兒子正值4歲半,在到處都是大大小小屏幕的時代,看動畫片在所難免...
    李光鑫簡書閱讀 445評論 0 1