示例三:數字貨幣發行與管理
簡介
該智能合約實現一個簡單的商業應用案例,即數字貨幣的發行與轉賬。在這之中一共分為三種角色:中央銀行,商業銀行,企業。其中中央銀行可以發行一定數量的貨幣,企業之間可以進行相互的轉賬。主要實現如下的功能:
初始化中央銀行及其發行的貨幣數量
新增商業銀行,同時央行並向其發行一定數量的貨幣
新增企業
商業銀行向企業轉給一定數量的數字貨幣
企業之間進行相互的轉賬
查詢企業、銀行、交易信息
主要函數
init
:初始化中央銀行,併發行一定數量的貨幣;invoke
:調用合約內部的函數;query
:查詢相關的信息;createBank
:新增商業銀行,同時央行向其發行一定數量的貨幣;createCompany
:新增企業;issueCoin
:央行再次發行一定數量的貨幣(歸於交易);issueCoinToBank
:央行向商業銀行轉一定數量的數字貨幣(歸於交易);issueCoinToCp
:商業銀行向企業轉一定數量的數字貨幣(歸於交易行為);transfer
:企業之間進行相互轉賬(歸於交易行為);getCompanys
:獲取所有的公司信息,如果企業個數大於10,先訪問前10個;getBanks
:獲取所有的商業銀行信息,如果商業銀行個數大於10,先訪問前 10 個getTransactions
:獲取所有的交易記錄 如果交易個數大於10,先訪問前 10 個;getCompanyById
:獲取某家公司信息;getBankById
:獲取某家銀行信息;getTransactionBy
:獲取某筆交易記錄;writeCenterBank
:修改央行信息;writeBank
:修改商業銀行信息;writeCompany
:修改企業信息;writeTransaction
:寫入交易信息。
數據結構設計
centerBank 中央銀行
Name:名稱
TotalNumber:發行貨幣總數額
RestNumber:賬戶餘額
ID:ID固定為 0
bank 商業銀行
Name:名稱
TotalNumber:收到貨幣總數額
RestNumber:賬戶餘額
ID:銀行 ID
company 企業
Name:名稱
Number:賬戶餘額
ID:企業 ID
transaction 交易內容
FromType:發送方角色 //centerBank:0,Bank:1,Company:2
FromID:發送方 ID
ToType:接收方角色 //Bank:1,Company:2
ToID:接收方 ID
Time:交易時間
Number:交易數額
ID:交易 ID
接口設計
init
init
request 參數:
response 參數:
createBank
createBank
request 參數:
response 參數:
createCompany
createCompany
request 參數:
response 參數:
issueCoin
issueCoin
request 參數:
response 參數:
issueCoinToBank
issueCoinToBank
request 參數:
response 參數:
issueCoinToCp
issueCoinToCp
request 參數:
response 參數:
transfer
transfer
request 參數:
response 參數:
getBanks
getBanks
response 參數
getCompanys
getCompanys
response 參數
getTransactions
getTransactions
response 參數
getCenterBank
getCenterBank
response 參數
getBankById
getBankById
request 參數
response 參數
getCompanyById
getCompanyById
request 參數
response 參數
getTransactionById
getTransactionById
request 參數
response 參數
writeCenterBank
writeCenterBank
request 參數
response 參數
writeBank
writeBank
request 參數
response 參數
writeCompany
writeCompany
request 參數
response 參數
writeTransaction
writeTransaction
request 參數
response 參數
``` err nil 為成功 ···
其它
查詢時為了兼顧讀速率,將一些信息備份存放在非區塊鏈數據庫上也是一個較好的選擇。
Last updated
Was this helpful?