“账本”——理解比特币的基础
比特币为何有去中心化的特点?
想象现实社会,如何证明你有多少资产?必须有一个中介机构(比如银行),用其信用证明你有那么多钱,在现在的社会,讲究的是一个“现有持仓的概念”,而比特币,讲究的是“交易记录的概念”。
什么意思呢?
从比特币诞生至今,每一笔交易记录都被记录了下来,记在了一个大大的“账本”中,假设只有A,B,C三个人,每个人初始有100比特币,他们之间的历史交易记录如下:
那么假设现在C要给A转移100个比特币,系统如何运行呢?
系统根据过去所有的交易记录,测算出C可用90个比特币
100>90 交易无法成功
当然,如果是转移80个比特币,80
比特币的核心,是交易记录。
“HASH函数”——比特币的根基
数学上常常有个现象,正运算很简单,逆运算很复杂:
23*29=667,但逆运算667/29运算量却大很多
那么Hash函数将这一特点发挥了极致,正运算很简单,逆运算的计算量却相当大。
什么意思呢,我们计Hash函数为H(X),那么知道X算H(X)很容易,知道H(X)倒推X却相当难,没有简便方法,只能枚举。
本文所说的hash函数,指的是hash256函数,函数生成的数是一个256位的二进制数。
所谓区块链,只是将整个交易的大大的“账本”,按时间顺序放在不同的区块中,每一个区块有一个密码,每一个区块的密码写在下一个区块的开头。每个区块链最多放2400条交易记录。
那么假设现在C是最新的区块,我们有最新的交易记录,上个区块B区块的密码,那么密码C是如何确定的呢?
我们找到密码C,是的C区块(密码B,在C区块的交易记录,密码C)满足H(C)的前60位都是0。
要知道,密码C可以是任意数,密码C的任何微小的改动,整个区块C的hash值就会发生巨大的改变,结合前文讨论,没有简便算法,只能枚举,因此找密码的过程拼的就是计算机的运算能力。
那么,为了奖励辛辛苦苦找到密码的人,我们允许他他找到密码的区块开头加一条特殊的交易:获得50个比特币!,这个行为,叫挖矿。
可以看出,比特币世界的全部增量之来源于挖矿的奖励,但是比特币规定,挖矿的奖励随时间递减,一开始是50,然后是25,……目前是12.5。这种幂次递减的特性能保证比特币总量是有限的。
这些区块链起来,就是我们的总“账本”了。
如何保证不被造假?比特币最天才的想法——proofof work
比特币是一个账本,每个持有比特币的人手中都有一份这样的账本,每当有交易产生就向全世界的人广播这条记录,大家在更新自己的账本,把你这条记录加进去。
那么,防止造假的核心规则是什么呢?:
当有两个以上的区块链出现时,我们相信长度最长的区块链。
原理就是,区块链长度越长,蕴含的计算量就越大,你造假是无法超过其他人的计算量的。
比如你造假想改变B区块的交易记录,那么整个B区块的hash值变了,你必须重新算一个B区块的密码,但是C区块的开头是B区块的密码也跟着变了,你必须又要重新算C区块的密码,等你算好之后,其他人已经算出D,E区块了,你的短的区块链将不被承认。
理论上要造假必须超过世界上其他人一半的运算力,这是不可能的,因此目前来看比特币是安全的,只要hash函数的不可逆特性不被破解。
TIPS:你肯定会问,一个区块链为什么只能放2400条交易记录,放更多不行吗?如果你能放4800条(翻倍),那么在新的规则下,你得到的是——比特币现金!
领取专属 10元无门槛券
私享最新 技术干货