wanjun-notebook

资料来源:比特币和区块链啥原理?矿机挖矿咋回事?李永乐老师讲比特币(1)

https://www.bilibili.com/video/av45247943/

此文章为视频内容的梳理归纳,仅供交流学习使用。

--------------------------------------------------------------------------

一、比特币

1、背景

   比特币是一种基于密码学的电子货币(数字货币),由网络极客中本聪(此人真实身份至今不明)于2008年11月1日在网络上提出。他在文章《比特币:一种点对点的电子现金系统》现被人称为“白皮书”)中提出了一种去中心化的电子记账系统。

*记账:记录交易记录。

*中心化的记账系统:由银行来进行记账。

2、去中心化的电子记账系统

  去中心化地记账就是说,每一个人的账本都可以让别人看,是公开的。例如,A给B支付了10BTC(比特币),要把账单广播给所有人,同时在账本上记录。而账单打包成一个块,就成了区块。一个区块大小大概一兆,可存放大概4000条左右的交易记录(取决于每条交易记录的大小)。而各区块连接起来,便成了区块链

  有了这个系统之后,便引出了几个问题:

(1)这个账单以谁为准。每个人都可以记账,而由于网络的延迟,每个人的账单顺序可能是不同的,那么该以谁为准呢?

(2)问什么要记账。凭什么我要花费我的电脑资源记录与我无关的账目?

(3)如何防伪、防止篡改。例如,B广播说A支付给他10BTC,但其实A没有,怎么办?之前的交易记录被人改掉,这又怎么办?

(4)如何防止双重支付。一个人同时给两个人支付10BTC,但他其实一共只有10BTC,怎么判断并处理?

(5)如何进行保密。信息都是公开的,那别人不就可以知道你有多少钱了吗?

  此处暂时只研究前两个问题:以谁为准、为何记账?

3、为何记账记账的奖励

  每个人都可以记账,而记账有相应的奖励:

1.手续费的收益。A给B付10BTC,同时要多付一点手续费给打包者,即记账人。事实上用银行卡支付也有不低的手续费。若用比特币,则手续费较低。

2.打包奖励。每十分钟打一个包。第一个四年给打包者奖励50BTC/包,之后每过四年奖励金额减半,即第二个四年奖励25BTC/包,第三个四年奖励12.5BTC/包,以此类推。

*如果一直打包,收益为:50(奖励)×6(每小时可以算6次)×24(一天24h)×365(一年365天)×4(4年为一期)×(1+1/2+1/4+...)(每期的奖励权重)≈2100万(BTC)

4、以谁为准:工作量证明

  每一个参与的用户都要做一个很难的数学题,做出来的人有权利打包。这个数学题是人脑无法计算的,只能逐个数代入去试,此过程称之为挖矿。显然,挖矿靠的不是聪明,而是CPU运算速度。

*所以才要买矿机啊(。

 

二、挖矿原理

1、哈希函数(数字摘要、散列函数)

通过哈希函数,我们可以把一个字符串转化成一个摘要的形式(相当于内容的压缩)。例如,有一个著名的哈希算法是SHA256,输入一个字符串,不管字符串具体是什么(无论是字符串“apple”还是一个10G的电影),函数会输出一个256位的二进制数。这个二进制数没什么规律的,而且输入改变一点点,输出每一位都有可能变化。

哈希算法的特点是正向计算容易,反向计算困难。例如哈希函数为y=f(x),知道x,代入函数很容易可以算出y,而知道y要算出x却是几乎不可能的,x的值只能逐个代入尝试。挖矿其实就是基于SHA256的。

2、具体原理

  前面说到,每一个想记账(接块)的人都要算一个数学题。而这个数学题是什么呢?

  首先,解题需要一个字符串。字符串的内容很多,主要包括:

(1)前块的头部。每一个区块除了信息(即账单)其实还有一个头部。而“前块”是指区块链当前最末尾的区块,记账人想将新区块连接到这个前块后面。

(2)你已经打包好了(等待接块)的账单信息。

(3)时间戳。

(4)一个随机数。

  然后对字符串做两次SHA256运算,即Hash=SHA256(SHA256(字符串))。改变随机数的值,使得结果的前n位必须是0。如果满足这个条件,则获得打包资格。将算出来的Hash作为新块的头部,联合你记录的账单信息一起,接到区块链末端。值得注意的是,每个人的字符串中的前块虽然相同,但是打包好的信息、开始时间(即时间戳)以及其余没有提及到的字符串内容都有所不同,从而导致每个人的计算难度不同。

3、难度的设置:n的确定

  由于哈希函数不可能反算,只能随机尝试,每一位出现0的概率和出现1的概率各占50%。前n为同时为0的概率是(1/2)n。因此,n越大,难度越大。而我们需要调整n的大小来保证每10分钟出一个块。如何调整?

  假设世界上有1万台矿机,每一台的计算能力为14T/s,即每秒可计算14T次哈希运算(1T=1012)。则每10分钟的总运算次数为:1.4×1013(每秒运算次数)×10000(矿机数)×600(10分钟600秒)≈8×1019(次)。前n为同时为0的概率是(1/2)n,则需要计算的次数为2n次。而266≈8×1019,因此,n应设置为66。

分类:

技术点:

相关文章:

  • 2021-09-02
  • 2021-06-28
  • 2021-10-22
  • 2018-01-17
  • 2021-08-27
  • 2021-05-26
  • 2021-08-31
猜你喜欢
  • 2021-06-12
  • 2021-04-25
  • 2021-04-02
  • 2021-12-26
  • 2021-11-01
  • 2021-08-29
相关资源
相似解决方案