区块链java代码大全:UTXO与Account模型剖析

  UTXO 模型剖析

  在比特币的网络中,UTXO(Unspent Transaction Output 未花费交易输出)是比特币交易的基本单位,通过交易的输入和输出,比特币网络将金钱变化成一段数据结构,区别于信用卡支付必须在加密安全网络中传输,比特币的数据可以在任何不一定安全的网络中传输 ( W i F i 、蓝牙,N F C,表格等 ) 。

  UTXO可以是“一聪”(1×10-9 BTC)的任意整数倍。尽管UTXO可以是小于2100万的任意数值,但是一旦UTXO被创造出来,只能作为一个整体被花掉。如果一笔交易需要的BTC小于某一个UTXO的值,那么该UTXO依然会被当做一个整体花费掉,并形成一个找零的UTXO。

  UTXO可以看做被私钥的拥有者锁定的、并被整个比特币网络识别的比特币货币单位。

  在UTXO模型中,被某一个交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出。通过这种方式,一定量的比特币在不同的私钥所有者之间转移,并在交易链条中不断消耗和创建新的UTXO。一笔比特币交易通过所有者

  的私钥签名来解锁UTXO,并通过使用新的所有者的比特币地址来锁定并创建 UTXO。在比特币网络的起 始的阶段,矿工通过一种特殊的交易类型,Coinbase交易创造的交易的输出(该交易没有输入),所产生的比特币,可以用于创建其他的UTXO。

  UTXO 被每一个全节点(Full Node)比特币客户端在一个储存于内存中的数据库所追踪,该数据库也被称为“UTXO集”或者“UTXO池”,新的交易构建时从UTXO池中消耗一个或多个输出,而比特币网络监测着以百万为单位的所有可用的UTXO,世界上在比特币网络中并不存在“比特币余额”的概念,因为比特币网络上只会记录所有未花费的UTXO,比特币的余额的概念更多是通过比特币钱包客户端派生出来的产物,比特币钱包通过扫区块链并聚合所有属于该用户的UTXO来计算该用户的余额。

  另外关于交易费用的问题,我们可以通过计算输入和输出的差额,来计算一笔交易的交易费用。

  

  比特币网络中的交易输入和输出数据结构:

  表1 比特币交易输入数据结构

  

  表2 比特币交易输出数据结构

  

  由于每一个比特币的全客户端都会对每一笔交易按照一系列的规则,进行独立校验,一笔比特币交易所有的交易信息都包含在脚本中,如果任何一个节点按照脚本执行,并对 结果的有效性进行了校验,那么其他所有节点必将得到一致性的校验结果,这也意味着一笔有效的交易对所有人都是有效的。

  比特币网络中的每一笔交易的执行依赖于解锁脚本和锁定脚本。解锁脚本可以解决锁定脚本对某一输出值的阻碍,锁定脚本会在某一笔输出值上设置花费的条件。解锁脚本通常包含私钥的一个签名,也被称为ScriptSig,锁定脚本通常会把一个交易输出锁定到一个比特币地址上(公钥的哈希Hash值)。

  比特币全节点客户端会同时执行锁定脚本和解锁脚本来验证某一笔交易的合法性。客户端会先检索输入所指向的UTXO,这个UTXO包含一个定义了花费条件的锁定脚本,然后客户端会读取试图花费这UTXO的由客户端构造的输入中所包含的解锁脚本,并执行这两个脚本。 如果从解锁脚本处复制好堆栈数据之后,再执行锁定脚本的结果为真, 那么说明解锁脚本有权使用该UTXO,并发起新的交易。

  比特币在交易中使用脚本系统,与FORTH(一种编译语言)一样,脚本是简单的、基于堆栈的、并且从左向右处理,它特意被设计成非图灵完备的,没有循环(LOOP)语句的一种系统。在比特币网络中,脚本系统对数据的操作都通过堆栈完成(主堆栈和副堆栈),堆栈是一个常用的抽象数据类型,最主要的特点就是后进先出(LIFO:Last In First Out)。

  在比特币的客户端中,开发者把比特币客户端支持的脚本类型通过Standard()函数做了一个总结,在Standard()函数中包含5种类型的脚本:

  

  这5种标准的脚本类型实现了,通过公钥哈希支付、通过公钥支付、多重签名、通过脚本哈希支付、以及数据输出的功能。通过这5种标准的脚本类型,比特币客户端可以实现较复杂的支付逻辑。另外,一个非标准化的脚本类型也有可能被创建,但是必须找到一个愿意打包该非标准化的交易的矿工,该非标准化的 脚本才会被执行。

  我们以P2PKH(Pay to publickey hash)为例,来说明脚本的产生和执行过程。假设我们需要向某一个面包店支付0.01BTC 来购买面包,面包店的地址为:Bread Address。

  则该交易的输出为:

  OP_DUP OP_HASH160OP_EQUAL OP_CHECKSIG

  锁定脚本对应的解锁脚本为:

  

  将两个脚本结合起来可以形成如下组合脚本:

  OP_DUP OP_HASH160

  

  Hash> OP_EQUAL OP_CHECKSIG

  只有当解锁版脚本与锁定版脚本的设定条件相符合的时候,执行组合脚本时才会显示结 果为真(Ture)。要想执行组合脚本的结果为真,也就意味着,Bread Signature的签名是有Bread Address对应的私钥所签名,是一个Bread Address的有效签名,只有这 样交易执行结果才会通过(结果为真)。

  虽然比特币的脚本语言包含很多的操作符,但是需要注意的是比特币脚本语言是非图灵完备的。在该脚本语言中,是没有循环功能的,这也意味着交易的复杂性有限,交易的可执行次数有限。脚本并不是一种通用的编程语言,这些限制也避免了潜在创造无限循 环或者其他复杂逻辑漏洞的支付条件,从而对比特币网络的安全性留下隐患。

  在UTXO模型中,我们可以通过公开的账本清晰的追溯每一笔交易的历史记录,并且可以做到完全透明,另外UTXO模型也带来了一定的并行处理能力,可以发起多地址到多地址的交易,为可拓展性带来一定借鉴。除此之外UTXO模型也带来了一定的隐私性,用户可以通过Change address,来作为UTXO的输出地址。但是UTXO本身是无状态的,我们将通过一系列的创新的设计,实现基于UTXO类型的智能合约。

  Account模型剖析

  与UTXO模型不同的是,以太坊是有账户体系的,在以太坊的白皮书中,我们可以看到以太坊的账户体系:在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状态转换构成的。

  以太坊的账户包含四个部分:随机数,用于确定每笔交易只能被处理一次的计数器、账户目前的、以太币余额、账户的合约代码,如果有的话、账户的存储(默认为空)

  

  以太币(Ether)是以太坊内部的主要加密燃料,用于支付交易费用。一般而言,以太坊有两种类型的账户:外部所有的账户(由私钥控制的)和合约账户(由合约代码控制)。外部所有的账户没有代码,人们可以通过创建和签名一笔交易从一个外部账户发送消息。每当合约账户收到一条消息,合约内部的代码就会被激活,允许它对内部存储进行读取和写入,和发送其它消息或者创建合约。

  在以太坊系统中,通过一个有状态的账户系统来记录账户余额,每个账户余额的增加/减少更像现实世界中的银行记账方式,每产生一个新的区块,都会可能对全局状态造成 影响。每个账户都有自己的余额、存储和代码区域。这样合约就可以调用账户或者地址, 并且把相应的执行结果在存储区域进行存储。

  在目前以太坊的账户系统中,通过 client 可以进行一对一的转账,也就意味着每次只能从一个账户转移到另外一个账户。尽管通过智能合约可以发送到更多的账户,但是这些内部交易只能在用户的账户余额上显示,却很难在以太坊的公开账本上追踪。

  更多数字货币信息:www.qukuaiwang.com.cn/news

