使UTXO模型交易支持数值类型脚本

本文探讨了比特币的UTXO模型如何通过交易拆分来模拟账户余额模型的功能。在UTXO模型中,交易被分为两步,由矿工生成第二个交易来修改转账双方的余额状态。矿工在此过程中起到了中间节点的作用,但不作为第三方参与。通过这种方式,UTXO模型也能支持数值类型的脚本和可延迟交易,同时保持系统的安全性。
摘要由CSDN通过智能技术生成

        比特币的UTXO模型的点对点交易是功能简单的,V神评价像计算器,因为比特币链上的脚本只提供校验功能,也即只返回bool类型的函数,也不能提供用户余额的状态树。余额模型的脚本则可以返回数值类型,由矿工修改相关的账户状态。

        如果分解余额模型的交易过程,可以看作用户提交的数据是由发送者、接收者、交易计数、脚本和签名等组成,然后由脚本计算出具体的转账数额,矿工对转账双方的余额状态进行修改,其他矿工则能够验证该过程。所以可以把该过程看作为两个数据,一个是发送者提交的交易数据,另一个则是矿工修改的状态数据。(这里只考虑简单的余额模型,也即支持脚本为数值类型。也可以是返回一组数值类型的脚本,分别对应多个接收者)。

        如果使用UTXO的交易模拟该过程,则可以将一个点对点的交易进行拆分。第一个交易是用户生成的交易数据,输入引用为未花费的交易输出以及对应的解锁脚本,该解锁脚本也只提供校验功能,即只返回bool类型的函数。输出为一个特殊的中间交易地址,以及绑定转账双方的用户地址和转账脚本,该转账脚本可以返回数值类型,输出数额为输入引用数额的和。该交易输出的中间交易地址,只能由矿工引用,也即矿工需生成第二个交易,输入引用为用户提交的第一个交易,输出的用户地址只能是所绑定的转账双方的用户地址,转账的数额由转账脚本计算得到,然后可以找零输出到发送者的地址;如果第一个交易输出的数额小于转账的数额,也即转账脚本无效,则只能全部输出到发送者的地址。最后由矿工对第二个交易进行签名,然后由矿工将这两个交易打包到账本中,所以其他的矿工同步账本后可以验证这两个交易是否正确,其中包括转账脚本得到的转账数额是否正确。所以也就能使UTXO模型交易可以支持数值类型的脚本。可以看出第二个交易是由矿工生成,并不需要全网广播(由所打包区块的矿工生成,其它节点同步区块数据,因此交易并不广播),最终输出到所转账的用户地址,所以也就把点对点的交易进行了拆分,但通过所引用的第一个交易的某些限制,防止矿工作弊,并支持数值类型的脚本。

        而UTXO模型系统的矿工如果能够知晓所有用户的地址(由用户公钥生成),则也能够生成对应的用户余额的状态树。可以看出,上述第一个交易并不修改用户的状态,而是由第二个交易才修改转账双方的余额状态,所以也能够具有账户余额。并且第二个交易可以等待一段时间后再上链,也即转账脚本可以具有可延迟参数,由矿工生成的第二个交易包含可延迟参数(比如预言机提供的参数),然后得到转账脚本的结果,所以也能满足灵活的需求。

        可以看出,交易经过拆分后并不是点对点的交易,但又没有第三方,因为第二个交易是由矿工生成,但矿工并不属于第三方。可以认为交易是经过中间节点完成,但中间节点与矿工一致,可以是任意满足条件的节点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值