区块链技术是什么?未来可能用于哪些方面?

区块链和比特币的关系是什么? 相关视频:【TED】对未来产生影响最大的科技
关注者
9722
被浏览
593002

115 个回答

你们肯定想不到这种干货题我都能强势却又和谐圆润地融入自拍!

最近在研究区块链和比特币的相关技术,看到这道题就想着写点东西供大家参考。

如果哪里有说的不对的地方还希望前辈们多多指教。

前方多图多图多图

通俗一点地说,区块链是一个收录所有历史交易的总帐,每个区块中包含若干笔交易记录。如果说区块链是账本,那么区块就是账本的每一页。交易的细节都被记录在一个网络里任何人都可以看得到的公开账簿上。


区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记。有效的区块获得全网络的共识认可以后会被追加到主区块链中。区块链是有包含交易信息的区块从后向前有序链接起来的数据结构。


在这里,我用比特币相关知识举个栗子解释一下。

在比特币领域中,存在“矿工”这样一个概念。矿工是指通过不断重复哈希运算来产生工作量的各个网络节点。(每个节点都是路由,区块链数据库,挖矿,钱包服务的功能集合)

矿工们需要竞争完成一种基于加密哈希算法的数学难题,答案存在于新的区块中,谁优先解出这个答案,谁就能在p2p网络中广播声明自己已经获得这个区块,其他的旷工就会意识到在这局里已经输了,就会立马开始下一个区块的挖掘工作。每个矿工在他的区块中都有一笔特殊的交易,他们会将新生成的比特币(当前每块25个比特币,2016年也就是今年减半)作为报酬,然后支付到自己的比特币地址中。一旦这个区块被认可被验证,也就是被添加到区块链中,他的这笔报酬就可以变为可用可消费的状态。

在比特币体系中,平均每十分钟就可以发现一个新的区块, 在完全去中心化的比特币网络中(即不受任何第三方控制),每个完整节点中独立自动发生难度调整,让新区块的产出速率维持在平均每十分钟一个。

一个block产生的产生时间=难度值x2的32次方/hashrate

(hashrate是每秒运算的hash数量)

难度值difficulty=最大目标值/当前目标值

我来拟人化地解释一下。

单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。

单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。

岳母会通过解题的速率去调整题目的难度,有时候吧,出的太难了,好久没小伙子有能力来上门提亲,她一寻思,这可不行,这女儿不能砸手里啊,得把题目难度降一点。有时候难度太简单,不到10个时间单位就嫁出去一个,这更不行,赶紧使用难度提升技能。对了今年就是2016年,岳母的礼金还会减半。。。

。。不闹了。。回到正题。。

上面所描述的其实就是“挖矿”的概念

所谓挖到矿就是要猜到一个nonce值让该区块的摘要值小于一个会根据难度而线性调整的目标值,这也是所谓的工作量证明。简单一点说,就是重复计算去块头额哈希值,不断地改变参数,直到与哈希值匹配的一个过程。

当节点创建一个候选区块的时候,那旷工就准备开始进行挖矿。矿机开始超高速运行SHA256算法,这些硬件会通过USB链接到存在于电脑上的挖矿节点上,然后挖矿节点会将区块头信息传给这些硬件,让他们进行非常高频的nonce测试。

当一项交易被区块收录的时候,可以被认为是一次确认。在此区块之后每产生一个区块,此项的交易数就再加一。当确认数目到达六次以上的时候,通常就能认为此项交易比较安全并且不可逆转。那么现在,这笔交易已经在比特币网络上传播开,但只有通过验证且加到一个区块中的时候,这笔交易才能成为区块链的一部分。

新的交易不断地涌入比特币网络,当节点们看这些交易的时候,会将这些交易临时放到自己各自维护的一个临时的交易池中,当旷工创建出一个区块以后,便可以把这些交易从交易池中拿出放到这个新区块中,然后通过解决一个难度很大的问题去证明这个区块的合法性。

下图是我在blockchain.info网站上随机截取的一个区块。


