简单比特币原理-区块链的相关应用

  • A+
所属分类:区块链
广告也精彩

简单比特币原理-区块链的相关应用

一.引言

比特币(英语:Bitcoin[注 2])是一种去中心化,非普遍全球可支付的电子加密货币[6]。比特币由中本聪(又译中本哲史)[注 3](化名)于2009年1月3日,基于无国界的对等网络,用共识主动性开源软件发明创立。截至2018年1月14日,比特币是目前市场总值最高的加密货币[7]。 任何人皆可参与比特币活动,可以通过称为挖矿[注 4]的电脑运算来发行。比特币协议数量上限为2100万个,以避免通货膨胀问题。使用比特币是通过私钥作为数字签名,允许个人直接支付给他人,不需经过如银行、清算中心、证券商等第三方机构,从而避免了高手续费、繁琐流程以及受监管性的问题[8],任何用户只要拥有可连接互联网的数字设备皆可使用。 关于区块链,几乎所有的技术在比特币之前都已经有了,但是在比特币之前,没有人觉得它能用,所以说比特币是区块链技术的第一个成功的应用,从某种程度讲,说比特币是第一个区块链并无不妥。

接下来以一个虚构的案例简单解释比特币的原理以及区块链技术的简单应用。

二.一个简单的案例

A,B,C,D,E五人现整租了一套房,他们之间经常有金钱上的往来,为统一结算,每个月期间产生的费用(水电气以及房租)以及其他资金借贷约定在月底统一进行结算。于是,为了记录费用,五人将日常支出记录在客厅的白板上。

有一天,A与B出门购物,A忘记带手机与现金,由B付了两人的购物款1000元(包括A的购物款500元)。于是B说,记到白板上吧,月底再一起付给我。所以,A在客厅的白板上记下:

  1. A需要付500元给B

类似的,白板记录的后方又添加了如下的一些记录:

  1. A需要付300元给C
  2. C需要付200元给A
  3. E需要付100元给B
  4. B需要付400元给D

谁都可以在白板上留下记录,但是有一天D的朋友来访,为了恶作剧,在客厅的白板上添加了一条记录:

  1. A需要付50元给D

