当前位置: 主页 > 比特币 >

如何一笔链上交易实现BTC、ETH、BTM、EOS多种资产互换——图解BUTXO技术



  聊聊UTXO

  众所周知,比特币的交易模型和一般的以账户为中心模型不同,比特币的交易都是基于未花费输出(UTXO)。在比特币没有余额概念,只有分散到区块链里的UTXO。如下图所示:

  用户在交易的过程中,会将之前接受的输出使用自己的密钥进行解锁作为自己交易的输入,从而别人会得到这笔输入作为以后的输出。

  比原链的BUTXO

  比原链借鉴了比特币UTXO的思想,但是为了解决特有的问题进行创新,从而成为另外一套体系。

  比原链需要满足多资产交互的场景,那么需要从底层就支持多资产,在比原链的BUTXO中会存在一个Assert ID的字段,从而标记是哪种类型的资产。

  从广义上来看BUTXO分为上层的输入输出和内核的哈希值,上层的输入输出代表交易,而内核中的哈希值则用作验证,狭义的BUTXO则是指内核中的哈希值。

  交易层的输入输出将会记录上链,每个节点都会同步到该信息,并将相关的信息hash后写入内核,方便每笔交易的验证。

  输入结构(以钱包为例)

TYPE

 

ASSET ID

 

ASSET ALIAS

 

ASSET DEFINITION

 

AMOUNT

 

ACCOUNT ID

 

ACCOUNT ALIAS

 

CONTROL PROGRAM

 

ADDRESS

 

SPENT OUTPUT ID

 

输出结构

TYPE

 

ID

 

POSITION

 

ASSET ID

 

ASSET ALIAS

 

ASSET DEFINITION

 

AMOUNT

 

ACCOUNT ID

 

ACCOUNT ALIAS

 

CONTROL PROGRAM

 

ADDRESS

 

  内核层中存储的BUTXO是对交易资产类型,资产数量,地址和资产混合的一个哈希,代表的是对某个交易中某地址拥有某一种资产的一个证明,存这个结构可以方便其他节点进行验证,同时也节约了存储的空间。

  BUTXO = HASH(AssertID,Amount,Address,Mux)

  Mux时一个资产混合器结构的哈希值,这里不做展开。

  交易过程详解

  我们来解析一下,假设从Alice转账给Bob 5个BTC资产,然后Bob转账2个BTC和30个BTM资产,这个过程中BUTXO会如何变化?

  首先,Alice的账户中含有一笔10个BTC的输出和一笔200BTM的输出,在内核中也保留了这两笔输出的BUTXO(哈希值)。

  Alice使用自己的公钥和签名解锁这两笔未花费的输出,将五个比特币转到Bob的地址(将这些比特币加锁,只能由Bob的私钥签名能解),同时使用自己的BTM给矿工付手续费(手续费的直接进入coinbase的UTXO这里不做展现)。

  这个时候我们发现内核当中的BUTXO已经变化了,重新生成了两个和Alice地址相关的BUTXO,同时生成了一个和Bob地址相关的BUTXO,这个BUTXO将只能被Bob使用(只有Bob的私钥签名可以解锁)。

  然后Bob再转移2BTC和30个BTM给其他人,交易发出后,Bob的5BTC和50BTM的BUTXO被删除,重新生成了2个找零的BUTXO,又多了两个对其他地址的BUTXO,作为支付给其他人的凭证。

  地址即脚本

  在比特币的交易过程中,为了防止UTXO被任意使用,需要使用加锁脚本进行锁定,等到使用时再由拥有者拿签名进行解锁。

  比原链也是如此,但是比原链不会直接在BUTXO中放入脚本,而是由系统直接将地址默认关联到某个脚本(P2WSH)。

  通过Bob地址生成的默认加锁脚本只有Bob的私钥签名才能解锁,同样的Cari的脚本只有她自己才能解锁。

  基于BUTXO的展望

  Butxo模型天然设计成针对多资产的交互,所以后续有很多的组合和玩法,正如之前钱包高级教程中的资产上链,多资产批量交易和资产销毁,这里通过BUTXO来探索更多的玩法。

  1、链上交易

  通过比原多资产输入输出的恒等原理(既在一笔交易中,各种资产的输入和输出必须相等,否则交易失败)来设置一个智能合约,通过程序自动完成多种资产的交易过程。

  比如Alice想要用1个BTC,10个ETH换取1000个EOS和10000BTM,她只需要这么设置一个如下合约:

  当有人在该智能合约里面填入10000BTM,1000个EOS的输入,1个BTC和10个ETH的输出,那么该交易自动生效,Alice账户被扣除一个BTC和10个ETH并获取10000BTM和1000个EOS,交易成功。这个过程无需第三方协助,使用的是比原链交易功能,信任来源于可执行的智能合约代码。

  2、基于区块高度的自动资产发放

  比原链每2.5分钟产生一个区块,通过难度值的调整,从长期来看使用区块高度作为一个时间的衡量是可以的,那么我们可以设置一个基于区块高度的资产自动发放系统,通过实时监测当前的区块高度,判断是否想要发放资产。

  3、基于外部条件的资产对赌

  根据获取真实可靠的外部信息,双方对资产进行博弈,比如Alice和Bob将一定的资产混入一笔交易中,当满足A条件,全部打入Alice账户,如果满足B条件,则全部打入Bob的账户。

  小结:

  1、没有比原币,只有BUTXO,和比特币一样,比原链没有余额的概念,只有一个个的BUTXO。

  2、BUTXO天然支持多资产的交互,在一笔交易中可以进行多种资产的交互。

  3、使用BUTXO的多资产交互能力,我们可以产生很多新的资产玩法,展望部分介绍了三种可行的玩法,希望抛砖引玉,获得更多好点子。

【版权声明】该文章由本站整理于网络的相关信息,本站不拥有所有权,不承担相关法律责任。


相关资讯

站长统计