一般来说,个体矿工自己一个人独立进行挖矿在这样一个竞争的大环境中是几乎没有可以盈利的可能的。因为他们的算力让他们很难靠一己之力可以挖到区块去平衡他所付出的硬件设备费用及相关的电力费用。所以在这样的时候,他们会选择加入矿池。众多矿工组合成矿池,汇聚大家的算力,然后一起分享奖励。所以不出意外的话最后一行中间那个大的绿箭头后面的一串字符就是一个矿池的地址而非个人矿工的,该矿池获得了25个比特币的奖励,多的后面的零头是参与挖矿所得的矿工费。

现在我们点开那个收币地址,看一下里面的信息。

1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE (二维码自动识别)


蓝色框的31confirmation就是说明这条交易已经被验证31次,当数目达到120次时,就证明这条交易成立。

你也可以打开终端,运行

$curl blockchain.info/unspent?

也可以进行查询

像这样:


小彩蛋

我们可以认识一下比特币领域的创世区块


右边是比特币创始人中本聪留下的一句话。

“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” 这句话正是泰晤士报当天的头版文章标题。


我们回到区块链。

上面我提到过,每个区块头都会进行SHA256哈希加密,生成一个哈希值,通过这个值,我们可以在区块链中识别出特定区块,并且每个区块头都还包含它的父区块的哈希值。

(图片来自《精通比特币》)


每一个子区块都只有一个父区块,但一个父区块可以暂时拥有很多子区块,这种情况被称为区块链分叉。这种只有当不同的矿工在同一时刻发现不同的区块时才会发生。这时解决的方法就是,每一个节点总是选择并尝试延长拥有最大工作量证明(最长或者最大难度)的区块链。

举个例子:


(图片来自《精通比特币》)

我们现在有一个区块链-蓝

(图片来自《精通比特币》,可爱的小姑娘来自我)

位于X地区的旷工与位于Y地区的旷工同时发现了两个区块。

我们假设:

旷工熊猫君A发现区块-红,

矿工兔子君B发现区块-绿。

当熊猫君A,兔子君B节点分别在比特币网络广播的时候,部分节点会先收到熊猫君A的广播,部分会先收到兔子君B的广播,然后分为两派阵营的节点会分别开始以他们接收到的区块作为父区块,进行深一步的挖矿活动。(这里节点的地理意义指的是网络拓扑上的位置,而非真实的地理位置。)

(图片来自《精通比特币》,可爱的小姑娘来自我)

就在大家如火如荼地紧张解题的关键时刻,一个接收到兔子君B所广播的节点的兔子君C,优先发现了下一个区块-粉,也就是说绿色阵营的小兔子们的区块链可以进行下一步延伸,就会比红色阵营的小熊猫们的长度长,红色阵营小熊猫遗憾出局。这样的话分叉问题就得到了解决。

(图片来自《精通比特币》,可爱的小姑娘来自我)


这里我们需要提到一个名词,“共识攻击”。一个很著名的场景就是“51%攻击”。如果一群矿工拥有了全网51%的算力,那么只要他们联合起来就可以打击整个比特币网络。他们可以认为地去制造一个分叉的区块链实现双重支付,拿我们上文的例子举例,攻击者在区块-红中进行过了交易,结果他强行制造出区块-绿,并且区块-绿中将原本的交易替换成另一笔交易(把原本应该给卖家的钱打入自己同伙的钱包中),然后在区块绿的基础上再计算一个区块-粉,这样包含伪造的区块的区块链就比包含真实交易的区块红高出一个高度,此时,包含双重支付的恶意区块链将取代真实区块链,从而实现诈骗。


51%的概念并不是说攻击者需要全网51%的算力才能进行攻击,理论上来说不到51%也是可以实现攻击的,我们只是说拥有超过51%的算力的攻击几乎我们就可以判定它一定会成功。


上面都是在比特币场景下进行的论述

那么在哪些领域里也会用到区块链技术呢?


1.银行业

作为一种数字化,安全防干扰的帐户,区块链实现了银行业的核心功能:即价值的安全储存和转移中心。也就是说,在将来的几年内,一波基于区块链技术的公司或将影响到银行业。

2.支付和转账

区块链技术能够避开繁杂的系统,在付款人和收款人之间创造更直接的付款流程,不管是境内转账还是跨境转账,这种方式都有着低价、迅速的特点,而且无需中间手续费。

3.网络安全

