如题,另外这里有对比特币的讲解。
前世今生
密码朋克是一个组织,包含了全球最顶级的 IT 天才,精英。
前期, Adam Back 发明了 Hashcash, 使用了 POW。
Haber/Stornetta 提出时间戳方法保证数字文件安全协议。
戴维 发明了 B-money ,强调点与点交易和不可更改记录。
哈尔-芬尼 推出“加密现金”。
基于以上理论, 2008 年中本聪发布了一篇《比特币:一个点对点的电子现金系统》。
因为比特币综合了大量的技术,所以进行整合提炼后,形成了区块链技术。所以,区块链是很多技术的综合。
前景
资产:数字资产发行、支付(跨境支付)、交易结算
记账:股权交易、供应链金融、商业积分
不可篡改:溯源、众筹、医疗证明、存在性证明
点对点:共享经济、物联网
隐私:匿名交易
比特币
比特币是什么?
比特币是一种数字货币,在《货币论》中凯恩斯提出货币是可以承载价值的一般等价物。
所谓的一般等价物可以是任何东西,比如最早的贝壳后来的金银,银票再到后来的法币,如人民币、美元等。
所以等价物的存在并不是根据它本身的价值,而是取决于我们是否信任它,只要大家公认就可以充当一般等价物。
如果一串数字也可以作为货币,那么如果我们信任它是不是数字也可以成为一般等价物?
所以比特币只是一串数字,它目前不被国家承认,以后估计也不会被承认,但是它的价值来源于我们每一个比特币拥有者对它的信任,如果我们认为它有价值,那么它就有价值。
比特币的信任从何而来?
财产只受自己控制,无论哪一方组织都无法冻结
没有通货膨胀,因为中本聪就发布了 2100万 个比特币,以后不会发布新的
没有假钞
流通性好,全球可以点对点直接到账,无中间环节
比特币的去中心化
比特币依附于去中心化记账系统。
所谓的中心化就是,你和其他人的数据或者金钱都存放在一个组织或者机构内,这个组织和机构就是中心。
而去中心就是每个人都是中心,每个人都拥有所有人的账单。
比特币原理
账本如何验证
方案一
每个人都记录所有人的账本数目,也就是说每个人的支出和收入都进行网络广播。
假如账本中出现差错,那就按照少数服从多数的原则。
很明显这个方案的漏洞实在是太多了。
方案二
在此先介绍 hash 函数:
同样的原始信息可以用同一个哈希函数总能得到相同的摘要。
原始信息任何微小的变化都会使得摘要变得面目全非。
从摘要信息无法逆推出原始信息。
对原始数据进行 hash 得到摘要。如果大家的摘要信息相同,那就说明账本没有更改。
而 序号 + 时间戳 + Hash 值 + 交易记录 就形成了一个区块。
其中 序号 + 时间戳 + Hash 值 叫区块头。
比特币是每十分钟就进行一次记录。如果你要交易,那么加密是:
hash (原来的摘要 + 你的交易记录) = 新摘要
只要最新的摘要相同,就说明前面的所有的摘要都是正确的。
这样一个区块一个区块相互影响,就形成了区块链。而每次核对只需要核对最后一个摘要信息即可。
账户所有权问题
对比与现实生活中的中心化系统,比如银行。
如果有人盗刷我们的银行卡,那么银行就会通过我们的开户信息将钱追回。
但是去中心化之后,我们的账户就变成了一个地址,转账的过程就是从一个地址转到另一个地址。除此之外是没有其它信息的。
但是如何登陆到我的地址?如果地址相当于账户的话,那么私钥就相当于密码。
谁拥有私钥谁就是账户的使用者。
地址和私钥是非对称关系,从地址无法推出私钥,但是从私钥可以退出地址。
现在的问题就变成,如何在不泄露私钥的情况下证明我们是地址的所有者?
因为私钥一旦亮出,别人就有可能盗取比特币。
所以需要用到非对称的加密技术。
非对称加密技术:
首先对交易进行 hash 得到摘要。
用私钥对摘要进行签名。
签名过程:
对摘要和私钥进行运算后得到签名信息。
将签名信息在整个网络中广播,通过每一个节点进行循环广播。
节点收到广播信息后,用签名信息和付款方地址进行运算[摘要],只要最后的摘要和广播摘要验证后相同,那么就说明信息正确。
将账本记录,在进行广播。
签名是一个加密过程,验证是一个解密过程。
总结:
也就是说 摘要 + 私钥 签名后得到签名信息。
签名信息 + 付款方地址 得到 摘要。
只要上述两个摘要相同就说明信息正确。
什么是挖矿
由于记账是消耗资源的,而且如果人数超级多的话,由于网络或者其他客观原因,会导致账本不一样。
所以中本聪设计了如下的规则:
1.一段时间内只有一个人可以记账成功
2.通过解决密码学难题(即工作量证明,记账需要消耗资源)竞争获得唯一记账权
3.其它节点复制记账结果。
所以解决密码学难题又被称为挖矿。
挖矿过程
上面的 hash 函数是
hash(上一次的摘要 + 账本记录集) = 某一次的摘要
中本聪为了增加难度设定了如下的规则:
hash(上一次的摘要 + 账本记录集 + 随机数) = 若干个零开头的摘要
我们知道,内容只要变化一点,摘要就可能变的面目全非,所以,所有的矿工就要找到那个随机数使得下一个摘要以规则中要求的零数开头。
那上面提到的交易记录集是什么?
首先会收集广播中还没有被记录账本的交易
交易的有效性验证(签名和验证)
添加一笔给自己转账的交易(挖矿奖励)
工作量证明
假设摘要的开头需要 18 个零,摘要是由十六进制组成。
如果要得到 18 个零,理论上是需要 16 ^ 18 次计算。要知道光的速度也就是 3 * 10 ^ 8 。
如果只是用自己的电脑计算的话,几十年都计算不出来。
共识机制
问题:
如果有多个节点同时完成工作量证明,使用谁的区块?
所以在此引入共识机制。
即只认可累积工作量最大的区块链。
比如有两人 A 和 B,在同一时间算出,分别向网络中广播摘要 A,摘要 B。
离 A 近的节点得到 摘要 A,离 B 近的节点得到摘要 B,所以产生分叉,后续有人从分叉 A 继续算,有人从分叉 B 继续算,结果分叉 A 先有人算出来,所以分叉 A 的累积工作量是大于分叉 B 的。
所以,分叉 A 被公认为主链,在公链池中得到确认。