超级账本Fabric 2.0原生数字货币Fabtoken教程

简介:

Hyperledger Fabric 2.0 (alpha)中有一个新特性:Fabtoken,可以原生支持数字加密货币的发行与管理。我们都知道以太坊的ERC20标准可以用来在以太坊区块链上创建数字加密代币,现在有了Fabtoken,开发者使用Hyperledger Fabric也可以轻松实现数字加密货币的发行、转账等功能了!

Hyperledger Fabric链码与应用开发相关教程:

1、安装Hyperledger Fabric 2.0

首先我们需要先安装Fabtoken的基础平台:Hyperledger Fabric 2.0。使用如下命令下载并进行安装:

curl -sSL http://bit.ly/2ysbOFE | bash -s — 2.0.0-alpha 2.0.0-alpha 0.4.15

注意,为了避免潜在的冲突,如果你之前安装过其他版本的HyperledgerFabric,请先卸载。

2、Fabtoken的核心功能

Fabtoken的核心功能如下:

  • 创建新的加密货币
  • 数字加密货币转账
  • 查询转账交易
  • 赎回数字加密货币

在大多数情况下,前三个功能就足够了。

3、Fabtoken小试

一旦Fabric 2.0安装完毕,你可以使用docker images进行快速验证。

现在执行如下命令进入Fabtoken目录:

cd $HOME/fabric-samples/fabtoken

Fabtoken的运行需要一个Fabric网络,它包含一个示例node应用fabtoken.js以及一个bash脚本startFabric.sh,这两部分代码都在当前目录。bash脚本会首先启动basic-network,然后进入javascript目录,运行npm install来安装必要的npm依赖,最后,启动fabtoken演示应用。

我们强烈建议你看一下这个bash脚本的内容。

现在执行如下命令运行bash脚本:

./startFabric.sh

好了,现在我们就可以开始试试Fabtoken的功能了!

首先为user1创建1000个金币:

node fabtoken issue user1 goldcoin 1000

你会看到如下输出:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side

Token arg: goldcoin
Token arg: 1000
Start issue token operation
Start token issue with args goldcoin,1000
End issue token operation, returns
{ 
  status: 'SUCCESS', 
  info: '' 
} 
— — fabtoken.js — end

显然,成功了!

现在让我们看看user1的金币资产情况:

node fabtoken list user1

输出结果如下:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client sideStart list token operation
End list token operation, returns
[
  { 
    id:{ 
      tx_id: 'e0b8a7ce6b248b8733ac7659c32a45b04a571de2548e371ada810a1e8bcf8eac',
      index: 0 
    },
    type: 'goldcoin',
    quantity: '1000' 
  } 
] 
— — fabtoken.js — end

不错!

接下来假设user1很大方,决定转给user2金币10个:

node fabtoken transfer user1 user2 10 \
     e0b8a7ce6b248b8733ac7659c32a45b04a571de2548e371ada810a1e8bcf8eac 0

上面的命令表示从user1向user2转10个金币,使用如下交易输出作为交易输入:

  • txid:e0b8a7ce6b248b8733ac7659c32a45b04a571de2548e371ada810a1e8bcf8eac
  • index:0

你可能会问,为什么转账命令需要指定交易id和序号?答案是Fabtoken采用的是比特币的UTXO机制,而不是以太坊的状态账户机制,因此你需要指定有金币的交易输出(Transaction Output)。

上面的命令执行后可以看到如下结果:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Token arg: user2
Token arg: 10
Token arg: e0b8a7ce6b248b8733ac7659c32a45b04a571de2548e371ada810a1e8bcf8eac
Token arg: 0
Start transfer token operation
Start token transfer with args 10,e0b8a7ce6b248b8733ac7659c32a45b04a571de2548e371ada810a1e8bcf8eac,0
End transfer token operation, returns
{ 
  status: 'SUCCESS', 
  info: '' 
}

接下来,让我们验证user2确实得到了10个金币:

node fabtoken list user2

Wow~看起来结果的确如此:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Start list token operation
End list token operation, returns
[
  { 
    id:{ 
      tx_id: '7e772f9d2e9e94a5c06e3ff2a62d13a41591b7d47daa9886c842aed6dd6d6582',
      index: 0 
    },
    type: 'goldcoin',
    quantity: '10'
  } 
] 
— — fabtoken.js — end