虽然区块链的系统是公开的,但其核验、发送等数据交流过程却采用了先进的加密技术。这种技术不仅确保了数据的正确来源,也确保了数据在中间过程不被人拦截。如果区块链技术的应用更为广泛,那么其遭受黑客袭击的概率也可能会下降,因此人们认为区块链系统要比传统系统更为稳妥。区块链系统之所以能降低传统网络安全风险,一大原因就是它解除了对中间人的需求。

4.选举

大家的投票“绝不可能被我们——即程序员,学校管理员或学生修改、删除。”

5.智能合同

智能合同实际上是在另一个物体的行动上发挥功能的电脑程序。和普通电脑程序一样,智能合同也是一种“如果-然后”功能,但区块链技术实现了这些“合同”的自动填写,无需人工介入。这种合同最终可能会取代法律行业的核心业务,即在商业和民事领域起草和管理合同的业务。

6.股票交易

许多年来,各个公司都在想方设法简化股票的购买、销售和交易过程,新兴的区块链技术创企认为他们能够超越以往,实现整个流程的自动化,提高安全性和效率。

(参考来自区块链技术源于比特币 现在却要改变这12个行业


有国内互联网金融长期观察者说,“区块链目前的情况类似于TCP/IP(1969年出现的技术,30年后应用才全面盛开)或者HTML刚出来的时候找不到落地的应用,除了比特币外,缺乏杀手级应用,比特币只是区块链1.0,而智能合约是2.0,区块链的较高应用是对应到物联网,做到实时信用确权。”

我个人认为区块链技术是很有前景的领域,值得有兴趣的各位学习研究。

区块链被真正广泛运用还有一段很长的路要走,大家要做的,就是积累技术等待成熟时机的出现。


希望自己能够和大家多多交流~


(写了好几个小时。。。希望通过我的回答能让更多人了解区块链~

很多人都已经从技术的角度解释了区块链技术的原理和一些技术细节, @玲珑邪僧 还给出了非常酷炫的截图。不过这些对普通人来说不重要。就像现在用互联网技术刷知乎的各位,并不需要懂TCP/IP协议一样。如果要弄个微信公众号卖毒面膜,或者网络直播卖笑,对于底层技术一无所知也不影响使用的。

一句话概括,如果互联网技术解决的是通讯问题的话,区块链技术解决的是信任问题。

这么说还是一头雾水啊,举个栗子,我们赌球。

比如我和A赌NBA总冠军,我说是勇士,A说是骑士。但是A的赌品我深表怀疑,担心他输了赖账不给钱。没想到A反咬一口,还怀疑我的赌品不好,简直岂有此理!那咱俩就需要一个可信第三方来做公证人。我们可以各自出20块钱给我们都信得过的公证人来保管。如果届时勇士赢了,40块钱就归我。如果骑士赢了,40块钱就归A。

总决赛系列终于结束了,公证人卷了巨款40元跑了……

人和人最基本的信任到哪里去了?

出于对人性堕落的失望,我和A决定使用区块链技术来解决这个价值40块钱真金白银的问题。办法是写一个”智能合约“来实现对赌。方法是这样的,我们先各自出20块钱打到一个”智能合约“的账户里,这个合约不被任何人控制,只被合约的代码控制。现在”智能合约“的账户上有了40块钱,我们开始运行智能合约。

合约代码大概这样:

比赛结果=NBA官方网站API.get("总决赛")

if(骑士赢)
   pay 40 to A
else
   pay 40 to B

这个账户唯一会动账的可能就是获取比赛结果后,按照规则支付。我把代码给A看后,表示无异议。我们就把代码放到一个区块链上去运行。

这个叫做”智能合约账号“的账户,事实上是一个无人信托,它只会按照代码去执行。等比赛结果出来了,代码一执行,谁都赖不了账。A再信不过我,我再信不过A,我们都能实现对赌。

别的行业先不说,金融行业里实在太多这样的需求要这样做。

比如私募基金协会出了个新八条,股票配资不让超过1:1了,赌场老油条们怎么办?吃惯优先利息的银行怎么办?

于是大家想了一个利用信托的办法。劣后资金比如5000万,要搞个1:3的杠杆,然后银行出优先资金1.5个亿,双方都把钱打入信托账户。这时候信托账户上就有2个亿了,然后再拿信托的名义去券商开户做交易。

信托负责审核,如果产品的净值小于0.8了,那么平仓,银行本金和利息拿走,剩下的钱归劣后拿回去。如果净值很高,并且到期了,银行拿走本金和利息,剩下归劣后。信托是银行和劣后都认可的可信第三方,问题是这活不是白干的,信托要收管理费用的。

如今一块信托牌照大概能卖好几十亿,这钱太好挣了。

整个流程耗时耗财不说,千三的通道费管理费忍了,最关键的问题,如果信托公司出问题了呢?信托公司可不是都做无风险业务的,天天嚷嚷着要打破刚兑啥的,如果哪一天真出问题了咋办。托管账户在银行这里,银行也不是没倒闭的风险。

要解决信任问题的办法恰恰是谁都不信。

咱们再写个智能合约

净值=券商报告.get(产品名称)

运行天数=DateTime.Now - 起始日期
应计利息=优先资金量×日利息×运行天数
银行应收=优先资金量+应计利息
劣后应得=净值×总额-银行应收

if(净值<=0.8 or 运行天数>=到期天数)
{
    pay 银行应收 to 银行
    pay 劣后应得 to 劣后
}

往区块链上那么一放,一样实现这个效果,但你不用担心任何一个第三方违约或者倒闭,因为这里并没有第三方。或者说全世界都是你的第三方。具体的底层技术细节不是码农兄弟就别管了,就跟你不需要知道链路层通讯协议照样能打王者荣耀一样。

好了,民间配资公司都可以洗洗睡了。标准优先劣后协议开源后,资金方自己可以打钱进智能合约,等劣后方打钱进去,填写个产品名称后就可以跑起来了。配资公司吃掉的利息差有多大,旧模式其实浪费的资源就有多大。比信托的通道费和管理费大多了。

撇开费用不谈,想想债券代持的萝卜章事件吧,不信任任何第三方是何等的重要。

如果债券代持这笔业务是放在区块链上的话,那根本不可能有公章是伪造这种奇葩借口。因为区块链上的身份确认,是用高级加密算法的数字签名来实现的,不是地摊上私刻公章能做出来的。人类科技都发展到这水平了,还在用印章和笔迹来验证核实身份,这是何等奇怪之事。

说到中间人的浪费,莫过于保险公司了。保费里只有一小部分是真正发挥作用的,你的钱都付给brokers和宏观的核心CBD地段大楼去了。更别说各种模糊抠字眼的不理赔条款了。

我们再写个智能合约

航班抵达时间=航空公司官网.get(航班号)

pay 30 to I

if(航班抵达时间-预期时间>3小时)
    pay 1000 to C

这里I是保险公司,C是客户。I要先充1000到智能合约里,B要充30到智能合约。这是个标准合同,任何人充个1000都能当保险公司,试图去赚个30块钱。当然啦,保险公司靠大数定律赚钱,最好别只搞一次。智能合约在区块链上跑不是没有成本的,是要付费的,但远比传统大型金融中介机构要便宜得多得多。

成本还不是主要考量,最最关键的是,没有模糊条款。比起自然语言,代码没有歧义性。

如果保险公司和信托公司的违约风险大家没体会的话,想想场外期权的违约风险,行业是有血的教训的。比如现在大热的螺纹钢,没有期权不给力啊,搞个场外的话,但交易对手违约风险怎么办。

螺纹钢报价=上期所报价.get("rb1801")

Pay 期权费 to Seller

if(DateTime.Now()>=到期日 and 螺纹钢报价>4000)
    内在价格=螺纹钢报价-4000
    pay 内在价值 to Buyer

这和杠杆的保险有点像,这是一张执行价4000的螺纹钢的欧式看涨期权,期权的买方只需要充值期权费用进去就可以了。关键是期权的卖方,保证金充多少进去。到期了,如果期权的卖方保证金不足以支付了怎么办?

我们有两种解决方案,一个是在智能合约里规定,一旦卖方的保证金不足以支付,直接强制平仓将保证金全部给多头。另外,智能合约是可以发送消息的,让卖方追加保证金进去,否则触发强平。这里的保证金不是给交易所的,而是打到智能合约的账户上的。

虽然是场外,但你也不用担心对手盘风险了。事实上,合约你可以自己定义规则,不一定要是标准的期权期货合约,衍生品人人可以设计,不用等交易所上市产品。

A股股票融券难,不易做空?

股价=上交所报价.get("600516")

价差=股价-对赌价

if(价差>0)
    pay 价差 to Long
else
    pay Math.Abs(价差) to Short    //Math.Abs 的意思是取绝对值

多头(Long)和空头(Short)都充值保证金进去,然后开始对赌。保证金比例大家商量在合约里体现,也设计保证金Margin Call功能,这就是个股期货了。看好600516的可以获得没有配资利息的杠杆,空头可以不用融券做空。

所谓“现金交割”的金融期货,无非就是拿个指数对赌。沪深300啦,VIX期货啦,莫不如此。

其实只要是有公允数据的东西,都可以拿来对赌,NBA比赛和飞机航班是否延误之外,还能有各种各样的公开数据,对冲掉你不想要的任何风险,只要你有交易对手。

其实在区块链智能合约出现之前,金融行业里已经有个东西有点像智能合约。这东西叫信用证,是银行开具的。什么意思呢?

大家都用过支付宝。在淘宝上卖家担心发货了买家不付款,买家担心付款了,卖家不发货。那怎么办?买家先打钱给支付宝,然后支付宝收到钱后告诉卖家买家已经付款,发货收货完成后买家确认收货,支付宝放款给卖家。支付宝是淘宝交易的可信第三方。

信用证是贸易过程中,银行充当可信第三方的角色。比如A公司要买B公司的货,是笔跨国贸易。A公司担心付钱给B公司货过不来,B公司担心发货了A迟迟不打款。于是,A公司给自己的银行打保证金让银行开具一张信用证给B的开户银行,信用证里写了只要海关数据显示货到了,我就会支付给你钱。如果条件迟迟不触发,那么银行会把保证金退还给客户。这里银行就是支付宝的角色。

问题是如果跨国贸易对手是一家名不见经传的小银行怎么办?信用不足怎么办?

谁都别信谁的,大家用区块链技术做。根本不信任任何机构比任何机构要可信。如今,已经有大量的国际信用证开始使用区块链技术来做了。

智能合约怎么写?相信大家已经有数了。

供应链金融也是区块链技术应用得比较多的一个领域。

放贷方要知道有没有真实上下游的交易,应收确权等等。谁都别信谁,上区块链,上下游把自己有没有发货有没有应付写上去。谁都别想赖账,明明白白的公开账本。放贷方就能做风险控制了。

上面说的主要是金融方面的应用,区块链技术能做的其他领域的应用还很多。

比如房地产的确权工作,这比一纸地契要可靠,在一些法制程度比较差的地方在应用。还节约了房地产交易的费用,当然这不如打保证金去智能合约里那么牢靠。毕竟公开账本里明明白白就是你的地,地方军阀完全可以不认账。

投票系统也是大的应用场景,不用担心“被代表”了。因为区块链上所有的信息都是靠数字签名来验证你的身份的,并且信息的一致性有保证,所以利用区块链技术可以做到非常可信的投票体系。NasdQ交易所的区块链交易系统Linq就是个好例子,股票的股东在做投票的时候,谁有多少股谁就有多少个投票权,股东决议变得可信而高效。



区块链技术因为是跑在一个完全P2P的网络里的,完全不知道运行在网络里的哪里,拥有绝佳的保密性和安全性。所以有一个比较有意思的项目,利用这个做的保密通讯工具。每个人的身份通过数字签名技术验证,不需要根证书啥的。

一个不需要中心化网络的加密通信信道,简直可以再造一个升级版暗网。

版权也是个大的应用领域,版权的交易可以去中心。这样的场景在各行各业还有很多,区块链技术的价值还等待大家去挖掘。

值得一提的是,智能合约的设计是区块链这个技术本身就自带的。第一个版本的bitcoin就是跑一个脚本来解锁一个加密数字货币的。


大意是说:我希望比特币在0.1版就能拥有稳定的架构,未来不需要再做底层改变。在过去几年设计比特币的过程中,我发现只有使用脚本系统才能完成我希望支持的各种复杂交易类型——担保交易、连带合同、第三方仲裁、多方签名等等。

援引中本聪:智能合约?比特币自带 | 巴比特

这就叫先见之明。

为什么?