比特币的交易过程

一、区块链

区块链是比特币实现的一个基础技术,所以先讲讲区块链的概念~

简单的来说,区块链是一种“去中心”的分布式数据库。

传统的数据库像如下图一样,数据都存放在一个地方:

区块链是每个用户都存一份数据(大家的数据是保持一致的):

二、比特币的交易过程

比特币就是通过区块链技术形成的一个应用~

而它需要区块链存储的是用户与用户间的交易过程。

1. 主动发出比特币的用户用自己的私钥加密交易讯息,然后发布给到全网

    交易讯息形如:“账号abc给账号efg转100个比特币”

2. “矿工”接收一条条交易讯息,收满后开始挖矿

    2.1  “矿工”们收到很多交易讯息,一般会挑选交易额比较大的讯息组成一个“交易列表”进行挖矿

            因为一旦”挖矿“成功,每一条交易都会按交易比特币的多少来支付给”矿工“一定的”手续费“;

            又因为每一个区块一般大小限制在1M,这也限制了”矿工“自己挑选的”交易列表“的大小

            因此,”矿工“只能需要整理出一份能赚取最多手续费的”交易清单“

    2.2  挖矿的具体操作:

            对”上一个区块的Hash“+"交易清单"+”随机数“进行sha256签名

            因为交易记录要同步到全球需要一些时间,挖矿的速度不可以太快,因此比特币有一个”难度系数“

            

            它要求”矿工“不停去变换”随机数“知道生成的hash值小于一个预设的值,才算挖矿成功

            像下面这个第538499个区块,hash值需要前面19位都是0才算是符合条件

         

3.挖矿成功后,向所有比特币用户广播这个生成好的区块,用户们通过验证后就会把这个区块往自己本地存储的区块链上添加

 4.结束

   正常来说,上面的步骤走完已经顺利地完成了一次比特币的交易。

三、疑问

1.比特币怎么做到用户存储的区块链的一致性呢?

它的做法就是提高能够写入区块的“门槛”(就是不是所有人都有资格修改这条链),理想状态就是一段时间内只允许一个人写入

从上面的步骤不难看出,要获取往区块链写入信息的资格,必须先“挖矿”成功,而“挖矿”的难度是非常大的,全球大概每10分钟才有一个人挖矿成功。

2.万一短时间内,有两个人甚至多个人挖矿成功,并写入了新区块,怎么办?

遇到这种情况,所有用户存储的区块链会在这个“节点”上创建“分支”,然后看下一个矿工在成功在哪个分支上成功“挖矿”,那一条分支就会成为“主链”

原文地址:https://www.cnblogs.com/amiezhang/p/9536976.html