div#pop_ad { opacity: 0; }
AD
首页 > 数字货币 > 正文

区块链组成地址交易以及交易结构的验算图真相大白

[2021-01-29 09:14:35] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: 区块链数据里最基本也是重要的几个概念是地址、交易、区块、网络。比特币用地址来标识一笔交易的支出方和接收方。所有的交易最终需要被记到统一的账本上,而这个账本是通过区块确认并完成的。每一个新区块的产生,
区块链数据里最基本也是重要的几个概念是地址、交易、区块、网络。比特币用地址来标识一笔交易的支出方和接收方。

区块链组成地址交易以及交易结构的验算图真相大白


所有的交易最终需要被记到统一的账本上,而这个账本是通过区块确认并完成的。每一个新区块的产生,都会被打上时间戳,

最终生成按照时间前后排列并加以记录的电子交易证明。每个独立节点之间又通过比特币网络来建立联系,这样就组成了一个去中心化、分布式的电子交易记录时间戳服务器系统。比特币通过构造这个分布式时间戳服务器来解决双重支付问题。中本聪在其白皮书中曾提到:只要诚实的节点所控制的计算能力的总和,大于有合作关系的(Cooperating)攻击者的计算能力的总和,比特币系统就是安全的 。如果说整个比特币区块链是一个账本,那么账本上承载的就是一笔笔由一些地址转移到另一些地址的资产交易。比特币里的各个机制及模块有机地结合,才使得区块链这样一个去中心化的记账体系成为可能。下面我们尽量从技术原理的角度来看一看这个记账体系的组成。

区块链组成地址交易以及交易结构的验算图真相大白


地址
在比特币体系里,经常提到地址,这多少让人有些费解,公钥算法用到的是私钥与公钥,跟地址有什么关系?椭圆曲线签名算法里的私钥由32字节随机数组成,通过私钥可以算出公钥,公钥经过一系列哈希算法及编码算法就得到了比特币中的地址。因此地址其实是公钥的另一种表现形式,可以理解为公钥的摘要。椭圆曲线算法生成的公钥信息比较长,其压缩格式都有33字节,非压缩格式有65字节。地址是为了减少接收方标识的字节数。比特币地址的生成步骤如下:

区块链组成地址交易以及交易结构的验算图真相大白


1)生成椭圆曲线私钥与公钥。

2)将公钥通过SHA-256哈希算法处理,得到32字节的哈希值。

3)对于得到的哈希值,通过RIPEMD-160算法来得到20字节的哈希值——Hash160。

4)把由版本号 [2] +Hash160组成的21字节数据进行双次SHA-256哈希运算,得到的哈希值的前4字节作为校验和,放置在21字节数据的末尾。

5)对组成的25字节数组进行Base58编码,就可得到地址。

整个过程如下图所示。

区块链组成地址交易以及交易结构的验算图真相大白


我们要花费一个地址上的资产,以构造一笔交易,同时使用与这个地址对应的私钥签名。而如果要将资产转移到某个地址上,只需要转账给它的公开地址即可。

交易
在中本聪的白皮书里,比特币被定义为一个链式的数字签名串。每一位电子货币的所有者通过这样的方式将它转移给下一位所有者:对前一个交易和下一位所有者的公钥签署一个数字签名,并将这个签名附加在交易的末尾。收款人通过验证签名,就可以验证电子货币的所有者链条。

交易的运作图如下。

区块链组成地址交易以及交易结构的验算图真相大白


这类交易体系的问题在于收款人很难校验之前的某位资产拥有者是否进行了双重支付(双花)。通常的解决方案是引入可信的第三方如银行来对每一笔交易进行检验,以防止双重支付。而如果想要排除第三方中介机构,那么交易信息就应当被公开,且需要整个系统内的所有参与者都有唯一公认的历史交易序列。收款人需要确保在交易期间系统内的绝大多数节点都认同该交易是首次出现 。

1.交易结构
比特币的交易并不是通常意义上的一手交钱一手交货,而是转账。如果每一笔转账都需要构造一笔交易数据,那么显得比较笨拙。为了使得价值易于组合与分割,比特币的交易被设计为可以纳入多个输入和输出,即一笔交易可以转账给多个人。从生成到在网络中传播,再到通过工作量证明、整个网络节点验证,最终记录到比特币的区块链,这就是交易的整个生命周期。交易的本质是一个包含交易发送方、接收方、资产转移等相关信息的数据结构,其数据结构如下表所示。

区块链组成地址交易以及交易结构的验算图真相大白


区块数据的核心示例结构如下图所示。

区块链组成地址交易以及交易结构的验算图真相大白


区块由区块头及该区块所包含的交易列表组成。区块头的大小为80字节,由4字节的版本、32字节的上一个区块的哈希值、32字节的Merkle Root Hash、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数等组成。区块所包含的交易列表则附加在区块头后面。比特币网络约定每个区块的第一笔交易是coinbase交易,这是一笔为了让矿工获得奖励及手续费的特殊交易。

2.Merkle Tree

区块包含的所有交易首先都会通过Merkle Tree算法生成Merkle Root Hash并存储至区块头的数据结构里。Merkle Tree算法是

用来同步数据一致性的算法,它基于一组哈希值列表构建成一个树,树的根哈希值作为原始数据列表的摘要。Merkle Tree具有

以下特点:

1)数据结构是一个树,可以是二叉树,也可以是多叉树。

2)Merkle Tree的叶子节点的值是数据集合的单元数据或者单元数据的哈希值。

3)Merkle Tree的非叶子节点的值是所有叶子节点值的哈希值。

区块中所使用的Merkle Tree算法的原理如下图所示。

区块链组成地址交易以及交易结构的验算图真相大白


凡是路过的都是志同道合之友,感谢我们在这里相遇,希望以后在的区块链路上我们携手前进,共铸辉煌,同时:希望不管你有没有看懂,请在评论中写出你的想法。

添加新手交流群:币种分析、每日早晚盘分析

添加助理微信,一对一亲自指导:YoYo8abc

查看更多:

为您推荐