什么是FabToken
将资产用tokens表示,将使你利用区块链账本去建立一个与物品之间的特殊状态与所有权,并使用一个被多方信任共识机制转移所有权。就像账本是安全的一样,资产也是安全的,并且未经拥有者的同意是无法被转移的。
Tokens可以代表有形资产,也可以代表无形资产。因为Tokens在未经拥有者同意的前提下是无法被转移的,并且那些转移tokens的交易都会在分布式账本上进行验证,所以使用tokens代表资产可以减少资产在多方转移时的风险和困难。
FabToken是一个允许你使用Hyperledger Fabric发行,转移,回收tokens的token管理系统。Tokens被存放在通道的账本上,并且可以被通道中的任何一个成员持有。FabToken使用Fabric的MSP去认证token拥有者的身份并管理他们得公私钥。FabToken的交易只有在发起方为拥有有效MSP身份的token拥有者时才是有效的。
FaToken利用通道提供的验证和信任提供了一个简单的接口token化资产。Tokens使用通道的orderers和peers来进行共识和验证。Tokens也使用通道的策略去管理哪些成员可以拥有和发行tokens。然而,用户不需要使用智能合约去创建或者管理tokens。Token的建立和资产所有权的确立并不需要通道成员的签名和复杂的业务逻辑去批准。Token的拥有者可以使用受信任的peers来创建token交易,而不需要其他组织去对交易背书。
Token的生命周期
Tokens和Hyperleger Fabric有相似的生命周期。他们可以被发行,转移和回收。
- Tokens通过发行来创建。Tokens的发行者定义被tokens代表的资产的类型和数量,同时制定tokens的初始拥有者。
- Tokens通过转移来消费。Tokens的拥有者可以转移tokens所代表的资产到通道中的另一个成员上。Tokens一旦被转移,它原来的拥有者将无法再使用和获取它。
- Tokens通过回收来将其从通道中移除。被回收的token不能再被通道中的任何成员拥有和消费。
FabTokens使用UTXO模型来验证token交易。UTXO交易保证了资产的唯一性,使其只能被拥有者转移,并且无法被多次消费。每一笔交易必须有一组特定输入输出。输出为交易创建的新tokens。这些将被以未消费的状态列在账本上。输入为被另一笔交易创建的未消费的tokens。如果一笔交易是有效的,消费的tokens将被从通道长辈的数据库中移除。
基于UTXO模式的token生命周期保证了tokens的唯一性,并且只能被消费一次。Token被发行时,它被创建在一个未消费状态,并被发行者指定了一个拥有者。拥有者可以转移和回收Token。当token被转移时,创建者拥有token将作为输入。输出为被交易接收者拥有的新的token。输入的token变为以消费的,并从数据库中移除。这个过程中,输入输出所代表的资产总数是一样的。被回收的token被转移到一个空的拥有者。这使被回收的token不可能在被通道中的成员转移。
发行token
Tokens只能被发行者创建。发行者是通过IssuingPolicy授权发行tokens的通道成员。满足策略的用户可以使用issue交易在账本上增加tokens。
Tokens需要3个参数来创建:
- Owner 可以通过自己的MSP身份转移和回收token的通道成员
- Type 表示token代表的资产类型,例如美元,欧元等等
- Quantity token代表的资产的数量
例如,每个美元类型的token表示100美元。为了消费50美元或者增加50美元,新的token将被创建,并且代表新的美元数量。
IssuingPolicy也可以限制发行者可以发行哪种类型的token。在Fabric v2.0 Alpha release中,IssuingPolicy被设置为ANY,意味着所有通道成员可以发行任意类型的token。在之后的版本中用户将可以限制这个策略。
List
你可以使用List方法查询你拥有的未消费的token。成功的List指令会返回以下值:
- TokenID 你拥有的token的id
- Type 你的token代表的资产类型
- Quantity 你拥有的资产数量