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

比特币与区块链技术详解

最近比特币的价格大幅降低,区块链的热度同时在不断的增加。因此现在应该是聊聊这两个“奇怪生物”背后技术的好时机了。

我们先看看比特币的价格变化图:

图1. 从2017.11.27 到2017.12.25比特币的价格走势图

大家可能都知道比特币是一种虚拟货币,可以在互联网上被当做货币一样进行价值交换。如果深入了解一些的人也许会知道比特币是一种“去中心化”的货币,它的发行没有国家信用做背书,也没有中央银行作为货币发行机构。那么,我们为什么要有比特币?它又为什么收到了那么多人的期待?这些原因都可以在比特币的底层技术中找到答案。

其实比特币只是背后更大东西的“马前卒”,这个背后的庞然大物,就是“区块链”,英文名是“Block Chain”。因为有了区块链做技术支撑,比特币才有了独特的信用属性,又因为它是最早的虚拟货币,因此成为目前市值最大的虚拟货币也不足为奇了。下面一张图列举了目前10大虚拟货币:

图2. 目前市值最大的10个虚拟货币(来源:https://coinmarketcap.com/all/views/all/)

下面,我就给大家分析一下什么是比特币,以及什么是区块链。

了解比特币和区块链的最好方法就是:依靠一个拥有绝对信用的价值交换系统,并逐步通过降低信用等级最终达到一个不依赖信用,纯粹依靠系统来建立安全可靠性的全新交易平台

那么第一步我们就假设一个拥有绝对信用的系统。

有四个人,他们的名字分别是Alice, Bob, Jack以及Lucy。某一天发生了三笔交易:

Alice给Jack 300块

Bob给Lucy 500块

Lucy给Jack 200块

假设这四个人共同拥有一个账本,且一开始每个人在账本上都有1000块钱,那么经过每笔交易之后,每个人还剩下的钱数如下:

经过第一笔交易:

Alice: 700, Bob: 1000, Jack: 1300, Lucy: 1000

经过第二笔交易:

Alice: 700, Bob: 500, Jack: 1300, Lucy: 1500

经过第三笔交易:

Alice: 700, Bob: 500, Jack: 1500, Lucy: 1300

如果再有一笔交易发生:Bob给Alice 1000块钱。那么账目会变成:

Alice: 1700, Bob: -500, Jack: 1500, Lucy: 1300

因此Bob必须再向系统投入超过500块钱他才可以继续使用这套系统。

很简单吧?但是这套系统的运作机制取决于两点:

任何人都可以在账本上写下任何交易

每到月底大家都会进行一次“清算”

因此,只有依赖于系统中所有人的良好信用,这套系统才可以完美运作。

下面,我们会逐渐将“信用”抽离这套系统,并同时发明全新的机制来防止损害系统利益的事情发生。

第一步信用抽离如果有一个人在账本上乱加条目怎么办?

解决方法:所有支付交易必须要由支付方签字才能进行。因此需要一套“签名”系统。

第二步信用抽离如果有一个人老是借别人钱,当债台高筑时跑路了怎么办?

解决方法:如果一个人的账目金额在执行完特定交易时变成负数,则这笔交易将不会执行。

因此,到目前为止,我们的系统变成了这样:有一个公共账本,每一笔交易都将由支付方签字才能执行;如果支付方付不起某一笔交易,则这笔交易将作废。

听起来不错,貌似我们解决了所有的问题。但是事情远远没有这么简单,因为这时我们的账本是独立存在的,而如果谁偷了这个账本,或者在上面进行修改,那么其他人其实很难知道,特别是如果这个账本是在互联网上进行时,这时我们继续进行信用抽离:

第三步信用抽离如果这个账本被未知人士篡改了怎么办?如果账本在自然灾害中(例如火灾)被销毁了怎么办?

解决办法:将账本进行分布式处理,每人都拿一个账本,并不定时进行比对。

至此,这四个人依然能做出破坏性行为。

第四步信用抽离如果每个人都在自己的账本上书写交易条目,最后比对时发现不同,如何确认哪个人写的才是正确的呢?

解决办法:只有被“确认”过的交易才能进入最后的账本当中。这个“确认”代表了四种含义:

(1)每笔交易必须“广播”给所有人

(2)每笔交易必须有支付方的“签名”

(3)支付方必须拥有足够的钱

(4)每笔交易都有自己独特的ID

第五步信用抽离如果一个人硬是将一个只被他“确认”过的信息加入到账本中,如何保证这个行为被其他人发现?

解决办法:答案就三个字——“区块链”。具体的技术我们在下面会讲到。

因此,经过五步的“信用抽离”,我们建立了一套不基于“信用”的新型价值交换体系。而这只是一套框架,如果我们想在计算机中将这套方法实现,还必须说一下密码学的相关知识。

不对称加密——私钥(secret key, 简称sk)和公钥(public key,简称pk)

假设A是一个巨大的数字(e.g. 位数超过1000位),经过一套“密钥生成系统”,将会生成两个密码:私钥和公钥。

私钥,顾名思义就是私密存续的,它不可以告诉别人。而公钥则是公开的,可以让大家验证一笔交易的合法性。

用数学表达应该会更加精确和简练:(假设私钥为sk,公钥为pk)

密文 = f(交易ID,交易信息,sk)

验证合法性(真 / 假) = Verify(交易ID,交易信息,pk,密文)【如果为真则验证成功】

哈希密码函数(Cryptographic Hash Function)

哈希密码函数是一种可以将一串信息变成某个特定数值的函数。例如常见的SHA256就是将信息变成一串由256个0,1组成的字符串。它的强大之处在于只要对输入参数进行小浮动改进,那么结果将会有巨大的改变。因此反函数的求解就非常的困难,目前只能通过枚举法进行“暴力破解”。

图3. SHA256密码哈希函数的内部机理。

用数学表达式表达就是:

“信息” --> 0-1字串【非常简单】

SHA256(“信息”)= 010010100111000110101..... (共256位)

0-1字串 --> “信息”【异常困难】

SHA256(???) = 010010100111000110101..... (共256位)

因此有了这两个工具我们就可以深入的探讨比特币的内部运作机制了,并且我们还将为大家介绍区块链的具体含义。

关于比特币交易的特点:

每一笔比特币交易都将带有支付者的“数字签名”。

当这笔交易被其他用户确认后(运用公钥)即可成为“合法交易”,并入公共账本当中

每个账本都有一定量的交易(对比特币来说,一个账本就是一个Block,其中的交易量不会超过2400条)。而我们经常听到的“矿工”(Miner)的工作就是寻找一个数字【称为“Proof of work”】,并将这个数字加入到整个Block的最后。这时运用SHA256函数处理整个Block(将整个Block作为统一的“信息”)就可以得到以一串0为开头(具体个数在不停变化)的Hash值,这时就产生了一个新的Block,同时这位“矿工”也可以获得一些相应的报酬。

长此以往,最终比特币将成为由许许多多Block链接起来(每个Block的开头是前一个Block的Hash值,而结尾则是这个Block对应的“Proof of work”)

而大家应该信任的Block Chain就是那个最长的,因为它拥有最多的“Proof of Work”。

因此,在比特币当中,存在两种“确认”:

一笔交易的确认是指Verity函数的值为“真”

一个区块的确认是指找到了“Proof-of-work”使其经过密码哈希函数之后的值由一串0开头。

不论是比特币还是区块链,它们的核心都是——“去信任化”。也就是说,区块链最大的好处就在于,它帮助我们建立了一套不基于信用的价值交换系统。这也是为什么区块链被称为“21世纪的互联网”的原因。

基于这个特点,区块链可以被用到社会的各个角落,它解决了一个重要的问题:“在一个信用不健全的社会当中,人们该如何进行价值交换?

希望你能通过本文获得有关比特币和区块链的崭新认识,并引领你去探索更多更深的技术以及应用。

如果你有任何疑问或者看法,欢迎在留言区留言,我们一起讨论虚拟货币以及区块链的未来。

祝好!

圣诞快乐!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券