区块链和比特币初步了解

最近这几天区块链被再一次提到了风口,这次不一样,xxx代言,xxx支持的,作为一个IT人,应该了解下。而且不能太粗略。

 

一、先过一些基本概念

区块链和比特币

首先这是两个概念,区块链是技术范畴,比特币更像金融范畴。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。比特币是一种P2P形式的虚拟的加密数字货币。

一句话:比特币不是区块链,它只是区块链技术的一个具体应用。

 

中本聪

这里要了解这个人,因为这一切的起源就是他的一篇论文。比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。比特币就是根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。

 

数字指纹

计算机存储的信息是2进制的,任何信息,都可以转化成2进制,那一串串二进制就可以称为数字指纹。但是会发现,这些二进制长短不一,且可以简易解析出原始内容,我们需要利用一些算法加密并统一长度表示,于是有了hash(哈希算法)。可以将一串信息加密成固定长度的字符串,且不可逆向反推原始内容。

SHA算法(Secure Hash Algorithm)从1993年发布,一直到2015年发布第3代。比特币用的是第2代算法,简称为SHA-256算法,由这个算法生成的指纹长度固定为256比特。

 

加密算法

对称加密:加密的秘钥和解密的秘钥一样。

非对称加密:加密的秘钥(私钥)和解密的秘钥(公钥)不同。

看到一个例子,很好诠释了非对称加密:

基于一个规律:任意一个三位数字乘以91,得到的结果再乘以11,最终得到的结果一定是原始三位数写两遍。

那么这个例子,私钥就是91,公钥就是11。或者反过来也一样。解密方法就是乘以11的结果取后三位。

比如:

1、原始数据123,

2、通过私钥加密123*91=11193

3、通过公钥解密11193*11=123123,取后三位得到原始数据

 

椭圆曲线算法

比特币采用的非对称加密算法:“椭圆曲线算法”,简称为ECC算法。记账过程如下:

一个私钥几乎可以生成无数个不同的对应公钥,也就意味着可以生成几乎无数个不同的对应账号。谁掌握了私钥,谁就是账号的主人。在比特币网络中,私钥是动用账号中比特币的唯一凭证。

 

区块链

可以理解成一个不可篡改的数据库,本质是数据库,只不过很难改动其中的内容。为什么?因为这个数据库记录数据是通过“去中心化”的方式记录的。传统记账方式,有一个总账本,里面记录所有的来往,这样万一总账本出问题,那记录就没了。去中心化就是这个总账本是“分布式”存在多个地方。如下图,左侧是中心化,右侧是去中心。

 

区块

区块本质是一份一份数据,需要被记录的数据。如何把这份数据记录到网络,就是挖矿。每一份数据被称为一个“区块”,这些区块每一个都有唯一的编号,在比特币系统中,编号被称为高度(height),这些编号就是自然数1、2、3……一直往下排,不中断、不重复。

 

第一个区块

第一个区块是由区块链的发明人中本聪亲自创建的,那是北京时间2009年1月4日,在芬兰赫尔辛基的一台小型服务器上,第一个区块诞生了,这也被称作“创世区块”(genesis block)。在这个区块上,包含的主要信息是:

区块高度:0

The Times 03/Jan/2009 Chancellor on brinkof second bailout for banks

(译文:《泰晤士报》2009年1月3日头版文章标题:财政大臣面临第二次为银行提供紧急救助的窘境)

“某账号”获得50比特币奖励

 

其他区块格式

除去第一个,从第二个区块开始,以后每个区块就必须严格按照比特币系统的规则来创建了,必须至少包含如下信息

1、前一个区块的数字指纹(一个256位的二进制数,且前72位必须全部为0)

2、固定信息

3、收到的交易记录

4、一个随机数(nonce)

通过1、2、3、4个条件作为输入,不停的HASH计算,最后得出一个新的区块的数字指纹,同样,需要是一个256位的二进制数,且前72位必须全部为0。

 

挖矿

可以理解为通过大量运算,生成有效比特币的过程。

 

块链

块链是一个按时间顺序排列的比特币交易公共记录。块链由所有比特币用户共享。它被用来验证比特币交易的永久性并防止双重消费。

 

二、再问一些问题

为什么记录不可修改?

因为每次节点生成是需要3个东西:

1、节点信息

2、上一个节点编号(HASH值)

3、算力

这里关键是上一级HASH值,因为HASH是不可逆的加密编码方式,所以如果想伪造记录,基本不可能,除非你把所有历史记录全部篡改,显然不合算。

 

如何挖矿的?

在程序猿世界,应该是如何计算出节点值的。其实是依据3个条件,如下:

1、工作量证明函数

2、区块

3、难度值

工作量证明(Proof Of Work,简称POW),简单来讲就是证明你完成了某一项工作。挖矿就是计算出工作量证明函数的解,其实就是不停的求HASH,输入不同的n,计算hash(n),穷举尝试,直到符合条件的HASH值出现。

 

账本如何同步?

比特币网络中的所有电脑都只认可唯一的一个账本,任何一台电脑在接入比特币网络时,首先要同步这个唯一的账本。从相邻的节点上获取最新的账本。

 

什么是双重支付/双花支付/双重消费?

这个问题其实是在电子货币之后产生的,传统货币不存在这个问题,因为你买东西,钱顺手就给对方了。但是电子货币可能就有问题,你可以拿着电子货币先和A买了一个东西,信息同步需要时间,B还没收到信息,这时候再和B买东西。这就是双重消费。

如何避免呢?区块链规定有一个主链,就是节点最多的那条链,比如,你和A交易产生一个分支,又和B交易,又产生一个分支。然后A、B各自给全网节点同步信息,然后发现太坏了,居然一个货币交易了两次,只能有一个作废了,就是51%的节点记录认可的是合法的,另一个不合法。

 

比特币网络

“比特币网络”是按照比特币P2P协议运行的一系列节点的集合。位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。

 

三、再讲一些操作

比特币网络有哪些类型的节点

 

如何成为一个节点

 

概念太多,一篇有点写不完,下篇继续吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章