Transactions是比特币中非常重要的概念,但很多人对其翻译成交易还是转账却存在争议,比如白玉盘就认为把Transactions翻译成交易,是一个动摇比
交易与转账之争
Transactions是比特币中非常重要的概念,但很多人对其翻译成交易还是转账却存在争议,比如白玉盘就认为把Transactions翻译成交易,是一个动摇比特币基石的翻译错误,一些人认为比特币转移就是简单的从一个账户转移到另一个账户,就是一个简单的转账的过程,那么到底是不是这样的?我们先来看看转账和交易这两个概念。
交易:又称贸易、交换、互市,是买卖双方对有价物品及服务进行互通有无的行为。可以是以货币为交易媒介的过程,也可以是以物易物,例如一只黄牛交换三只猪。 依货品交付方式 现货交易 期货交易 朋友交易 依货款交付方式 以物易物(以等值货品交换) 现金交易 货到付款 预付货款(概念转自维基百科)
转账:转账结算是指不使用现金,通过银行将款项从付款单位(或个人)的银行账户直接划转到收款单位(或个人)的银行账户的货币资金结算方式(概念转自MBA智库)
我们可以看到交易涉及到更多的规则,行为更加复杂并且有更多的分类,而转账则比较简单,其实就是涉及到两个账户余额之间的增减。
回过来再看比特币,首先从底层模型来说,比特币是UTXO模型,它没有余额的概念,那么就不是账户余额之间的增减这么简单,比特币如果想要将币转移到其他账户,必须使用自己的私钥去解锁一个脚本程序,根据脚本的不同分为不同类型的交易,包括:P2PKH、P2PK、MS(限15个密钥)、P2SH和OP_Return。
从比原链的BUTXO模型来看交易
比特币的交易被人理解为转账,可能是因为它整体上看比较简单,它的脚本程序隐藏在交易之中没有太多存在感。
我们从另外一个角度来看,比原链的BUTXO模型源于比特币,但为了从底层支持多资产的交互,对UTXO模型做了很多改造和深化,将UTXO的能力进一步增强。进一步印证了是交易而非转账。
比原链在UTXO的基础上加入了MUX结构,从而能够在一笔交易中支持多输入和多输出。Mux结构可以理解为一个交易池,将一笔交易中的输入放入到MUX中,然后分配成不同的输入。如下图所示:
蓝色区域表示MUX结构,MUX结构将所有的资产根据不同的种类汇总起来,并根据不同的输出进行分配,在MUX中一个资产类型对应一个或者多个输入,同时也可以对应一个或者多个不同输出。
MUX结构最重要的好处就是将原本多对多的关系,简化为一次多对一和一次一对多的关系,从而简化多资产的验证逻辑。
因为比原链的多资产是多输入和多输出的,所以很可能一笔输出是指向之前的多笔输入的,所以比原链的UTXO的结构也不同,简单来说UTXO可以使用如下表示:
BUTXO = HASH(AssertID,Amount,Address,Mux)
我们看这个架构中包括资产ID,资产数量,地址和MUX结构,似乎没有看到和脚本程序相关的东西,其实我们的脚本程序(也就是智能合约)是和地址绑定的,对于一般的交易会有默认的Control program和地址关联,并最后到达合约层进行锁定或解锁。
这些Control program其实就可以自带业务逻辑,将交易根据里面自带的逻辑运行。比如下面的例子
我们可以设置一个基于区块高度的资产自动发放系统,通过实时监测当前的区块高度,判断是否想要发放资产。
我们可以在input和output上关联智能合约,加入一些具有业务含义的流程,也可以在mux上加入一定业务含义的流程,从而生成更复杂的业务逻辑规则,发挥更大的威力。
我们知道比特币是非图灵完备的,而比原链是图灵完备的,其智能合约具有更多的灵活性和扩展性,比如如下:
合约的含义是:贷方(lender)在借方(borrower)已出具抵押物(collateral)的情况下,将与 amountLoaned 等量的资产 assetLoaned 借给借方。如果贷款被偿还给贷方,则将抵押物退还给借方。但是,如果还款截止时间已过,则贷方有权为自己索取抵押物。
总结
从脚本程序,不同的交易标准,个人认为比特币的是交易而不是转账,你可以认为脚本程序规定了一种交易的规则,是一种业务,其实事实上也是如此,比特币本身支持的各种脚本操作可以更大程度的扩展交易规则,虽然是非图灵完备的。比原链通过改进UTXO模型来支持多资产的交易,同时讲合约改造成图灵完备,能够在交易中带上复杂的交易逻辑,从而从另外一个角度印证比特币的转移是交易,而非转账。
关键词: 结构UTXO