前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HyperLedger Fabric 1.0 智能合约开发-数字货币发行和管理

HyperLedger Fabric 1.0 智能合约开发-数字货币发行和管理

作者头像
用户2909867
发布2018-08-22 11:09:07
5530
发布2018-08-22 11:09:07
举报
文章被收录于专栏:互联网大杂烩

1.简介:

该智能合约实现一个简单的商业应用案例,即数字货币的发行与转账。在这之中一共分为三种角色:中央银行,商业银行,企业。其中中央银行可以发行一定数量的货币,企业之间可以进行相互的转账。

2.主要实现如下的功能:

初始化中央银行及其发行的货币数量 新增商业银行,同时央行并向其发行一定数量的货币 新增企业 商业银行向企业转给一定数量的数字货币 企业之间进行相互的转账 查询企业、银行、交易信息

3.主要函数

代码语言:javascript
复制
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:写入交易信息。

4.数据结构设计

代码语言:javascript
复制
centerBank 中央银行

Name:名称
TotalNumber:发行货币总数额
RestNumber:账户余额
ID:ID固定为 0
代码语言:javascript
复制
bank 商业银行
Name:名称
TotalNumber:收到货币总数额
RestNumber:账户余额
ID:银行 ID
代码语言:javascript
复制
company 企业
Name:名称
Number:账户余额
ID:企业 ID
代码语言:javascript
复制
transaction 交易内容
FromType:发送方角色 //centerBank:0,Bank:1,Company:2
FromID:发送方 ID
ToType:接收方角色 //Bank:1,Company:2
ToID:接收方 ID
Time:交易时间
Number:交易数额
ID:交易 ID

5.接口设计

代码语言:javascript
复制
init
request 参数:
args[0] 银行名称
args[1] 初始化发布金额
response 参数:
{"Name":"XXX","TotalNumber":"0","RestNumber":"0","ID":"XX"}
代码语言:javascript
复制
createBank
request 参数:
args[0] 银行名称
response 参数:
{"Name":"XXX","TotalNumber":"0","RestNumber":"0","ID":"XX"}
代码语言:javascript
复制
createCompany
request 参数:
args[0] 公司名称
response 参数:
{"Name":"XXX","Number":"0","ID":"XX"}
代码语言:javascript
复制
issueCoin
request 参数:
args[0] 再次发行货币数额
response 参数:
{"FromType":"0","FromID":"0","ToType":"0","ToID":"0","Time":"XX","Number":"XX","ID":"XX"}
代码语言:javascript
复制
issueCoinToBank
request 参数:
args[0] 商业银行ID
args[1] 转账数额
response 参数:
{"FromType":"0","FromID":"0","ToType":"1","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
代码语言:javascript
复制
issueCoinToCp
request 参数:
args[0] 商业银行ID
args[1] 企业ID
args[2] 转账数额
response 参数:
{"FromType":"1","FromID":"XX","ToType":"2","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
代码语言:javascript
复制
transfer
request 参数:
args[0] 转账用户ID
args[1] 被转账用户ID
args[2] 转账余额
response 参数:
{"FromType":"2","FromID":"XX","ToType":"2","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
代码语言:javascript
复制
getBanks
response 参数
[{"Name":"XXX","Number":"XX","ID":"XX"},{"Name":"XXX","Number":"XX","ID":"XX"},...]
代码语言:javascript
复制
getCompanys
response 参数
[{"Name":"XXX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"},{"Name":"XXX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"},...]
代码语言:javascript
复制
getTransactions
response 参数
[{"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"},...]
代码语言:javascript
复制
getCenterBank
response 参数
[{"Name":"XX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"}]
getBankById
request 参数
args[0] 商业银行ID
response 参数
[{"Name":"XX","TotalNumber":"XX","RestNumber":"XX","ID":"XX"}]
代码语言:javascript
复制
getCompanyById
request 参数
args[0] 企业ID
response 参数
[{"Name":"XXX","Number":"XX","ID":"XX"}]
代码语言:javascript
复制
getTransactionById
request 参数
args[0] 交易ID
response 参数
{"FromType":"XX","FromID":"XX","ToType":"XX","ToID":"XX","Time":"XX","Number":"XX","ID":"XX"}
代码语言:javascript
复制
writeCenterBank
request 参数
CenterBank
response 参数
err  nil 为成功
代码语言:javascript
复制
writeBank
request 参数
Bank
response 参数
err  nil 为成功
代码语言:javascript
复制
writeCompany
request 参数
Company
response 参数
err  nil 为成功
代码语言:javascript
复制
writeTransaction
request 参数
Transaction
response 参数
 err nil 为成功 

我是按照这个架构来实现了一个数字货币发行与管理的智能合约的。 代码链接如下: https://github.com/HeartWillGo/MySmartContract.git

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.07.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介:
  • 2.主要实现如下的功能:
  • 3.主要函数
  • 4.数据结构设计
  • 5.接口设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档