文章内容系本站作者个人观点,不代表本站对其观点赞同或支持,文章的版权归该作者所有。如需转载,请注明文章来源。本文地址:http://www.cis.net.cn/kejikuaixun/42901.html
留言与评论(共有 条评论)
验证码:

最新文章

UTXO与Account模型剖析

科技快讯
UTXO模型剖析在比特币的网络中,UTXO(UnspentTransactionOutput未花费交易输出)是比特币交易的基本单位,通过交易的输入和输出,比特币网络将金钱变化成一段数据结构,区别于信用卡支付必须在加密安全网络中传输,比特币的数据可以在任何不一定安全

亦来云的社区化治理之路

科技快讯
区块链行业的蓬勃发展离不开社区。作为一种新型的组织模式,一个自组织、自运行的社区对区块链项目乃至于整个行业的重要性已经形成了基本的行业共识。几乎每个区块链项目都在想尽办法凝聚社区力量、激发社区活力,我们越来越意识到:一个沟通良好、通力协作、富有创造力的社区与区块链项目的发展息息相关。从某种程度上可以说,一个

基于NKN的分布式Pub / Sub服务

科技快讯
什么是Pub/SubNKN客户端的一个基本功能(例如是提供去中心化的消息传递系统,包括单播,多播和任播。如果消息发送者知道谁是接收者,那就足够了。但是,在许多常见情况下,接收器应在逻辑上与发送方分离。例如,当我向聊天室发送消息时,我不一定确切地知道聊天室中有谁,我只想让聊天室中的任何人能接收我的消息。这就是Pub/sub能实现的功能

币圈保底又稳赚!HiEX?BANK存币生息业务全新上线

科技快讯
对于绿灯,司机们最为欣赏,因为可以一路油门到底。但对于投资者们而言,一路绿灯意味着资产迅速萎缩,严重者甚至血本无归。当今在币圈,不少人就经历了这样一个过程,从10月份开始,最具代表性的比特币一路下跌,到现在甚至跌破4000美元大关,这与之前繁盛时期的辉煌形成极大的反差。不少人因为恐惧已经将持有的数字货币纷纷抛出

2019年五大最佳区块链共同基金替代品

科技快讯
尽管有数百只加密货币基金被区块链初创企业和数字资产投资着,但目前还没有投资者可以投资的区块链共同基金。原因在于,共同基金的投资受到限制,只能投资于其投资组合中的特定资产。传统的共同基金一般不允许对区块链创业公司的股票或数字资产等高风险的产品进行投资。为了给您提供投资选择,我们列出了您目前可以投资的

能源区块链:标准化的实用路径

科技快讯
我们之前的文章《能源中的区块链:利益攸关者、解决方案和标准化之路》,重点介绍了能源行业的监管格局,以及它与可再生能源生态系统中区块链技术的标准化之间的关系。另外,由行业组织,例如北美能源标准委员会(NAESB)牵头的倡议,以及与这些组织合作的利益攸关方,为创造标准化的实际手段提供了更清晰的图景。目前,NAESB正在开发一个使用区

为什么语言设计在分布式分类账技术中如此重要

科技快讯
为什么语言设计在区块链和其他分布式账本中很重要?当然,这是选择技术平台时应该仔细评估的标准之一:由于使用了易于利用的脚本语言,价值数百万美元的加密货币已经被盗。分布式分类账是一个数据库网络,它们之间有某种自动调节的方法。这可以确保在节点中不包含冲突的信息。智能合约允许我们将业务逻辑编码来修改分类账状态的可执

安信证券:区块链利好政策频现 脱虚向实大有可为

科技快讯
【安信证券:区块链利好政策频现脱虚向实大有可为】12日,国家工信部发布公告表示,近期工业和信息化部信息化和软件服务业司就筹建全国区块链和分布式记账技术标准化技术委员会事宜开展专题研究。安信证券下午发布点评提到:区块链产业利好政策频现,脱虚向实大有可为。市场对于区块链行业最大的担忧就