首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

史上最易懂的比特币原理介绍

“账本”——理解比特币的基础

比特币为何有去中心化的特点?

想象现实社会,如何证明你有多少资产?必须有一个中介机构(比如银行),用其信用证明你有那么多钱,在现在的社会,讲究的是一个“现有持仓的概念”,而比特币,讲究的是“交易记录的概念”。

什么意思呢?

从比特币诞生至今,每一笔交易记录都被记录了下来,记在了一个大大的“账本”中,假设只有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条(翻倍),那么在新的规则下,你得到的是——比特币现金!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111G0881B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券