区块链与比特币
区块链
视频来源:区块链技术核心概念与原理讲解
前世
- Hashcash,使用了POW(工作量证明)
- 时间戳方法(保证数字文件的安全协议)
- B-money(强调点对点交易和不可更改记录)
- 加密现金
- 比特币:一个点对点(去中心化)的电子现金系统
区块链远不仅仅是比特币,是一系列技术的集合
为什么叫区块链
比特币系统里的数据是以一个个区块的形式存储,并通过哈希的方式把一个个区块连接起来,其中每个区块的区块头是序号,时间戳和Hash值,下面的内容是交易记录。
应用场景
资产:数字资产发行,交易
记账:股权交易,商业积分
不可篡改:医疗证明,存在性证明
点对点:共享经济,物联网(去除第三方降低成本)
隐私:匿名交易
比特币
比特币是数字货币和去中心化记账系统
为什么他能成为数字货币(相较于现金的优点)
- 财产只受自己控制(没有如银行的第三方)
- 无通胀(总额是固定的)
- 没有假钞
- 流通性好(可以全球点对点直接流通)
去中心化记账系统
中心化记账系统有个中央服务器(数据库),而比特币的数据不储存于中央服务器中,而存在于比特币网络中的每一个节点(电脑) 。
比特币原理(主要问题的处理方式)
- 账本如何验证?(哪一个账本是有效的)
- 所有权问题?(如何证明谁拥有货币)
- 既然记账会消耗资源,为什么记账?(挖矿-工作量证明)
- 以谁的账本为准?(共识机制)
账本如何验证
在中心化记账系统中,如果服务器的数据被篡改,由于只有一方有数据,基本没办法验证,所以去中心化记账系统安全性更高。
Hash
哈希函数:Hash(原始信息)=摘要信息
特点:
- 同样的原始信息总能得到相同的摘要信息
- 原始信息任何微小的变化都会哈希出面目全非的摘要信息
- 从摘要信息无法逆向推算出原始信息
验证原理
对账本进行哈希后得到摘要信息,然后将摘要信息和其他人的摘要信息进行核对,对比摘要比对比原始信息高效很多。账本增加新记录(第二个账本)之后,将之前账本的Hash值和当前账本作为原始信息进行Hash运算,如果此Hash值正确,说明所有之前账本的信息都是正确的。同时,第二个账本也会生成一个区块,所有区块串联的结构被称为区块链,每个节点在核对数据时只需要最后一个区块的摘要信息。
账户所有权问题
在现实生活中若发生盗刷等情况,可以通过银行核对个人信息来取消交易记录。而比特币系统是点对点交易无第三方,可以更好地保护个人隐私和安全。
前提
比特币账户是用地址(进制)来表示的,比特币是从一个地址转移到另一个地址,账本上不保存任何个人信息。一个地址有一个对应的私钥(类似密码)(注:私钥不可更改,不可通过地址推出私钥,但可通过私钥推出地址(两次哈希一次fun))因此所有权问题是在不泄露私钥的情况下来证明我们拥有某个私钥。
原理
非对称加密技术(交易签名)
对交易进行hash得到摘要,然后用私钥对摘要进行签名(为避免私钥泄露这一步应尽量在安全的情况下),在签名运算之后进行广播交易。
- hash参数为付款地址,收款地址和金额
- 签名参数为交易摘要,私钥,返回签名信息
广播交易
广播内容包含交易的原始信息和交易的签名信息,广播到周围节点,当验证通过之后,会将交易信息写入到账本中,之后会继续广播到附近已知的节点。
验证:验证签名信息是不是付款方对原始信息进行签名产生和余额是否足够。验证参数为付款方地址和签名信息,如果验证的运算结果是原始信息的摘要,则验证通过。实际上签名和验证是逆运算,签名是加密的过程,验证是解密的过程。签名由私钥发出被其他节点认证通过,所以账户的所有权是由私钥控制。
为什么要记账
记账是把交易记录,交易时间和序号等信息进行hash打包的过程,消耗计算机资源,在比特币里面,如果记账(挖矿)成功会有奖励(比特币),这个奖励就是比特币发行的过程。
挖矿-工作量证明(解决冲突)
- 一段时间内(与密码学难度互相影响)只有一人可以记账成功
- 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
如果以Hash(上一个Hash值,交易记录值),只要进行hash就可以记账成功,难度太低,因此为了提高难度,规定Hash(上一个Hash值,交易记录集,随机数)=000000adsxds,摘要信息要以n(n是提前规定好的)个0开头,由于hash值具有随机性,所以是否记账成功也有随机性,由于记账成功奖励很高,就把记账称为挖矿。
率先找到hash值的节点拥有唯一记账权,将交易记录集进行打包形成区块进入区块链中的节点获得奖励,其他节点只是复制账本。
交易记录集
收集广播中还没有被记录账本的交易
验证没有被记录账本交易的有效性
添加一笔给自己转账的交易(挖矿奖励)
共识机制
如果两个节点同时完成工作量证明,使用谁的区块?
- 每个节点只认可累计工作量最大的区块链,每个节点的行为都是独立的,2. 他们会选择延长最长链
(机制1和机制2有冲突吗?)
为什么要遵守以上协议
节点工作量只有在其他的节点认同才是有效的。
具体分析
主链:区块最多的链
由于广播需要时间,当两个节点A和B同时完成工作量证明时,当其他节点分别只收到a链和b链时(分别由链接a块或b快形成),都会认为此链是主链,在这条链上进行挖矿。当有节点两个块都收到时,会对比两个块的工作量,选择工作量最多的链作为主链,另外一个作为备用链保存,因为备用链可能会因为之后产生更多的块而成为主链,这时候出现了两条链形成了分叉
分叉解决
总会有一方抢先继续产生了工作量证明,然后把其区块链延长,由于机制二,所有其他链都会舍弃当前的短链选择此长链,分叉解决
由于网络不确定性,有的节点会先收到后面的区块再收到前面的区块,此时就会把区块放到孤块池里,直到收到前面的区块把他串联起来。
比特币把出块间隔设置为10分钟,其实是在更快的交易和在更低的分叉概率间做出了妥协。