当前位置: > 财经>正文

比特币区块链详解 黄金放保险箱安全吗现在还能用吗知乎

2023-08-23 18:26:20 互联网 未知 财经

比特币区块链详解

两年前比特币火爆的时候写了篇详解,但是咱不屑追那热度,现在翻出来就趁不火的时候发文。(心底泣血,当时忘了发(´Д`))

区块链其实就是个账本(英文名叫ledger,你跟人聊区块链,如果可以说一句其实区块链就是个ledger,立马可以让人虎躯一震)。在区块链技术以前,账本有用的前提是信任。为什么银行给你打印出来的收支记录你相信?因为你信任银行。为什么你刷一下信用卡,商家就信你付钱了?因为商家信任给你发卡的银行。

但是银行系统真的这么可信吗?如果真的可信就不会有信用卡被盗用,账户被黑,或者次贷危机了。老婆为什么相信老公没存私房钱?难道是因为老公诚实可靠吗?当然不是,因为所有的工资奖金都直接打到银行卡里面,而银行卡的唯一密码掌握在她手里,你看,只要制度过硬,不需要信任。

区块链最大的特点就是用技术规则代替信任,让所有交易都可以被技术确认,而不需要你信任任何人或者组织。

首先帮助大家回忆一下账本是什么东西,就是记录谁给谁多少钱:

招商钱庄 给 贾三爷 4.6 元

2. 贾三爷 给 令狐五爷 2 元

3. 贾三爷 给 甘夫人 2.8 元

4. 贾三爷 给 甘夫人 1.45 元

5. 甘夫人 给 招商钱庄 8.75 元

……

这就是账本,记账用的。这东西好用啊,想想如果一帮朋友每天中午出去吃饭,今天你欠他几块,明天他欠你几块,每天都得找零钱,也是非常的不方便,要是你们到月底结算一下,一次付清,谁欠多少就补多少,亏多少拿多少,那不就很方便了嘛。

这当然不错,可是问题来了,到年底贾三爷一看欠了60多块,跑路了,怎么办?有人说政府监管啊,舆论监督啊,银行履行职责啊,其实最好的办法就是不借给他那么多啊,在一个理想的金融系统里面,你有多少才能花多少,是不是就没有可能欠好多钱跑路了呢?在这样的系统里,每个人有多少钱,每个人所有的交易,收入和支出都知道,那么他还剩多少,能花多少,就一目了然了。

假设上面在账本里面提到的,招商钱庄本来有100块、甘夫人本来有1块、贾三爷本来有1块、令狐五爷本来有1块,那么他们之间相互交易非常清晰,当贾三爷给甘夫人1.45元时,由于前面三次交易贾三爷余额只有0.8元,无法支付1.45元,所以交易就不成立,就绝对不会出现贾三爷欠钱庄60亿的事情了,sorry,60 块。

再仔细想想,从账本记账角度其实这些人之间的收入支出其实跟人民币元没什么关系,可以是任何单位的货币。理论上如果世界上所有人都用这个金融系统,就不需要人民币或者美元这类东西了。在这样的金融系统里面,这些交易记录就是Bitcoin。

聪明人又想到新问题了,谁来保证账本的每条记录大家都认账呢?令狐五爷写上一条贾三爷给令狐五爷2元,贾三爷说没有这回事啊。这怎么办?怎么才能保证每个人添加的记录都是本人发起的呢?这个就有点技术难度了,不想了解技术细节,只想吹牛逼的时候显摆一下的,只要记住“所有交易都使用加密数字签名来保证是本人发起的交易请求”就可以了。有好奇心的猫可以继续看下面的内容,什么是加密数字签名?

为了保证每条记录都是本人发出来的,就需要在每条记录上签名,但是在数字世界里,无论你的花体字多么复杂,还是可以很容易被复制的,所以密码学家发明了一套机制,就是公钥密钥签名验证,每个人都发给一对钥匙,一个是公开的公钥,谁都可以看见,另外一个是私有的密钥,你自己悄悄藏着。就好比你在瑞士银行苏黎世分行的348号保险柜有个保险箱,世界上只有一把钥匙可以开这个保险箱,这个保险箱的位置就是公钥,谁都知道在哪,唯一的钥匙就是私钥在你手里,只有你用私钥打开保险箱才能用里面的机器发出一条消息,那么就可以保证从这个保险箱发出的所有消息都是你亲自发的。

数字签名是这样的:

你拿着私钥,和准备发的消息,送给签名机器,获得一个数字签名:

消息 + 私钥 -> 签名机器 -> 数字签名

2. 任何人拿着你的数字签名,和收到的消息,以及你的公钥,就可以去验证机器上看看这消息是不是真的是你发出来的:

数字签名 + 消息 + 公钥 -> 验证机器 -> 真的/假的

通过数字签名就保证了账本里每个记录都是本人发的,并且所有人都可以验证是这个人发的。

但是账本谁保管?放在云端吗?那需要所有用这个账本的人都相信云端绝对安全,但是我们相信吗?尤其是在Yahoo服务器被攻破,Target服务器被攻破,等等诸如此类的新闻的情况下,谁敢说云端就安全?所以,为了消除这个信任问题,每个人都有一个账本,记录所有的交易,每当一个人要发起给钱消息,他需要告诉所有人,他在什么时候给了谁多少钱。

新问题又来了,当你收到一条信息,你怎么知道是不是所有人都听到了一样的消息?更进一步,是不是所有人听到的消息都是按照同一个顺序?比如贾三爷告诉甘夫人他给了1.45元,甘夫人怎么能确认所有人都收到了这条消息并且同意这个交易?这个就是区块链的最核心问题了,有没有一个机制可以让所有参与的人都确信他们收到的消息跟其他人都一样?这个其实就是中本聪在最早的比特币文章中提出的区块链机制。

所谓区块,就是账本里的一部分交易记录,外加一个特殊的数字,使得这个区块的加密摘要结果前面有30个0。每一个区块还要包含上一个区块的加密摘要,这样就形成了一串区块,每个区块都依赖于上一个区块的结果,在这样一个链条里,你要改其中任何一点东西,都需要把之后链条上所有的东西都改一下,几乎是不可能发生的,除非你的计算能力比其他所有人加起来还大。

可能有人看了加密摘要有些晕菜,这是正常的,因为这个实在太专业。但理解区块链必须要先了解什么是加密摘要,有个叫SHA256的名字你可能在很多互联网产品或者网站上遇到过,但完全不懂是什么意思,或者以为是一个跟SNH48差不多的偶像团体。SHA256其实是一个很特殊的函数,叫cryptographic hash function,加密哈希函数。这个函数干嘛用的呢?就是给它一个消息,它可以产生出一个256位的数码,看着很像随机产生的,但是其实只有这个消息可以产生出来,随便改变一点点消息都会让这个数码摘要发生巨大变化,比如:

SHA256(“2016年1月30日,贾三爷给甘夫人1.45元。”)=

85ab2a7ba060140933fcb9b6520b95645b39e09eb88939e5b80db7a8c5941f19

SHA256(“2016年1月30日,贾三爷给甘夫人1.45元!”)=

8f5bc334769bb2239ff9188be1a98351385dc960499ed6c1b7964f9c0f2fd345

只改一个标点符号,整个摘要结果就完全变了。这个东西有个特点,给你这个摘要,你需要花好多个一万年才能倒推出来生成这个摘要的消息是什么。你只能一个字符一个字符的猜。举个例子,这个哈希函数就像一个鸡尾酒机器,你加入各种酒水配料,会混出来一杯鸡尾酒,哪怕多加一点点伏特加都会让酒的味道变化很大,而只喝混合好的鸡尾酒你却几乎不可能猜对所有的配料精确比例。

这个SHA256跟区块链是什么关系呢?上面说了,区块就是一些交易记录,这些记录再加上一个特殊数字,通过SHA256可以获得一个摘要,这个摘要的前30位恰好都是0。这个特殊的数字叫做工作证明,因为找到这个数字没有什么特别好的办法,只能一个一个的去试,穷举,因此得到这个数字证明了矿工们花费了很多计算量,才找到这么一个数字。只有拿到工作证明和交易记录,才能产生一个新的区块。而每产生一个区块,系统会给奖励给这个矿工n个比特币。这就是为什么老有人说挖币,跟挖鼻孔关系不大,其实是在用计算机不停的尝试哪个数字跟现在的这一堆交易记录组合在一起,可以让SHA256的摘要前面有30个0。这个过程其实有点像一个彩票游戏,一堆矿工在猜数字,谁先猜到就可以获得几个比特币的奖金,同时产生一个新的区块。

那要是两个或者多个人同时找到特殊数字从而获得了工作证明怎么办呢?比特币区块链的核心机制很简单,就是每个人都相信当前计算量最大的那条区块链,当两个区块的计算量一样时,也就是说同时新产生了多个区块链时,先几个都放着,然后看再下一次新的区块

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。