是不是很酷?

4、用Fabtoken发行特定应用的代币

你可能会说,user1和user2对我毫无意义,我是sam,有个朋友叫don,我想为我的钻石生意创建一些数字货币并发给我的朋友don,该怎么实现?

首先创建数字货币。

node fabtoken3 issue sam diamondcoin 1000

你可能注意到我使用“fabtoken3” 而不是“fabtoken”,然后用“sam” 代替 “user1”。让我们看看结果:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Token arg: diamondcoin
Token arg: 1000
Start issue token operation
Start token issue with args diamondcoin,1000
End issue token operation, returns
{ 
  status: 'SUCCESS', 
  info: '' 
} 
— — fabtoken.js — end

的确,为sam创建了1000个钻石币。

我们验证一下:

node fabtoken3 list sam

结果如下:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Start list token operation
End list token operation, returns
[ 
  { 
    tx_id: '837ac2e3bd7a763f3a11d5a3d32822dac0a215a98f5ee7849d87111b03f631c6',
    type: 'diamondcoin',
    quantity: '1000'
  } 
] 
— — fabtoken.js — end

现在让我们给don转50个钻石币。

node fabtoken3 transfer sam don 50 \
    837ac2e3bd7763f3a11d5a3d32822dac0a215a98f5ee7849d87111b03f631c6 0

结果如下:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Token arg: don
Token arg: 50
Token arg: 837ac2e3bd7a763f3a11d5a3d32822dac0a215a98f5ee7849d87111b03f631c6
Token arg: 0
Start transfer token operation
Start token transfer with args 50,837ac2e3bd7a763f3a11d5a3d32822dac0a215a98f5ee7849d87111b03f631c6,0
End transfer token operation, returns
{ 
  status: 'SUCCESS', 
  info: '' 
} 
— — fabtoken.js — end

现在验证don是否真的收到50个钻石币:

node fabtoken3 list don

结果如下:

— — fabtoken.js — 
startSetting up client side network objects
Created client side object to represent the channel
Created client side object to represent the peer
Created client side object to represent the orderer
Successfully setup client side
Start list token operation
End list token operation, returns
[
  { 
    id:{ 
      tx_id: '74316bd91757907e9c878a78d725b8c9f605b505ccd1801e8afd407bbd8b53b3',
      index: 0 
    },
    type: 'diamondcoin',
    quantity: '50'
  }
] 
— — fabtoken.js — end

的确如此!don收到50个钻石币!


原文链接:Fabtoken - Hyperledger Fabric 2.0的神秘宝石 - 汇智网

目录
相关文章
|
9月前
Minecraft Fabric 教程 #8 添加附魔书
这就创建了一个FireBoom附魔书 onTargetDamaged //当目标被攻击 在mc FireballEntity类有一个 方法就是当火球碰撞了就创建一个火焰爆炸的效果
42 0
|
9月前
Minecraft Fabric 教程 #4 添加分组
在 ItemGroup 显示 使用 FabricItemGroupBuilder
37 0
|
9月前
Minecraft Fabric 进阶教程 #2 绘制界面
绘制界面不需用注入Mixin
58 0
|
9月前
Minecraft Fabric 进阶教程 #1 绘制按钮
在Mixin包里新建一个类
47 0
Minecraft Fabric 进阶教程 #1 绘制按钮
|
9月前
Minecraft Fabric 教程 #9 添加盔甲
参数一 材料名字 参数二 耐久倍数 参数三 盔甲数也就是穿上盔甲加的盔甲值 参数四 使用的时候发出的声音 参数五 耐性
40 0
Minecraft Fabric 教程 #9 添加盔甲
|
9月前
Minecraft Fabric 教程 #5 添加语言文件
lang也就是你模组的翻译比如 中文简体 zh_cn 中文正體 zh_tw 英文 en_us
40 0
|
9月前
Minecraft Fabric 教程 #3 添加方块
创建方块,注册,创建方块物品,添加纹理,掉落物,创建一个Block类
52 0
Minecraft Fabric 教程 #3 添加方块
|
9月前
Minecraft Fabric 教程 #2 添加物品
创建物品,注册物品,创建物品类
58 0