幸亏A发现了这是一条虚假的记录,否则在月底,A就需要无缘无故的付给D多余的50元。为了防止类似的事情在此发生,记账的时候,每一条记录付款的一方需要在记录后方签名表示确认该条记录的真实性。 如下所示:(X's signature表示该人的签名)

  1. A需要付500元给B - A's signature
  2. A需要付300元给C - A's signature
  3. C需要付200元给A - C's signature
  4. E需要付100元给B - E's signature
  5. B需要付400元给D - B's signature
  6. ......

后面记录太多了,白板上已经记录不下了,于是他们决定使用计算机进行记账。但是在计算机上就不在能够使用手写的签名,一是在计算机上不方便进行手写,二是手写的签名在计算机上能够轻易的被复制伪造。所以在计算机上的签名应当是针对于计算机的数字签名。

数字签名手写签名一样要满足对应性的要求,也就是说,每个数字签名只能用作于与其对应的数字记录,不能用作于其他记录。 例如:

  1. A需要付500元给B - signature1
  2. A需要付300元给C - signature2
  3. C需要付200元给A - signature3
  4. E需要付100元给B - signature4
  5. B需要付400元给D - signature5
  6. ......

A需要付500元给B的数字签名signature1不能用作于A需要付300元给C的数字签名。虽然这两条付款记录的付款者都是A,但是付款的内容不一样,数字签名必须与内容严格对应,如果原来的内容发生了改变,则对应的数字签名应当失效。例如将A需要付500元给B改为A需要付501元给B,则对应的signature1应当失效。

数字签名一般采用哈希(hash)算法,哈希算法的实现有很多种,由于有部分哈希算法有缺陷,所以采用了SHA256的方式,在目前公开的资料上,还没有资料显示SHA256有缺陷。

SHA意思是安全哈希算法(Secure Hash Algorithm),256表示无论输入什么值,这个算法的计算结果都是一个包含256位数的二进制数。如果把A需要付500元给B输入SHA256函数,那么应该得到的结果转换为16进制应该为:

  1. SHA256("A需要付500元给B")=
  2. 833FC5A65F2A515DE43D05438D318B1E7E398C49653391BD313A3933BC4D17D4

如果改动一个字或者多加一个空格或者标点,对应得到的结果如下:

  1. SHA256("A需要付510元给B")
  2. =bf246871d12a9ebe43622e5ddb6d595e3edaf24bf471e6ad1361a4e7320dd151
  3. SHA256("A需要付500元给B ")
  4. =ba6750c7334f356a0525497a611f7e22af43e7808888be5fc0146e67f2c0d85e
  5. SHA256("A需要付500元给B.")
  6. =4e51b5dd3e7401ff05d4d27f83a34057140a3123af53e5961f9c50af700b235b

可以看到只要发生了任何改动即使是微小的改动,结算的结果也将完全不同,另外需要注意的是,只要该条记录的内容不变,通过SHA256得到的计算结果总是一致的。

SHA256函数有很多在线工具可以生成,详情可以参考:Hash在线计算

使用SHA256的计算结果作为每条记录的签名可以保证签名与记录的内容完全对应,但是,这还不够,因为数字签名与手写签名一样,除了需要满足对应性的要求,还需要满足可鉴别的要求。

可鉴别指的是,对于任何一个签名,比如B需要付400元给D对应的签名中必须能够判断这是B的签名而不是D或者其他人的签名。而SHA256是一个公开的函数,无论谁输入B需要付400元给D都可以得到相同的结果,那么如何使得数字签名拥有可鉴别的属性呢?于是他们想出了一个方法:采用非对称加密对SHA256的计算结果进行加密,把加密之后的结果作为每条记录的签名。

三.了解什么是加密

很多人喜欢用123456作为他个人的某些账号的密码,将每个数字加上2得到345678,这就是一种最简单的加密。而解密则是一个相反的过程,将加密后的结果每个数字减2就可以得到加密前的结果。加密和解密都用到的数字2称作为密钥,加密和解密可以理解为一个计算过程,而密钥则作为计算过程中的一个参数。计算机将需要加密的内容和参数一起输入到加密的算式中,就得到加密后的结果。由于加密和解密使用的是相同的密钥,这种加密方法称作为对称加密

而在非对称加密中,加密和解密使用的是不同的密钥,如下所示:简单比特币原理-区块链的相关应用加密时用到的密钥称为私钥,私钥不能公开,只能加密方自己知道,解密时用到的密钥成为公钥,公钥可以将加密后的内容解密得到加密前的结果。公钥是将私钥输入某个算式计算得出的,通过私钥可以计算出公钥,但是通过公钥不能计算出私钥。简单比特币原理-区块链的相关应用

接下来看看使用非对称加密是如何使得签名变得可鉴别:

  1. A需要付500元给B输入SHA256函数,其中A需要付500元给B称为原始记录,将原始记录输入函数得到的值称为哈希值,也就是:SHA256("原始记录")=哈希值。
  2. A使用他个人的私钥对哈希值进行加密得到加密后的哈希值。加密后的哈希值就是A对于这条记录的签名。其中,私钥可以是一个包含256位的2进制数,对其加密可以理解为,将私钥和需要加密的内容输入某一个函数经过复杂的计算得到一个数值的过程。
  3. A将这条记录、加密后的签名以及公钥公布出来,这样任何人都能够通过A的公钥对A的签名进行验证。 验证过程如下: 简单比特币原理-区块链的相关应用 如果哈希值1=哈希值2,则可以认为:
  4. 这个签名是针对这条记录的,因为如果是不同的交易记录,则通过解密后得到的哈希值1不会等于通过将原始记录进行SHA256计算得到的哈希值2。
  5. 这个签名是A的,因为如果不是A的签名,则无法通过A提供的公钥进行解密得到哈希值1。
  6. 接受到的记录与原始记录相同,没有被篡改,证明:

Because:

SHA256("原始记录")=哈希值

解密(加密后的哈希值)=哈希值1

SHA256("接收的记录")=哈希值2

哈希值=哈希值1

哈希值1=哈希值2

Result:

哈希值=哈希值2

原始记录=接收的记录

类似的,付款方将其交易记录放入SHA256函数进行计算得到哈希值,然后使用自己的私钥对哈希值进行加密,其他人根据记录内容,付款方的公钥就可以判断这个签名是否对应于内容是否是付款方的签名,现在这个账本可以正常运作起来,但是还是有很多的漏洞,只适用于小范围的使用。

四.关于Bitcoin

Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org

A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

2008年11月,网络上出现了一篇署名为中本聪(Satoshi Nakamoto)的文章,其标题翻译为:比特币,一种对等式电子现金系统。这篇文章描述了如何使用点对点网络(peer-to-peer network)来构建一种记账式电子交易系统,2009年1月,比特币正式上线,出现了比特币钱包等客户端软件,人们可以使用比特币钱包进行转账和接收比特币。所以,我们可以基于前面的案例中的简易的电子记账本,进行相应的改进,就可以得到一个简单版的比特币交易系统。

五.改进记账系统

  1. 将元改为BTC,将需要付改为支付,改进之后,只要发出这个消息,自己的签名以及自己的公钥,付款方的账户就要减去X个BTC,收款方账户上将增加X个BTC,这要做的目的就是为了防止月底找不到人。
  1. 修改之前:
  2. A需要付500元给B - 使用私钥加密后的签名1
  3. A需要付300元给C - 使用私钥加密后的签名2
  4. C需要付200元给A - 使用私钥加密后的签名3
  5. E需要付100元给B - 使用私钥加密后的签名4
  6. B需要付400元给D - 使用私钥加密后的签名5
  7. ......
  8. 修改之后:
  9. A支付500BTCB - 使用私钥加密后的签名1
  10. A支付300BTCC - 使用私钥加密后的签名2
  11. C支付200BTCA - 使用私钥加密后的签名3
  12. E支付100BTCB - 使用私钥加密后的签名4
  13. B支付400BTCD - 使用私钥加密后的签名5
  14. ......
  1. 需要有一种方法能够确认付款方是否有足量的比特币进行支付,付款方有足够的BTC支付,才能确认这笔交易。银行等金融机构能够通过中心化的清算系统非常方便的查询账户余额,但是中本聪设计比特币交易系统的初衷就是消除交易对于银行等金融机构的依赖,一方面是银行等金融机构会在交易之中收取较高的手续费,二是银行等金融机构也会有倒闭破产的风险,在遇到严重的金融危机时,不能保证交易的正常进行。如果像银行一样引入一个专门的系统记录账户的余额,相当于建立了一个中央管理机构,这不符合中本聪去中心化的目标,注意,中本聪论文标题中的Peer-to-Peer表明比特币网络中的所有节点的地位都是对等的,都能履行相同的职责,不存在谁优先于谁,也就是不存在一个管理机构来管理这些节点。那么如何确认付款方有足够的BTC?比特币网络的解决方案是:每笔交易都必须以之前的交易作为基础。 比如有以下交易记录:
  1. (1)A支付500BTCB - 使用私钥加密后的签名1
  2. (2)A支付300BTCC - 使用私钥加密后的签名2
  3. (3)B支付200BTCD - 使用私钥加密后的签名3

交易(3)成功的前提是,在这笔交易之前,必须有人支付给B大于或者等于200BTC,且这部分BTC没有被使用过,在上面的记录中,由于在(3)之前,有这么一条记录(1)A支付500BTC给B,所以(3)符合要求,相应的支付消息改为:A支付500BTC给B -> 支付200BTC给D。支付时,A将这条支付消息,A的针对这条支付消息的数字签名,A的公钥一起发给B,B收到这条支付消息后,发现这条消息中的前一个数额为500BTC,后一个数额为200BTC,前一个数额称为这笔交易的输入值,后一个数额称为这笔交易的输出值,输入值>=输出值,则可以确认A有足量的比特币进行支付,之后,将这条支付消息输入SHA256函数获得哈希值1,并用公钥对A的数字签名进行解密得到哈希值2,哈希值1=哈希值2,则B可以确认,A的签名有效,支付成功。

以上有两点需要注意: (1). 如果A支付100BTC给B,B支付200BTC给D,也就是输入值<输出值,这时,B需要添加一条支付给B的支付消息,例如:假设之前有这样一条记录C支付100BTC给B,则相应的支付消息改为:C支付100BTC给B+A支付100BTC给B->支付200BTC给D。 (2). 如果C支付100BTC给B+A支付100BTC给B->支付150BTC给D,100+100>150,也就是输入值>输出值,这样该如何处理?比特币网络中将付款方将支付后剩余的金额作为找零支付给自己,也就是说,上面的支付消息应该改为C支付100BTC给B+A支付100BTC给B->支付150BTC给D+支付50BTC给B,先前的交易记录用作转账时,则是把交易记录中的金额一次性用光,因为单笔交易记录作为一个整体,不可拆分

  1. 交易双方使用账号进行交易,由于现实中重名的人很多,所以交易双方账号的唯一性也在考虑之中。账号是通过将该人的公钥输入某个函数计算得到,账号一般是包括34个字符的字符串比如:18P7XkKt2kVtqgdFR1hcKsgoLmqyT3TEE2。

在blockexplorer中我们可以查看到所有的比特币交易,比如:简单比特币原理-区块链的相关应用解释: 图中左侧是付款方的账号,右边是收款方的账号,黄色高亮部分下方的交易记录表示账号1fo9tQdsb5QmU8hx2Pw8mMNqdp2CH9SVy收到一笔BTC转账交易,因为有这笔转账交易作为基础,后来才能将BTC转账给他人,也就是上方黄色高亮部分的交易记录。

5.关于转账记录的存储与维护,比特笔交易的记录不能只存在一台计算机上,因为每一条记录都代表资金,如果只存储在一台计算机上,该计算机出现故障,则整个系统将不能正常的运行。所以需要存放在多台计算机上,而这些计算机的由谁来管理和维护?由一个人或者专门的管理机构进行管理吗?但是谁能保证在巨大的诱惑或者巨大的威胁之下不对这些记录进行篡改呢。

比特币网络的解决方案是,每条比特币交易记录都要发送到网络上,让所有运行比特币客户端的计算机存储所有的比特币转账记录,这样,每一条记录都有很多计算机存储,不用担心记录缺失。但是,这样会出现三个一致性方面的问题。

第一个问题是:如何进行同步,有的计算机有时候没有联网,没有运行比特币客户端或者有时候处于关机状态,它们将收不到比特币网络发送的转账记录,这样不同计算机上的记录不一致,到底以哪一台计算为主,他们该如何记性同步?

第二个问题是:某个黑客可能会篡改一些计算机上的某一条或者多条交易记录,导致比特币交易记录不一致,甚至记录之间前后矛盾,从而使得比特币网络不能正常的运行,那么如何防止黑客的篡改?

第三个问题是:如何防止同一笔比特币收入被重复使用,比如有以下两条支付消息: (1).A支付500BTC给B -> 支付200BTC给D (2).A支付500BTC给B -> 支付200BTC给C

这两条消息几乎是同时发出,因为在网络上,消息传播时经过的路径不同,这样就会导致在网络上有的计算机先收到消息(1),有的计算机先收到消息(2),而先收到消息(1)的则认为消息(2)中的A支付500BTC给B是无效的,因为该条记录在消息(1)中已经使用过。这样不同计算机对同一条记录的有效性产生分歧,如果通过银行进行交易,则可以很容易解决这个问题。但是比特币系统的目的是为了消除对银行等金融系统的依赖,那么,如何解决这三个一致性的问题?

六.区块链

比特币利用区块链解决这三个一致性方面的问题,所谓区块链,是由一个个区块串联而成,区块中存储的是检查校验之后的交易记录,比特币网络仅仅认可和维护同一条区块链,也就是说,比特币网络上的所有节点,都存储着完全相同的一条区块链。简单比特币原理-区块链的相关应用

当新的交易记录放入新生成的区块,而且这个新生成的区块添加到区块链上后,这些新的交易记录才被比特币网络认可(Confirmed Transactions),过程如下图。简单比特币原理-区块链的相关应用

新区块由比特币网络上称作矿工的节点生成,矿工接收发送到比特币网络上的交易记录,逐个检查交易记录是否符合要求,比如检查对应交易的数字签名,每条交易的输入输出值等,接着,将符合要求的交易记录添加到自己正在制作的新区块中,当矿工成功制作好新区块,就将这个区块发送给网络上的各个节点,网络上的节点接收到区块后,检查这个新区块是否符合要求,如果符合要求,则将这个区块添加到该节点存储的区块链的末尾。这时,问题来了,比特币网络上有许许多多的矿工,每个矿工都能生成新的区块,所以在统一时间内可以生成许多新区块,假设这些新区块都不相同,但又是符合要求的,比特币网络只维护和认可一条区块链,比特币网络上的所有节点必须选择同一个区块并添加到区块链的末尾,但是很难制定一个选择的标准,至少不能根据时间的先后进行选择,因为节点分布在世界各地,需要考虑到网络的延迟,每个节点接收到的第一个新区块一般不同。

所以比特币网络采用一个巧妙的方法限制单位时间内生成的新区块的数量,如果每隔十分钟左右的时间,整个比特币网络只有一个矿工能够将其制作的一个新区块发布到网络上,就不需要进行选择,所有的节点将这个唯一的区块添加区块链上,这样可以保证所有的节点保存的区块链始终相同,这个巧妙的方法就是:当矿工把检查好的交易记录填入新区块时,还要求矿工做一个额外的工作,矿工成功的完成这个额外的工作后,才能将新生成的区块发布到比特币网络上。这个额外的工作,整个比特币网络上一般只有一个矿工能在10分钟左右的时间成功完成一次,这样,每隔10分钟左右的时间,只有一个矿工能将其制作的区块发布到比特币网络上。

这个额外的工作包含两部分: 第一部分:将新制作的区块所包含的内容(前一个区块的SHA256函数值+新区块的基本信息+新区块包含的所有交易记录)组合成一个字符串,每一个区块的SHA256函数值与其一一对应,区块的SHA256函数值就代表这个区块,如果第Y个区块包含第X个区块的SHA256函数值,则表示第Y个区块的前一个区块是第X个区块...简单比特币原理-区块链的相关应用区块链中,每一个区块都包含前一个区块所有内容的SHA256函数值,区块链就是靠各个区块的SHA256函数值将这些区块有序的串联而成。

第二部分:将第一部分得到的字符串,在这个字符串的末尾添加一个随机数,组合成一个新字符串

  1. 新字符串=前一个区块的SHA256函数值+新区块的基本信息+新区块包含的所有交易记录+随机数
  2. Example:
  3. SHA256(新字符串)=0101101100011001100110011010101101011011000110011001100110101011
  4.                                       0101101100011001100110011010101101011011000110011001100110101011
  5.                                       0011001101010110101101100100001101011011000110011001100110101011
  6.                                       0101101100011001100110011010101101011011000110011001100110101011

将这个新字符串输入SHA256函数,得到一个包含256位的二进制数,假如这个二进制数的前73位全是0,才算成功完成了这个额外的工作。这个额外工作的难度非常高,高到整个比特币网络中平均没十分钟只有一个矿工能够完成,因为SHA256函数每个输入值都对应一个输出值,而且每个输出值都是一个256位的二进制数,但每次运算的输出值到底是什么都是随机的,无法预测,所以,找到符合要求的随机数的唯一方法就是以最快的速度输入不同的随机数不停的试,所以假设要找到这样一个使得二进制数的前73位全是0的随机数,概率为1/(2^73),也就是平均需要进行2^73次SHA256计算,才能找到一个符合要求的随机数。当某个矿工找个这个随机数后,将随机数添加到新区块中,并把新区块发布到比特币网络上,网络上的所有节点收到这个区块后,将这个区块按照前面的规则组成新字符串,将这个新字符串输入SHA256函数,检查二进制数是否符合要求,如果符合要求后,再检查这个区块是否符合要求,交易记录是否符合要求等,如果一切都没有问题后,就将这个区块添加到该节点存储的区块链的末尾,因为只有一个新区块,所以避免了从很多区块中选择一个。

找到这个随机数纯粹靠运气,但矿工的运算能力越强,则运气越好,进行SHA256函数计算的速度越快,单位时间能够试算的随机数越多,就越可能最快的找到这个随机数,这个过程就是挖矿。挖矿比拼的就是设备的运算速度,为了运算速度,矿工不断升级自己的挖矿设备,最初使用的PC每秒大概能够进行60万次SHA256函数运算,之后使用安装有多个专业显卡的计算机,每秒能进行数亿次SHA256函数运算,显卡进行SHA256运算的速度大大超过CPU进行SHA256函数运算的速度,而现在使用专业的矿机每秒大概能够进行十万亿次的SHA256函数运算,而矿工会购买许多矿机组合进行挖矿,那么为什么矿工会购买这么多矿机?那是因为比特币网络对于矿工的奖励机制,矿工每制作一个新区块并发布到比特币网络上,矿工则会得到来自比特币网络12.5BTC(2017年),除此之外,这个区块的所有交易记录的所有交易费用也归这个矿工所有,2017年每个区块的交易费大约为2BTC,所以在2017年,每成功制作一个新区块,矿工将收入14.5BTC约为1,700,000CNY(2017年)。巨大的经济利益大大刺激了挖矿设备的发展,挖矿设备的升级使得整个网络的运算能力提高,运算能力的提高使得生成一个区块的速度可能不再需要十分钟,所以比特币网络为了维持平均每10分钟生成一个区块的速度,每两周调整一次工作难度,比如要求前74位全是0从而增加工作难度。

那么有没有可能两个矿工同时格子找到一个符合要求的随机数并且制作了一个新区块?答:可能,而且经常发生。对于这种情况,比特币网络是这样处理的,对于这两个区块,比特币网络选择将这连个区块都保留下来,并将这两个区块都添加到区块链的末尾,从而区块链出现了分叉,形成了两个支链,矿工也会保存这两个新区块,但是,在制作下一个区块时,矿工都是在自己先接收到的区块基础上,创建新区块,所以有的矿工先接收到区块1,有的矿工先接收到区块2,这样有的矿工就在区块1的基础上制作新区块,有的矿工在区块2的基础上制作新区块,如果新区块基于区块1制作,接收到新区块的节点将会放弃区块2,也就是说,区块链分叉,出现支链的话,网络上的所有节点只认可最长的那条支链,保证了区块链的唯一性。如果支链的基础上又同时出现分叉,那么较短的支链将被放弃,被放弃的支链上区块上的所有交易记录如果没有添加到主链上,则会被重新认定为未确认交易,等待重新加入到新区块中。比特币交易中,记录加入的区块有可能是支链上的区块,如果该支链不能变成主链,交易很有可能变成未确认交易,重新等待确认,所以,在交易记录所在的区块后方又添加了若干个区块后,才可以确认自己的交易记录真正的得到了比特币网络的认可。那么若干个到底是几个?对于小额交易而言,一般是1~2个,大额交易一般为3~6个。

现在,看区块链如何解决上面提到过的三个一致性的问题。

一、如何进行同步

所有的比特币客户端连接到网络上后会自动向周围的网络请求自己所没有的区块,检查无误后将区块逐一添加到自己存储的区块链上。

二、如何防止记录被篡改

当交易记录输入到区块中,且区块被加入到区块链中,则区块中的任何记录都不能被修改,对于区块的任何修改,都会改变这个区块的SHA256函数值,导致后面一个区块所包含的SHA256函数值与这个区块修改后的SHA256函数值不一致,使得这条区块链断链,这条区块链也就不再是比特币网络上最长的一条区块链,将不被认可和维护。那么篡改这有没有可能自己不断制作新区块并添加在断裂的区块链上使之成为最长的区块链?答:因为制作新区块需要完成难度很高的额外工作,只有篡改者所拥有的计算能力超过整个网络中其他节点的计算能力总和时,篡改者所制作的区块链的生长速度才可能超过现有的完整区块链的生长速度从而成为主链,这种可能性在矿工的不断加入以及矿工的运算能力越来越强的情况下微乎其微。所以,只要交易记录添加到区块中,并且区块在主链上,则这条交易记录就无法被篡改。而对于大宗交易,一般认定为在所在区块后添加了3~6个新区块,就可以放心的认定该笔交易得到了比特币网络的确认,无法修改或撤销。

三、如果防止同一笔BTC收入被重复使用

矿工制作新区块时,会检查放入新区块的每条交易记录的输入值是否在前面的区块所包含的交易记录中使用过,如果被使用过,则认为这条交易记录无效,不会放入新区块中。如果两条交易记录的输入值相同,则矿工只会认定其中的一笔交易记录有效,并只将其加入到新区块中,而只有放入到区块中的交易记录才是被比特币网络所认可的交易记录,才是被确认的交易记录,从而防止同一笔BTC转账收入被重复转账给他人。

以上所有内容就是比特币以及区块链技术的简易应用.

^_^Thanks for your reading!

  • 微信
  • 扫一扫
  • weinxin
  • 微信公众号
  • 扫一扫
  • weinxin
广告也精彩
宽松衬衫
迷你蓝牙音箱
多功能折叠刀具
一步裙
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: