比特币交易过程(3)

2018-09-13 14:30:00

农场游戏开发就找领创网络,下面解读:    

 (3)交易的过程。比特币是一个分布式系统,由于缺乏第三方权威机构,比特币

交易的有效性和合法性需要确认,比特币交易需要通过如下环节成交:

    ①创建环节:如甲方向乙方采购某商品,双方约定通过比特币进行支付,乙方向甲

方提供钱包地址,甲方根据乙方钱包地址创建一个比特币交易,需要注意甲方拥有这笔拟

转出比特币的私钥,一般情况下钱包存储着甲方用于交易的所有地址的私钥。

    ②签名环节:用私钥对这笔比特币交易进行签名,通常在发送比特币时,钱包软件

自动以该地址对应的私钥对交易进行签名。若为冷钱包,则可先创建一笔没有签名的交

易,再利用冷钱包进行签名;多重钱包则需按照事先约定由多人用多个私钥进行签名。

    ③传输环节:交易信息传播到比特币网络上,每个比特币钱包客户端都有多个比特

币同伴节点,交易信息通过同伴节点传输到比特币网络上,向全网公布本次交易,约10。

60秒广播至全球节点。上述三个环节都是在客户端执行,用户也可通过比特币钱包软件

提供的Create Transcation,Signraw Transact.ion,Sendsigm?aw3、ransaction等命令完成上述所说

交易验收、交易签名和交易传输工作。

    ④验证环节:每个全功能节点都可以对该交易进行验证,并将验证结果通过全网广

播。在交易传递到临近的节点前,每一个收到交易的比特币节点将会首先验证该交易,这

将确保只有有效的交易才会在网络中传播,而无效的交易将会在第一个节点处被废弃。每

一个节点在校验每一笔交易时,需要检查交易语法和数据结构是否正确、输入是否存在并

且没有被花掉(即这个钱还可用)、输入额度情况、输出是否小于输入、发送方身份等,

验证通过的交易存储在内存中。

    验证交易发送方身份是验证环节的一个重点,验证过程需要输入交易的scriptSig(签

名脚本)和输出交易的scriptPubkey(公钥脚本)等参数。比特币在交易中使用脚本系统

(script语言),与FORTH(一种编译语言)一样,script是简单的、基于堆栈的、并且从

左向右处理,它特意设计成非图灵完整,状态不必受其他条件限制。交易验证经常被形象

地描述为“解谜过程”或者“解题过程”,实际上是做了一个“验签”的工作,采用这种

机制,比特币交易验证工作非常高效、稳定。交易验证的“解题”过程如下所示:

    执行“输人脚本”(见图2.H)。因为脚本是从左向右执行的,那么先人栈的是“签

名”,随后是“公钥”。

    这样一串指令执行下来,就可以验证这道数学题是否做对了,也就是说验明了想要花

费“钱包地址”中比特币的人是否拥有对应的“私钥”。

    ⑧打包环节:经过交易验证的交易存储在内存里,等待进人区块,某个挖矿节点成

功获得记账权后,内存中的所有交易被打包写入该区块,系统全部产生一个新的合格数据

区块,并向全网公布这个消息,其他节点收到之后基于该区块开始新的挖矿工作。

    ⑥确认环节:该环节主要用于破解“双花”问题,交易被足够多的后续区块确认

后,此时即使甲方利用该笔比特币进行了新的支付尝试,记录这次交易尝试的区块所在的

链也很难取代最初区块所在的链成为比特币的主链,通常认为连续得到6个区块就能确认

这笔交易是不可逆转的了。根据比特币的设计机制,平均lO分钟左右生成一个区块,也

就是说一笔交易的确认需要60分钟,此时这笔交易被所有用户所认可,成为比特币账本

的一部分。对于投资者相较于支付宝几秒的交易过程,比特币交易所需的60分钟逊色不

少。这是直观上的感觉,实际上支付宝是基于银行系统进行交易的,银行系统完成一笔交

易的时间可能很短,但是确认一笔交易的时间却很长,收款方、发卡行、收款行以及银

联、清算总中心等中介机构还需要在当天工作日结束之后进行对账,只是这些对账工作对

于正常交易而言就如同透明的一样,所以用户以为已经完成的交易实际上并没有确认,有

些交易确认的时间可能超过几天,甚至多达几星期。若是跨境交易,那么涉及的机构会更

多,交易确认时间也会更长。不过现有的银行机构通过中心化的运作,采用各种风控防控

机制,使基于银行系统的支付看起来可以实时完成。比特币的表现要远远优秀于现有银行

系统,但是必须意识到客户需要更快的确认速度。

比特币账本记账过程

    中本聪设计了“区块链”作为比特币交易信息存储的载体,一段交易时间内得到记账

权的矿工被打包到一个区块中。区块是比特币存储的基本单元,比特币每一个数据区块记

录了神奇数、区块大小、区块头(Block Head)、交易计数、交易详情等五项内容,其中

比特币的神奇数“0xD984BEF”是区块之间的分隔符;区块大小反映了区块的实际占用空

间;区块头负责连接到前一个区块(父区块)并为区块链提供完整性;交易计数记录了区

块记录的所有交易的数量;交易详情则记录一段时间内发生的所有交易。为便于理解,通

常将区块分为区块头和区块体,区块体用于记录一段时间内发生的交易和状态结果。为区块结构(块头+交易详情)。

菏泽领创网络专注于农场游戏开发

相关内容