区块链合同存证是如何应用到随行付合同物流金融中的,这种技术对于中小合同物流企业有什么好处吗?

您的位置: →
→ 随行付手机客户端 v2.3.5 安卓版
随行付手机客户端 v2.3.5 安卓版随行付app下载|
网友评分:8
软件大小:43.9M
软件语言:中文
软件类型:国产软件
软件类别:免费软件 / 金融理财
更新时间:
软件等级:
官方网站:
运行环境:Android
软件厂商:
顶好评:50%
同类相关软件
80M/中文/10.043.6M/中文/5.015.6M/中文/5.044M/中文/10.05.6M/中文/10.0
最新版本是一款适合于小额使用的移动支付app,将你的手机变成移动pos机,专注线下支付,独创的生活营销系统与收单系统无缝对接的服务模式,颠覆行业传统,让你享受更快捷、更安全的移动支付服务!随行付手机版介绍随行付是中国领先的独立支付及清结算服务平台,由北京随行付信息技术有限公司注资1.6亿元创建,已获得“人民银行”颁发的全国范围银行卡收单牌照、互联网支付牌照、移动电话支付牌照。2013年9月,经中国人民银行批准,随行付品牌,正式更名为“随行付支付有限公司”。随行付专注于线下收单、移动支付及互联网支付,致力于成为移动支付行业的第一品牌。随行付还独创会生活营销系统与收单系统无缝对接的服务模式,覆盖包括餐饮、休闲、零售、服装、百货、保险、教育等30多个行业。随行付拥有资深电子商务、金融、移动互联网、电信增值行业专家管理团队,独立的业务中心以及行业内出色的技术开发管理人员,采用国际化管理方式运营。在产品开发、技术创新、市场开拓、企业管理和资本运作方面具有丰富的经验。随行付app特色1、费率灵活,根据实际需求选择费率套餐。2、pos机安装非常迅速,合约审核后,2-4个工作日POS机就可安装到位。3、随行付pos刷卡接入,坚持手续简单,拒绝繁琐的宗旨。4、结算帐户灵活,不限制银行,无需在指定银行开户,结算周期也比较灵活。5、支持网站、短信、POS三种对账途径,随时随地了解资金状况,灵活便捷。6、故障响应及时,当天解决;全天候专人负责POS机故障解决,一对一的专属服务,免去后续之忧。7、POS机是市场认可率第一、国内占有率第一的百富POS机,久经考验,系统稳定故障少,可放心使用安装。更新日志v2.2.6更新内容:优化了登录密码复杂度
开发商:随行付支付有限公司
猜你喜欢 随行付
随行付专题为大家整理了随行付官网推出的一系列软件,其中包含了随行付收银台、随行付商务版、随行付录单通、随行付鑫联盟、随行付商户版等,随行付是一款功能强大的银行卡收单软件,主要只用于各大商铺,使用app用户
其他版本下载
随行付手机客户端 v2.3.5 安卓版
软件无法下载或下载后无法使用,请点击报错,谢谢!
请描述您所遇到的错误,我们将尽快予以修正,谢谢!
*必填项,请输入内容
本类下载排行
10.01 10.02 8.03 10.04 10.05 10.06 10.07 10.08 10.09 10.010 10.011 10.012 10.013 10.014 10.015
本类精品软件
87M/中文/7.72.5M/中文/10.040.3M/中文/5.514.4M/中文/10.058.6M/中文/8.06.2M/中文/8.314.4M/中文/10.0
装机必备软件
本类集合软件&p&你们肯定想不到这种干货题我都能强势却又和谐圆润地融入自拍!&/p&&p&最近在研究区块链和比特币的相关技术,看到这道题就想着写点东西供大家参考。&/p&&p&如果哪里有说的不对的地方还希望前辈们多多指教。&/p&&p&前方多图多图多图&br&&/p&&p&通俗一点地说,区块链是一个收录所有历史交易的总帐,每个区块中包含若干笔交易记录。如果说区块链是账本,那么区块就是账本的每一页。交易的细节都被记录在一个网络里任何人都可以看得到的公开账簿上。&/p&&figure&&img src=&https://pic1.zhimg.com/dc4a7da8e76e2dfd520adf0_b.jpg& data-rawwidth=&692& data-rawheight=&227& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&https://pic1.zhimg.com/dc4a7da8e76e2dfd520adf0_r.jpg&&&/figure&&br&&p&区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记。有效的区块获得全网络的共识认可以后会被追加到主区块链中。区块链是有包含交易信息的区块从后向前有序链接起来的数据结构。&/p&&br&&p&在这里,我用比特币相关知识举个栗子解释一下。&/p&&p&在比特币领域中,存在“矿工”这样一个概念。矿工是指通过不断重复哈希运算来产生工作量的各个网络节点。(每个节点都是路由,区块链数据库,挖矿,钱包服务的功能集合)&/p&&p&矿工们需要竞争完成一种基于加密哈希算法的数学难题,答案存在于新的区块中,谁优先解出这个答案,谁就能在p2p网络中广播声明自己已经获得这个区块,其他的旷工就会意识到在这局里已经输了,就会立马开始下一个区块的挖掘工作。每个矿工在他的区块中都有一笔特殊的交易,他们会将新生成的比特币(当前每块25个比特币,2016年也就是今年减半)作为报酬,然后支付到自己的比特币地址中。一旦这个区块被认可被验证,也就是被添加到区块链中,他的这笔报酬就可以变为可用可消费的状态。&/p&&p&在比特币体系中,平均每十分钟就可以发现一个新的区块, 在完全去中心化的比特币网络中(即不受任何第三方控制),每个完整节点中独立自动发生难度调整,让新区块的产出速率维持在平均每十分钟一个。&/p&&p&一个block产生的产生时间=难度值x2的32次方/hashrate&/p&&p&(hashrate是每秒运算的hash数量)&/p&&p&难度值difficulty=最大目标值/当前目标值&/p&&p&我来拟人化地解释一下。&/p&&p&单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。&/p&单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。&p&岳母会通过解题的速率去调整题目的难度,有时候吧,出的太难了,好久没小伙子有能力来上门提亲,她一寻思,这可不行,这女儿不能砸手里啊,得把题目难度降一点。有时候难度太简单,不到10个时间单位就嫁出去一个,这更不行,赶紧使用难度提升技能。对了今年就是2016年,岳母的礼金还会减半。。。&/p&&p&。。不闹了。。回到正题。。&/p&&p&上面所描述的其实就是“挖矿”的概念&/p&&p&所谓挖到矿就是要猜到一个nonce值让该区块的摘要值小于一个会根据难度而线性调整的目标值,这也是所谓的工作量证明。简单一点说,就是重复计算去块头额哈希值,不断地改变参数,直到与哈希值匹配的一个过程。&/p&&p&当节点创建一个候选区块的时候,那旷工就准备开始进行挖矿。矿机开始超高速运行SHA256算法,这些硬件会通过USB链接到存在于电脑上的挖矿节点上,然后挖矿节点会将区块头信息传给这些硬件,让他们进行非常高频的nonce测试。&/p&&p&当一项交易被区块收录的时候,可以被认为是一次确认。在此区块之后每产生一个区块,此项的交易数就再加一。当确认数目到达六次以上的时候,通常就能认为此项交易比较安全并且不可逆转。那么现在,这笔交易已经在比特币网络上传播开,但只有通过验证且加到一个区块中的时候,这笔交易才能成为区块链的一部分。&/p&&p&新的交易不断地涌入比特币网络,当节点们看这些交易的时候,会将这些交易临时放到自己各自维护的一个临时的交易池中,当旷工创建出一个区块以后,便可以把这些交易从交易池中拿出放到这个新区块中,然后通过解决一个难度很大的问题去证明这个区块的合法性。&/p&&p&下图是我在&a href=&//link.zhihu.com/?target=http%3A//blockchain.info& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blockchain.info&/span&&span class=&invisible&&&/span&&/a&网站上随机截取的一个区块。&/p&&figure&&img src=&https://pic2.zhimg.com/9dc48daed6dacc9793545dd_b.jpg& data-rawwidth=&691& data-rawheight=&436& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic2.zhimg.com/9dc48daed6dacc9793545dd_r.jpg&&&/figure&&br&&p&一般来说,个体矿工自己一个人独立进行挖矿在这样一个竞争的大环境中是几乎没有可以盈利的可能的。因为他们的算力让他们很难靠一己之力可以挖到区块去平衡他所付出的硬件设备费用及相关的电力费用。所以在这样的时候,他们会选择加入矿池。众多矿工组合成矿池,汇聚大家的算力,然后一起分享奖励。所以不出意外的话最后一行中间那个大的绿箭头后面的一串字符就是一个矿池的地址而非个人矿工的,该矿池获得了25个比特币的奖励,多的后面的零头是参与挖矿所得的矿工费。&/p&&p&现在我们点开那个收币地址,看一下里面的信息。&/p&&p&1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE (二维码自动识别)&/p&&br&&p&蓝色框的31confirmation就是说明这条交易已经被验证31次,当数目达到120次时,就证明这条交易成立。&/p&&p&你也可以打开终端,运行&/p&&p&$curl &a href=&//link.zhihu.com/?target=https%3A//blockchain.info/unspent%3Factive%3D1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&blockchain.info/unspent?&/span&&span class=&invisible&&active=1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&也可以进行查询&/p&&p&像这样:&/p&&figure&&img src=&https://pic4.zhimg.com/de6e08e4b21da1ed00e7_b.jpg& data-rawwidth=&691& data-rawheight=&380& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic4.zhimg.com/de6e08e4b21da1ed00e7_r.jpg&&&/figure&&br&&p&小彩蛋&/p&&p&我们可以认识一下比特币领域的创世区块&/p&&figure&&img src=&https://pic2.zhimg.com/e64db800edcb40cbba0a91_b.jpg& data-rawwidth=&691& data-rawheight=&366& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic2.zhimg.com/e64db800edcb40cbba0a91_r.jpg&&&/figure&&br&&p&右边是比特币创始人中本聪留下的一句话。&/p&&p&“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” 这句话正是泰晤士报当天的头版文章标题。&/p&&br&&p&我们回到区块链。&/p&&p&上面我提到过,每个区块头都会进行SHA256哈希加密,生成一个哈希值,通过这个值,我们可以在区块链中识别出特定区块,并且每个区块头都还包含它的父区块的哈希值。&/p&&figure&&img src=&https://pic1.zhimg.com/98c52583dcf06bd56deaee144f14a990_b.jpg& data-rawwidth=&670& data-rawheight=&883& class=&origin_image zh-lightbox-thumb& width=&670& data-original=&https://pic1.zhimg.com/98c52583dcf06bd56deaee144f14a990_r.jpg&&&/figure&&p&(图片来自《精通比特币》)&/p&&br&&p&每一个子区块都只有一个父区块,但一个父区块可以暂时拥有很多子区块,这种情况被称为区块链分叉。这种只有当不同的矿工在同一时刻发现不同的区块时才会发生。这时解决的方法就是,每一个节点总是选择并尝试延长拥有最大工作量证明(最长或者最大难度)的区块链。&/p&&p&举个例子:&/p&&figure&&img src=&https://pic4.zhimg.com/f0dd74caff62d63f72d27a09a542e597_b.jpg& data-rawwidth=&692& data-rawheight=&405& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&https://pic4.zhimg.com/f0dd74caff62d63f72d27a09a542e597_r.jpg&&&/figure&&br&&p&(图片来自《精通比特币》)&/p&&p&我们现在有一个区块链-蓝&/p&&figure&&img src=&https://pic1.zhimg.com/a516b59e3bfae07d17d416fc_b.jpg& data-rawwidth=&691& data-rawheight=&431& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic1.zhimg.com/a516b59e3bfae07d17d416fc_r.jpg&&&/figure&&p&(图片来自《精通比特币》,可爱的小姑娘来自我)&/p&&p&位于X地区的旷工与位于Y地区的旷工同时发现了两个区块。&/p&&p&我们假设:&/p&&p&旷工熊猫君A发现区块-红,&/p&&p&矿工兔子君B发现区块-绿。&/p&&p&当熊猫君A,兔子君B节点分别在比特币网络广播的时候,部分节点会先收到熊猫君A的广播,部分会先收到兔子君B的广播,然后分为两派阵营的节点会分别开始以他们接收到的区块作为父区块,进行深一步的挖矿活动。(这里节点的地理意义指的是网络拓扑上的位置,而非真实的地理位置。)&/p&&figure&&img src=&https://pic2.zhimg.com/996af5a8f2b1c62ea98d_b.jpg& data-rawwidth=&691& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic2.zhimg.com/996af5a8f2b1c62ea98d_r.jpg&&&/figure&&p&(图片来自《精通比特币》,可爱的小姑娘来自我)&/p&&p&就在大家如火如荼地紧张解题的关键时刻,一个接收到兔子君B所广播的节点的兔子君C,优先发现了下一个区块-粉,也就是说绿色阵营的小兔子们的区块链可以进行下一步延伸,就会比红色阵营的小熊猫们的长度长,红色阵营小熊猫遗憾出局。这样的话分叉问题就得到了解决。&/p&&figure&&img src=&https://pic1.zhimg.com/0a43bb8206d5faffb9bd4_b.jpg& data-rawwidth=&691& data-rawheight=&418& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic1.zhimg.com/0a43bb8206d5faffb9bd4_r.jpg&&&/figure&&p&(图片来自《精通比特币》,可爱的小姑娘来自我)&/p&&br&&p&这里我们需要提到一个名词,“共识攻击”。一个很著名的场景就是“51%攻击”。如果一群矿工拥有了全网51%的算力,那么只要他们联合起来就可以打击整个比特币网络。他们可以认为地去制造一个分叉的区块链实现双重支付,拿我们上文的例子举例,攻击者在区块-红中进行过了交易,结果他强行制造出区块-绿,并且区块-绿中将原本的交易替换成另一笔交易(把原本应该给卖家的钱打入自己同伙的钱包中),然后在区块绿的基础上再计算一个区块-粉,这样包含伪造的区块的区块链就比包含真实交易的区块红高出一个高度,此时,包含双重支付的恶意区块链将取代真实区块链,从而实现诈骗。&/p&&br&&p&51%的概念并不是说攻击者需要全网51%的算力才能进行攻击,理论上来说不到51%也是可以实现攻击的,我们只是说拥有超过51%的算力的攻击几乎我们就可以判定它一定会成功。&/p&&br&&p&上面都是在比特币场景下进行的论述&/p&&p&那么在哪些领域里也会用到区块链技术呢?&/p&&br&&blockquote&&p&&b&1.银行业&/b&&/p&&p&作为一种数字化,安全防干扰的帐户,区块链实现了银行业的核心功能:即价值的安全储存和转移中心。也就是说,在将来的几年内,一波基于区块链技术的公司或将影响到银行业。&/p&&p&&b&2.支付和转账&/b&&/p&&p&区块链技术能够避开繁杂的系统,在付款人和收款人之间创造更直接的付款流程,不管是境内转账还是跨境转账,这种方式都有着低价、迅速的特点,而且无需中间手续费。&/p&&p&&b&3.网络安全&/b&&/p&&p&虽然区块链的系统是公开的,但其核验、发送等数据交流过程却采用了先进的加密技术。这种技术不仅确保了数据的正确来源,也确保了数据在中间过程不被人拦截。如果区块链技术的应用更为广泛,那么其遭受黑客袭击的概率也可能会下降,因此人们认为区块链系统要比传统系统更为稳妥。区块链系统之所以能降低传统网络安全风险,一大原因就是它解除了对中间人的需求。&/p&&p&&b&4.选举&/b&&/p&&p&大家的投票“绝不可能被我们——即程序员,学校管理员或学生修改、删除。”&/p&&p&&b&5.智能合同&/b&&/p&&p&智能合同实际上是在另一个物体的行动上发挥功能的电脑程序。和普通电脑程序一样,智能合同也是一种“如果-然后”功能,但区块链技术实现了这些“合同”的自动填写,无需人工介入。这种合同最终可能会取代法律行业的核心业务,即在商业和民事领域起草和管理合同的业务。&/p&&p&&b&6.股票交易&/b&&/p&&p&许多年来,各个公司都在想方设法简化股票的购买、销售和交易过程,新兴的区块链技术创企认为他们能够超越以往,实现整个流程的自动化,提高安全性和效率。&/p&&/blockquote&&p&(参考来自&a href=&//link.zhihu.com/?target=http%3A//www.haoxx.com/com/anjin2000/news/itemid-482607.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&区块链技术源于比特币 现在却要改变这12个行业&/a&)&/p&&br&&p&有国内互联网金融长期观察者说,“区块链目前的情况类似于TCP/IP(1969年出现的技术,30年后应用才全面盛开)或者HTML刚出来的时候找不到落地的应用,除了比特币外,缺乏杀手级应用,比特币只是区块链1.0,而智能合约是2.0,区块链的较高应用是对应到物联网,做到实时信用确权。”&/p&&p&我个人认为区块链技术是很有前景的领域,值得有兴趣的各位学习研究。&/p&&p&区块链被真正广泛运用还有一段很长的路要走,大家要做的,就是积累技术等待成熟时机的出现。&/p&&br&&p&希望自己能够和大家多多交流~&/p&&br&&p&(写了好几个小时。。。希望通过我的回答能让更多人了解区块链~&/p&&p&&br&&/p&&p&&br&&/p&&p&———&/p&&p&大家好&br&&br&我新开通了公众号:万物情史&/p&&p&将会持续连载《失控与币然》&/p&&p&用最易懂的语言介绍最严谨的区块链知识&/p&&p&欢迎并诚挚感谢大家关注&/p&&p&“从你叫什么名字开始,后来便有了一切。”&/p&
你们肯定想不到这种干货题我都能强势却又和谐圆润地融入自拍!最近在研究区块链和比特币的相关技术,看到这道题就想着写点东西供大家参考。如果哪里有说的不对的地方还希望前辈们多多指教。前方多图多图多图 通俗一点地说,区块链是一个收录所有历史交易的…
&p&昨晚,在微博上看到这次两会政协的一个新闻发布会,李彦宏在谈人工智能,所以联想到其它区块链和物联网,隐约觉得它们之间有关系,所以才简单地作个梳理。&/p&&p&区块链、人工智能、物联网的关系&/p&&p&区块链技术是计算机技术的升级、生产组织方式和革命,将影响人类经济、社会组织分工,理想状态下可能会产生颠覆性的改变。&/p&&p&人工智能是科技革命,人和机器互为融合,后者将更好地服务于前者,产生新的人机关系。&/p&&p&物联网是基础设施智能化,万物互联,万物具有生命,是升级版的互联网。&/p&&p&三者互有影响,计算机技术是底层技术,后三者基于计算机技术;物联网是物理节点基础,人工智能是机器基于计算机科学的升级,区块链促进物联网发展,是万物互联互为融合可行的底层技术。&/p&&p&三者与大数据&/p&&p&大数据是三者共同的结果,都会产生大数据;区块链是大数据分布式存储但互通、共享;大数据分析是人工智能基础,影响人工智能的水平;物联网必然产生大数据,区块链技术又是物联网大数据部署的好的解决方案。&/p&&p&物联网、区块链是物理、技术基础,经过大数据采集、部署、分析、应用,最终以一定的人工智能予以体现,最终实现人类更美好的生活。&/p&&p&区块链等技术对物流行业的影响&/p&&p&区块链技术的发展,会深刻影响物流组织的形式,从而影响到物流生产安排;区块链技术会改进物流环节过多的问题(P2P交流机制),让物流透明化、全产业链共享信息成为可能(分布式记账,全网共享),让行业的信任机制更容易和可行(加密和不可篡改机制),物流的智能化、智慧化更易实现(智能合约让智能调度、线路优化更易实现);设想,过三五年,等区块链技术得以成功商业化,也许车货匹配能真正地发挥其作用。&/p&&p&人工智能是近一两年热词,也是行业、产业大力探索的方向;据报道,人工智能在亚马逊、菜鸟物流、京东物流、苏宁物流都有应用,主要用在仓库里的机器人、实验中的无人驾驶货车、以及在局部地区使用的无人飞机送货等;可以预计,接下来几年,人工智能在物流行业的应用会越来越普遍。&/p&&p&当然,不只在物流行业,在我们的生活和生产上,人工智能设备或技术也会呈日新月异地发展。&/p&&p&物联网技术,已提了许多年,在许多场景中都得到应用,产业链也比较完善,但一直缺少个爆发点,我想一来可能是基础设施的布局需要一定时间、需要规划,二来也可能是存储、记录技术上存在难题(跨区域、随时随地、万物协同),区块链技术的出现,正好可以解决物联网万物互联后信息的多点、全记录、存储的问题,区块链技术的发展也许会促进物联网应用更普及;当然,物联网的发展,上层是要靠国家产业政策、布局,中间要靠行业、各个产业不断去实践,下层要靠普罗大众去参与;具体到物流行业,物联网技术目前可以看到的会对无人驾驶货车应用、无人仓库等会产生影响;当然,物联网技术影响物流行业肯定不只如此,还需要行业去实践。&/p&&p&人工智能、物联网、区块链协同发展,三五载后,我们的行业、我们的生活充满想象!&/p&
昨晚,在微博上看到这次两会政协的一个新闻发布会,李彦宏在谈人工智能,所以联想到其它区块链和物联网,隐约觉得它们之间有关系,所以才简单地作个梳理。区块链、人工智能、物联网的关系区块链技术是计算机技术的升级、生产组织方式和革命,将影响人类经济…
&figure&&img src=&https://pic4.zhimg.com/90e5ab5cde88ebad791bdcc9_b.jpg& data-rawwidth=&621& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&621& data-original=&https://pic4.zhimg.com/90e5ab5cde88ebad791bdcc9_r.jpg&&&/figure&本文主要是用通俗的语言和图文来解释“区块链”这个一抽象又偏向技术的名词,关于技术方向的解释会放到下一篇文章里做详细解释。&p&首先对区块链做一个总结放在最前面:&/p&&p&&b&区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。&/b&&/p&&p&听不懂?没关系,且往下看...&/p&&p&在解释区块链具体是什么东西之前我认为最核心的是要知道“我们为什么要用区块链技术”。&/p&&p&&b&1、区块链的诞生是为了解决什么问题?&/b&&/p&&p&在支付宝转账的时候,作为用户的你感觉是把你的钱直接打到对方的账户中。但!....事实是这样的:&/p&&figure&&img src=&https://pic2.zhimg.com/abbc69af0_b.jpg& data-rawwidth=&858& data-rawheight=&746& class=&origin_image zh-lightbox-thumb& width=&858& data-original=&https://pic2.zhimg.com/abbc69af0_r.jpg&&&/figure&&br&&br&&p&这里的支付宝等公司就是“第三方”,那为什么我们俩转账为什么要有一个“第三方”出现?&/p&&figure&&img src=&https://pic2.zhimg.com/59caf507b8d638013fca9bd3e862f726_b.jpg& data-rawwidth=&271& data-rawheight=&68& class=&content_image& width=&271&&&/figure&&figure&&img src=&https://pic2.zhimg.com/add8dc8d4e47_b.jpg& data-rawwidth=&517& data-rawheight=&68& class=&origin_image zh-lightbox-thumb& width=&517& data-original=&https://pic2.zhimg.com/add8dc8d4e47_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/22abf3f9516e7fcb3950_b.jpg& data-rawwidth=&547& data-rawheight=&74& class=&origin_image zh-lightbox-thumb& width=&547& data-original=&https://pic1.zhimg.com/22abf3f9516e7fcb3950_r.jpg&&&/figure&&p&&figure&&img src=&https://pic1.zhimg.com/268bbe17ed89f48cd0e3d5e_b.jpg& data-rawwidth=&492& data-rawheight=&76& class=&origin_image zh-lightbox-thumb& width=&492& data-original=&https://pic1.zhimg.com/268bbe17ed89f48cd0e3d5e_r.jpg&&&/figure&这是阿里巴巴的纪录片《造梦者》中的一段话,ps:下文会多次引用,就可以很好解释“第三方”这个名词,这也是淘宝和支付宝诞生的伊始。换句话说,当时的阿里是被逼做了这个“第三方”,因为当时没有任何一家公司能够担任这样的角色,于是阿里成为了信任的中心,商家和用户因为“信任”,选择把钱给阿里。但是,如果阿里携款潜逃了(尽管不可能...)或者财务运营商出了问题(毕竟是人嘛...)怎么办?如果有一个机器或者一个“超级系统”来做这些事就好了!在互联网技术更新替换了十几年后的今天,区块链出现在我们面前,没错!它就是那个“超级系统&!一个&b&信任的机器&/b&。&/p&&p&有了区块链,事情开始变得不一样了。&/p&&p&&b&传统中心化的方式:&/b&&/p&&p&&figure&&img src=&https://pic1.zhimg.com/fa9ac6fcac26_b.jpg& data-rawwidth=&900& data-rawheight=&725& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic1.zhimg.com/fa9ac6fcac26_r.jpg&&&/figure&&b&区块链网络下的”去中心化的方式:&/b&&/p&&p&&figure&&img src=&https://pic3.zhimg.com/c14f86e8ea7dea99628bfd_b.jpg& data-rawwidth=&966& data-rawheight=&645& class=&origin_image zh-lightbox-thumb& width=&966& data-original=&https://pic3.zhimg.com/c14f86e8ea7dea99628bfd_r.jpg&&&/figure&在去中心化的网络下,每个用户之间都可以是直接联系的,不再有任何第三方的参与,用户间的转账就像手递手付现金一样,这也是为什么比特币会被称为”电子现金“。&/p&&p&好了,现在A已经把钱转给B了,那么谁来记这笔账呢?之前有支付宝帮我记账对账,会统一存在支付宝后台系统中。为了让所有用户的交易都被记录下来并且账目都是正确的,支付宝会为此付出巨大努力。看看支付宝的初期...&br&&/p&&br&&figure&&img src=&https://pic3.zhimg.com/f6e2d1bef9b7ddef26d27c33_b.jpg& data-rawwidth=&396& data-rawheight=&65& class=&content_image& width=&396&&&/figure&&figure&&img src=&https://pic4.zhimg.com/daf8a3a03f3d046c2abbe80_b.jpg& data-rawwidth=&441& data-rawheight=&70& class=&origin_image zh-lightbox-thumb& width=&441& data-original=&https://pic4.zhimg.com/daf8a3a03f3d046c2abbe80_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/8d2aa4edf485fd7feb523f_b.jpg& data-rawwidth=&453& data-rawheight=&84& class=&origin_image zh-lightbox-thumb& width=&453& data-original=&https://pic1.zhimg.com/8d2aa4edf485fd7feb523f_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/c0c32d168511edd217b3a_b.jpg& data-rawwidth=&418& data-rawheight=&61& class=&content_image& width=&418&&&/figure&每天1000笔的账单,人工对账就已经很痛苦了。以现在支付宝的体量,每天少则几十万的账单,即使是系统对账也难免漏单,并且要付出相应的人力、物力来维护这一套非常复杂的收支清算系统。说了这么多,那区块链是怎么对账的呢?答案是:没有!在区块链的网络中根本不需要对账,零清算,因为区块链中的每一个节点(就是一台计算机或理解为一个用户)自己都有一个账本,这个账本是实时更新的,区块链网络中发生的任何交易都会被记到你自己的账本中,没错,别人的帐你也有,但是你是不知道这个人是谁的,因为他们统一都长这个样子:&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&0x d7a8fbb307dabcbdcdb762d02d0bf37c9e592
&/code&&/pre&&/div&&p&这就意味着,以前由一个中心化的机构帮你记账对账,现在由每一个网络中的参与者帮你记账,大家都有同一个账本。如下图&/p&&figure&&img src=&https://pic3.zhimg.com/f293f669f4c3cc1aea286a1_b.jpg& data-rawwidth=&855& data-rawheight=&719& class=&origin_image zh-lightbox-thumb& width=&855& data-original=&https://pic3.zhimg.com/f293f669f4c3cc1aea286a1_r.jpg&&&/figure&&br&&p&每个人拥有同一个账本,即使你篡改了你自己的账本,让你的账上多了1亿,可是51%以上的账本中你的账户还是1分钱,那就说明你的帐上余额就是1分钱,无法抵赖。当然,如果你能控制网络51%的人在账本中帮你把一分钱变成1亿,你就能获得一亿,但基本上就要动用举国之力了....骚年,你确定你可以?&/p&&p&这就是为什么大家说区块链网络是安全的,因为攻击成本太过巨大,打个比方:比特币现在市值80亿美元,如果你想攻破它并得到这80亿美元,你可能要花费200多亿美元......&br&&br&说了上面这么多其实就是想说明区块链的几个特性:&/p&&ol&&li&去中心化,没有第三方中介,一切都由程序来完成。&br&&/li&&li&安全性,主要体现在分布式、51%攻击,即使一个节点被攻击或宕机也不会影响网络的运行。&/li&&li&最核心的就是:去信任。一切社会行为都要建立在”信任“的基础上,这也是区块链解决的最根本的问题。&/li&&/ol&&figure&&img src=&https://pic2.zhimg.com/201d6a9d9196a85ffbd3d_b.jpg& data-rawwidth=&465& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&465& data-original=&https://pic2.zhimg.com/201d6a9d9196a85ffbd3d_r.jpg&&&/figure&&p&这是《造梦者》中马云的说一句话,时至今日,&b&区块链技术解决的最核心的问题就是“信任”&/b&。PS:传送门:&a href=&https://link.zhihu.com/?target=http%3A//v.ifeng.com/documentary/bvideo/bc716-9f93-b-af.shtml& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阿里纪录片:马云和他的“少年阿里”《造梦者》&/a&,这部影片我个人看了很多遍,深深的感受到现在的区块链时代就仿佛当年的互联网时代,究竟能否成为一个时代我不得而知,但影片中马云的一句话也影响着我,“失败了也没关系,至少我把一个概念告诉了别人,我成功会有人成功的,我希望中国人点成功,不要再拖下去了”。看着马云一次次在给别人解释“什么是互联网”和“电脑能干什么用”,梦回今日,我们也乐此不疲地给别人解释“什么是区块链”和“它能做什么”。&/p&&p&区块链,会造就某个“马云”的梦想吗?&/p&&p&是梦想,还是梦境,20年后见分晓。&/p&&p&无论结局如何,至少我们都是这个时代的见证者。&/p&
本文主要是用通俗的语言和图文来解释“区块链”这个一抽象又偏向技术的名词,关于技术方向的解释会放到下一篇文章里做详细解释。首先对区块链做一个总结放在最前面:区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。听不懂?没关系,且往下…
&p&&i&&b&友情提醒&/b&:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。&/i&&/p&&p&&br&&/p&&p&&i&另外,作为一篇科普性文章,大家可以随意转载,注明这篇文章的出处和作者即可,无需再单独私信询问。&/i&&/p&&p&&br&&/p&&p&&i&---&/i&&/p&&p&&br&&/p&&p&首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-a3ba4597bafd533d7e9f77_b.jpg& data-size=&normal& data-rawwidth=&1920& data-rawheight=&900& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/v2-a3ba4597bafd533d7e9f77_r.jpg&&&figcaption&上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群&/figcaption&&/figure&&h2&# 问题的由来&/h2&&p&我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。&/p&&p&&br&&/p&&p&&b&中心化?&/b&&/p&&p&&br&&/p&&p&回忆一下你在网上购买一本书的流程:&/p&&ol&&li&第一步,你下单并把钱打给&b&支付宝&/b&;&/li&&li&第二步,&b&支付宝&/b&收款后通知卖家可以发货了;&/li&&li&第三步,卖家收到&b&支付宝&/b&通知之后给你发货;&/li&&li&第四步,你收到书之后,觉得满意,在&b&支付宝&/b&上选择确认收货;&/li&&li&第五步,&b&支付宝&/b&收到通知,把款项打给卖家。流程结束。&/li&&/ol&&p&&br&&/p&&p&你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。&/p&&p&&br&&/p&&p&你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!&/p&&p&&br&&/p&&p&假如说,支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被ISIS恐怖组织的一个导弹全部炸毁了。而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。&/p&&p&&br&&/p&&p&上述就是中心化最大的弊端——过分依赖中心和权威,也就意味着逐渐丧失自己的话语权。&/p&&p&&br&&/p&&p&&b&去中心化?&/b&&/p&&p&&br&&/p&&p&那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。&/p&&ol&&li&第一步,你下单并把钱打给卖家;&/li&&li&第二步,你将这条转账信息记录在自己账本上;&/li&&li&第三步,你将这条转账信息广播出去;&/li&&li&第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;&/li&&li&第五步,卖家发货,同时将发货的事实记录在自己的账本上;&/li&&li&第六步,卖家把这条事实记录广播出去;&/li&&li&第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;&/li&&li&第八步,你收到书籍。至此,交易流程走完。&/li&&/ol&&p&&br&&/p&&p&刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。&/p&&p&&br&&/p&&p&当然,在这套极简的交易系统中,你已经发现了诸多漏洞和不理解,比如说三方当中有一个是坏人,他故意记录了对他更有利的转账信息怎么办;又比如说消息在传递过程中被黑客篡改了怎么办等等等等。这在以往的计算机概论或者计算机网络书本上中可能都有提及到——“类两军”和“拜占庭将军”问题。这里就不打算赘述,因为暂时跟主线不相关,感兴趣的同学可以去Google或者百度一下,你只需要知道,在我们下面即将展开讲到的区块链系统中,通过巧妙的设计,足以解决上述存在的BUG。&/p&&p&&br&&/p&&p&既然话已说到这份上,相信了解一点技术、特别是有运维背景的同学大概能够从极简交易系统中窥视到了更多区块链的一些影子——&/p&&ol&&li&分布式存储,通过多地备份,制造数据冗余&/li&&li&让所有人都有能力都去维护共同一份数据库&/li&&li&让所有人都有能力彼此监督维护数据库的行为&/li&&/ol&&p&&br&&/p&&p&在我看来,你猜测的基本上没错。其实这些就是区块链技术最核心的东西,外人看起来高大上、深不可测,但探究其根本发现就是这么简单和淳朴。当然,这里面肯定会有很多很多很多细枝末节的技术需要重构。&/p&&p&&br&&/p&&p&如果你差不多认同上面的观点,那我们应该基本上可以达成共识,分布式部署肯定是构建去中心化网络理所当然的解决方向——通过P2P协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络;以巧妙的机制,通过节点之间的交易数据同步来保证全球计算机节点的数据共享和一致。&/p&&p&&br&&/p&&p&哈哈,说的轻巧,“交易数据这么重要的东西,在一个完全不信任的P2P网络节点中以一种错综复杂的方式传递,数据的一致性和安全性谁来保证,如果说互相监督,他们到底怎么做到?”&/p&&p&&br&&/p&&p&好了,不卖关子了,下面让我们围绕这个最最最最直接的问题开始进入到真正区块链的世界,抽丝剥茧看看它到底是如何一步一步形成的,又是如何一步一步稳定运转。&/p&&p&&br&&/p&&h2&# 从全球节点到交易数据&/h2&&figure&&img src=&https://pic2.zhimg.com/v2-8dfe43a00bf9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&4664& data-rawheight=&2172& class=&origin_image zh-lightbox-thumb& width=&4664& data-original=&https://pic2.zhimg.com/v2-8dfe43a00bf9_r.jpg&&&/figure&&p&这张图的制作的意义为的是帮助你在宏观上先快速理解区块链中所涉及到的相关名词以及他们的层级关系。同时,文章的知识结构和设计思路也大抵上也会按照:&/p&&ol&&li&首先,将区块作为最小单位体,讲述极简区块链系统是如何运转的;&/li&&li&接着,进入到比区块更小单位体——交易记录,理解区块链是如何处理数据的;&/li&&li&最后,将所有知识点柔和在一起,重回到区块和区块链,完整讲述整个工作流程。&/li&&/ol&&p&&br&&/p&&p&希望你在这个引导和结构下有一个比较好的阅读体验。Let's go~&/p&&p&&br&&/p&&h2&# 区块,混沌世界的起源&/h2&&p&&br&&/p&&p&既然已经达成共识,所以,我们事先构建好了一个去中心化的P2P网络;同时,为了让读者朋友们听起来更轻松,我先粗暴的规定在这个极简的区块链系统里,每十分钟有且仅产生一笔交易。&/p&&p&&br&&/p&&p&故事继续,在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块(你可以将区块想象为一个盒子),这个区块里放着一些数字货币以及一张小纸条,小纸条上记录了这十分钟内产生的那唯一一笔交易信息,比如说——“小A转账给了小B100元”;当然,这段信息肯定是被加密处理过的,为的就是保证只有小A和小B(通过他们手上的钥匙)才有能力解读里面真正的内容。&/p&&p&&br&&/p&&p&这个神奇的区块被创造出来之后,很快被埋在了地底下,至于埋在哪里?没有一个人不知道,需要所有计算机节点一起参与进来掘地三尺后才有可能找到(找到一个有效的工作量证明)。显然,这是一件工作量巨大、成果随机的事件。但是呢,对于计算机节点来说,一旦从地底下挖出这个区块,他将获得区块内价值不菲的数字货币,以及“小A转账给了小B100元”过程中小A所支付的小费。同时,对于这个节点来说,也只有他才有权利真正记录小纸条里的内容,这是一份荣耀,而其他节点相当于只能使用它的复制品,一个已经没有数字货币加持的副本。当然这个神奇的区块还有一些其他很特别的地方,后面我们会再细细聊。&/p&&p&&br&&/p&&p&为了更好的描述,我们将计算机节点从地底下挖出区块的过程叫做「挖矿」,刚才说了,这是一件工作量巨大、运气成分较多、但收益丰厚的事儿。&/p&&p&&br&&/p&&p&过了一会儿,来自中国上海浦东新区张衡路上的一个节点突然跳出来很兴奋的说:“ 我挖到区块了!里面的小纸条都是有效的!奖励归我!” 。虽然此刻张衡路节点已经拿到了数字货币,但对于其他计算机节点来说,因为这里面还涉及到其他一些利益瓜葛,他们不会选择默认相信张衡路节点所说的话;基于陌生节点彼此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。&/p&&p&&br&&/p&&p&在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:&/p&&ul&&li&停止已经进行了一半甚至99.99%的挖矿进程;&/li&&li&将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。&/li&&/ul&&p&&br&&/p&&p&你可以稍微有点困惑:停止可能已经执行了99.99%的挖矿行为,那之前99.99%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?&/p&&p&&br&&/p&&p&对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了99.99%,那也得放弃,这99.99%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了N次“从别人手上拿过区块 -& 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了N个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。&/p&&p&&br&&/p&&h2&# 走进区块内,探索消息的本质&/h2&&p&&br&&/p&&p&上面我们构建了一个最简单的区块链世界的模型,相信大多数同学都已经轻松掌握了。但是别骄傲也别着急,这还只是一些皮毛中的皮毛,坐好,下面我们准备开车了。&/p&&p&&br&&/p&&p&前面我们说到“大概每十分钟会凭空产生一个神奇的区块,这个区块里放了一张小纸条,上面记录了这十分钟内产生的这唯一一笔交易信息”。显然,十分钟内产生的交易肯定远不止一条,可能是上万条,这上万条数据在区块链世界是如何组织和处理的呢?另外,为什么在纸条上记录的只是某一次的交易信息,而不是某一个人的余额?余额好像更符合我们现实世界的理解才对。&/p&&p&&br&&/p&&p&既然存在这样那样的疑问。现在我们就把视线暂时从“区块”、“区块链”这些看起来似乎较大实体的物质中移开,进入到区块内更微观的世界里一探究竟,看看小纸条到底是怎么一回事,它的产生以及它终其一生的使命:&/p&&ol&&li&发起交易的时候,发起人会收到一张小纸条,他需要将交易记录比如说“盗盗转账给张三40元”写在纸上。说来也神奇,当写完的那一刹那,在小纸条的背面会自动将这段交易记录格式化成至少包含了“输入值”和“输出值”这两个重要字段;“输入值”用于记录数字货币的有效来源,“输出值”记录着数字货币发往的对象。&/li&&li&刚刚创建的小纸条立马被标记成为“&b&未确认&/b&”的小纸条。从地下成功挖出区块并最终连接到区块链里的小纸条一开始会被标记为“&b&有效&/b&”。若这条有效的小纸条作为其他交易的输入值被使用,那么,这个有效的小纸条很快会被标记为“&b&无效&/b&”。因为各种原因,区块从链上断开、丢弃,曾经这个区块内被标记为“有效”的小纸条会被重新标记为“未确认”。&/li&&li&区块链里面没有账户余额的概念,你真正拥有的数字资产实际上是一段交易信息;通过简单的加减法运算获知你数字钱包里的余额。&/li&&/ol&&p&&br&&/p&&p&上面的1、2、3仅仅作为结论一开始强行灌输给你的知识点,其中有几个描述可能会有点绕,让你觉得云里雾里,没有关系,因为我们立刻、马上就开始会细说里面的细枝末节。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9b6d8ac951f48d7cd31b7d4f3e266c69_b.jpg& data-size=&normal& data-rawwidth=&1662& data-rawheight=&806& class=&origin_image zh-lightbox-thumb& width=&1662& data-original=&https://pic2.zhimg.com/v2-9b6d8ac951f48d7cd31b7d4f3e266c69_r.jpg&&&figcaption&上图,是区块内,盗盗在一张小纸条上记录下的交易信息,后被格式化的呈现&/figcaption&&/figure&&p&&br&&/p&&p&上图就是从无数打包进区块内的小纸条中,抽取出来的一张,以及它最终被格式化后的缩影。单看右侧的图可能很容易产生误会,虽然看起来有多行,但实际上就是“盗盗转账给张三40个比特币”这一条交易数据另外的一种呈现形态。因为区块链世界里面这么规定,每一条交易记录,必须有能力追溯到交易发起者 发起这笔交易、其中所涉及金额的上一笔全部交易信息;即这笔钱从何而来的问题。这其实很容易理解,在去中心化的网络中,通过建立交易链、和通过交易链上的可溯源性间接保证数据安全和有效。&/p&&p&&br&&/p&&p&我们继续看,在区块链世界里,我们是如何仅通过“盗盗转账给张三40个比特币” 这条交易信息完成转账流程的。其实跟现实中你在路边买一个包子的流程大抵上相同。&/p&&p&&br&&/p&&p&&b&第一步:判断是否有足够的余额完成交易&/b&&/p&&p&这里我们再一次重申,在比特币的区块链世界里是没有余额的概念(以太坊的底层区块链有余额概念),余额是通过简单数字的加减最终获得,你拥有所谓的数字货币实际上是因为你拥一条交易记录,即 “盗盗转账给张三40个比特币”!这里,我们还是拿这条记录说事:&/p&&p&&br&&/p&&p&追溯“输出值”是“盗盗”相关的&b&全部有效交易记录&/b&作为,对有效交易中的数字进行简单求和,判断是否大于等于40,如果确实大于等于,则将这些有效的交易记录合并形成一条新的交易记录(如下图)。如果小于40,其实可以不需要再继续往下探讨。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d6ffef73e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1654& data-rawheight=&1028& class=&origin_image zh-lightbox-thumb& width=&1654& data-original=&https://pic3.zhimg.com/v2-d6ffef73e_r.jpg&&&/figure&&p&&br&&/p&&p&就上图的例子,我们追溯到曾经转账给盗盗的&b&有效交易记录&/b&有“小A转账给盗盗10 btc”、“小B转账给盗盗20 btc”、“小C转账给盗盗 25 btc”,我们需要将这三条交易记录合并成一条更复杂描述的交易记录,即 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc ) 转账给张三40 btc ”&/p&&p&&br&&/p&&p&&b&第二步:判断是否需要找零&/b&&/p&&p&对追溯到的有效交易数字求和,如果发现大于需要支付的金额,需要将多出的数字重新支付给自己,相当于找零。对应生成了一条全新的交易记录(如下图)。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7be1de0c68192_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1614& data-rawheight=&796& class=&origin_image zh-lightbox-thumb& width=&1614& data-original=&https://pic3.zhimg.com/v2-7be1de0c68192_r.jpg&&&/figure&&p&&br&&/p&&p&就上图例子来说,我们最后合并成的交易记录 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc + 盗盗转账给盗盗15 btc ) 转账给张三40 btc ” 事实上等同于“盗盗转账给张三40 btc”。其中“盗盗转账给盗盗15 btc”就可以理解找零。&/p&&p&&br&&/p&&p&&b&第三步:发出去,让全球节点认同和备份小纸条&/b&&/p&&p&这条内部重新处理过的复杂交易记录被塞进区块,埋到地下,等待节点挖出来,一旦区块被挖矿成功,并且该区块最终被连在了区块链的主链上。张三将最终拥有了这条交易记录,而先前的“小A转账给盗盗10 btc” 、“小B转账给盗盗20 btc” 、“小C转账给盗盗25 btc”都将被视为已经使用过的交易记录——从此被贴上“无效”的标签,意味着这些交易记录将永远不会再被追溯到。&/p&&p&&br&&/p&&p&我们最后一次重申,只是希望让你加深印象:拥有数字货币=拥有交易记录!&/p&&p&&br&&/p&&p&&b&通过设计巧妙的精巧密码学保证数据安全&/b&&/p&&p&&br&&/p&&p&记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:&/p&&ul&&li&接受到的这条交易记录在传输过程没有被其他人所篡改&/li&&li&接受到的这条交易记录确实是由发起交易的人所创造&/li&&/ul&&p&&br&&/p&&p&在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。&/p&&p&&br&&/p&&p&第一个知识点:SHA256()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过SHA256函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,SHA256() 函数给出的输出结果都将发生翻天覆地的改变。注意,SHA256()函数是公开的,任何人都能使用。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-10adf960a686_b.jpg& data-size=&normal& data-rawwidth=&1146& data-rawheight=&492& class=&origin_image zh-lightbox-thumb& width=&1146& data-original=&https://pic3.zhimg.com/v2-10adf960a686_r.jpg&&&figcaption&上图,仅仅一个小数点的变化,输出的结果已经翻天覆地&/figcaption&&/figure&&p&&br&&/p&&p&第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。&/p&&p&&br&&/p&&p&有了这些知识点的加持,上面两个问题开始变得有解。下面我们来看下内部是如何扭转和工作的吧,这里拿“小A 转账给了小B 100元钱” 举例: &/p&&figure&&img src=&https://pic3.zhimg.com/v2-e99919c04bbd8d9f0ff6a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1234& data-rawheight=&906& class=&origin_image zh-lightbox-thumb& width=&1234& data-original=&https://pic3.zhimg.com/v2-e99919c04bbd8d9f0ff6a_r.jpg&&&/figure&&ol&&li&&b&第一步&/b&:小A会先用SHA256函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。&/li&&li&&b&第二步&/b&:小A使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有没有被移花接木。步骤一和步骤二的结合就是为了生成这样一份有且仅针对这条小纸条有效的签名。&/li&&li&&b&第三步:&/b&小A将「明文的小纸条」、刚刚加密成功的「数字签名」,以及自己那把可以公布于众的「公钥」打包一起发给小B。&/li&&li&&b&第四步:&/b&当小B收这三样东西,首先会将明文的小纸条进行SHA256()处理,得到一个字符串,我们将其命名为“字符串2”。然后,小B使用小A公布的公钥,对发过来的数字签名进行解密,得到另外一个“字符串1”。通过比对“字符串1”和“字符串2”的一致性,便可充分证明:小B接受到的小纸条就是小A发出来的小纸条,这张小纸条在中途没有被其他人所篡改;且这张小纸条确实是由小A所编辑。&/li&&/ol&&p&&br&&/p&&p&可以看得出来,加解密的过程几乎是一环套一环,中途任何环节被篡改,结果都是大相径庭。借助这一连串的机制,其实已经能够很好的在公开、匿名、彼此不信任的分布式网络环境中解决数字交易过程中可能遇到的很多问题。这个环节可能确实有点难理解,现在,我需要你停下来,静下心,花上几分钟闭目慢慢回味其中设计精湛的地方。&/p&&p&&br&&/p&&p&掌握了这部分知识以后,我们在这里回答一下前面没有解释清楚的问题,「节点对区块的检验」检验的到底是什么?实际上就是:&/p&&ul&&li&检验区块内的交易记录签名是否准确(是否被篡改)&/li&&li&检验区块内的交易记录输入值是否“有效”(是否使用过)&/li&&li&检验区块内的交易记录输入值的数字之和是否大于等于输出值的数字&/li&&li&…&/li&&/ul&&p&&br&&/p&&h2&# 重回“区块”和“区块链”的世界&/h2&&p&&br&&/p&&p&好了,对小纸条和交易记录的研究我们点到为止,其实信息量已经是巨大的了,让我们合上盖子,重回较大的实体、继续聊聊“区块”和“区块链”的话题。还记得,咱们在一开始讲到关于区块的特征吗?区块创造后被埋在地下,需要经过节点们马不停蹄的挖采、而且是凭运气的挖采才有可能获得——不仅仅如此,事实上他还有其他很多神奇的地方,比如说:&/p&&ol&&li&凭空产生的区块在刚刚创建的时候会形成一股强大的黑洞效应,它会尝试将这段时间全世界各个节点上产生的所有小纸条(交易记录)统统吸进来;在合上区块盖子之前,同时会在区块内放上一些数字货币以及其他一些东西。&/li&&li&区块拥有一个唯一的ID,但它只会在这个区块被节点成功从地下挖出来之后创建。这个ID至少会跟「区块内所有小纸条的集合」、「即将与之相连的上一个区块ID」以及「挖矿节点的运气值」等因素相关。既然前面我们已经简单了解了“SHA256()函数”这个东西,这里不妨透露给大家:“区块ID = SHA256(‘区块内所有小纸条的集合’+’即将与之相连的上一个区块ID’+‘挖矿节点的运气值’+’…’)” ;基于先前掌握的知识,然后你应该知道区块内任意一张小纸条的信息稍微做改动、或者节点挖矿运气好一点坏一点等等,当前区块的ID都会 “ biu~ ”的发生改变。&/li&&/ol&&p&&br&&/p&&p&基于上述1、2点,如果阅读足够仔细的同学可能会有些头大。在文章开头为了更好的描述,我在设计简化区块链系统的时候故意模棱两可了几个概念,这也许已经误导到了部分同学。这里不得不停下来和你一起修正下之前在你大脑中已经构建的区块链世界观。我们前面讲道,“在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块”。如何正确去理解这句话呢?——拥有上帝之眼的你,可以这么拆解问题、看待问题:&/p&&ol&&li&同一个周期内,全网并不是产生唯一的一个区块等待挖掘;每个节点事实上都在周期性的创造区块和挖出区块;只是在某一个节点的视野里,它不能感知到另外一个节点上区块的产生。为何这里要特别强调“在某一个节点的视野里”,就是因为我们刚刚讲到,从区块的视角来说,区块的凭空产生,是基于即将与之相连的上一个区块ID;而从节点的视角来看,区块的凭空产生是基于当前节点区块链末尾的那个区块ID产生的。&/li&&li&全网会尽力控制在一个周期内只有一个节点能够成功挖出区块,但是不能够完全避免多个节点同时挖出区块的可能性;如何尽力控制?比如说,当大伙挖矿的热情高涨、工作效率提高,区块会被埋在更深更广的地方等。简而言之,通过提高工作难度,来维持这个平衡。另外,值得注意的:产生区块、挖出区块、校验区块,他们的时间周期近乎相同。&/li&&/ol&&p&&br&&/p&&blockquote&对于想从技术角度更加深入理解“区块”、“挖矿”本质的同学们,你们可以移步至我的专栏《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&探索比特币“挖矿”和“区块”的数学本质&/a&》,其中涉及到一些比较复杂的数学和技术细节,相信阅读完那部分内容之后,你对区块链会有更加透彻的认知。当然,对于绝大多数的吃瓜群众,看完那边内容可能会让你更加困惑,如果你不是十分的喜欢追根究底的话,我建议你还是直接选择跳过那块吧。至少在我看来,即便少了那部分内容,也不影响我们去理解区块链的魅力。&/blockquote&&p&&br&&/p&&p&&b&分叉&/b&&/p&&p&&br&&/p&&p&现在,我们终于对“区块”这个概念有了更全面的认识,文章开头讲的故事就可以继续展开来絮叨絮叨:&/p&&p&&br&&/p&&p&假如几乎同一时间,「中国上海浦东新区张衡路」上的节点和「美国纽约曼哈顿第五大道」上的节点异口同声喊出来:“我挖到区块了!里面的小纸条都是有效的!奖励归我!”。其他节点也几乎同时参与了对这两个区块的校验,结果发现这俩都没毛病,各节点也开始犯困,因为在他们的视野里他们并不清楚最后哪一个区块应该会被主链接纳。算了!都连在自己区块链尾巴上吧,这时尴尬了,区块链硬生生的被分叉了!&/p&&figure&&img src=&https://pic1.zhimg.com/v2-adfe4cc811b04b86bd20_b.jpg& data-size=&normal& data-rawwidth=&1392& data-rawheight=&534& class=&origin_image zh-lightbox-thumb& width=&1392& data-original=&https://pic1.zhimg.com/v2-adfe4cc811b04b86bd20_r.jpg&&&figcaption&产生分叉&/figcaption&&/figure&&p&&br&&/p&&p&你肯定在想,那还得了,这种情况继续下去,每个节点的区块以及他们整理维护的小纸条都将变得不一样,这已经严重违背了区块链世界里第一大最基本原则——所有节点共同维护同一份数据。所以,为了解决这个问题,区块链世界引入了一条新的规则——拥有最多区块的支链将是真正被认可有价值的,较短的支链将会被直接Kill掉。&/p&&p&&br&&/p&&p&我们大伙都知道挖矿的过程存在巨大的工作量(如果没有任何难度,把区块扔在人群中,必然同一时间发现区块的节点数量将大大增加,也就会产生无数的支链,通过这个例子,你大概也就能够明白,比特币的区块链世界为什么需要设置工作难度了吧),并且在计算机的硅基世界里,不可能出现所谓 “同时” 的概念,哪怕纳秒的差别,那也总是会有先后顺序。所以理论上,“分叉”的这种僵局很快会在下一个区块被挖掘出来(以及校验区块)的时候被打破,实在不行下下个,或者下下下个……总之机制可以让整个分叉的区块链世界迅速稳定下来。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ea23dae6e0f6cd2d072d1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1402& data-rawheight=&980& class=&origin_image zh-lightbox-thumb& width=&1402& data-original=&https://pic2.zhimg.com/v2-ea23dae6e0f6cd2d072d1_r.jpg&&&/figure&&p&&br&&/p&&p&“分叉”这种僵局在确认下一个区块(以及校验小纸条)的时候被打破,从而整个区块链世界迅速稳定下来&/p&&p&&br&&/p&&p&就上图而言,所有基于张衡路节点挖矿获得的区块以及后续区块的那条分支被视为有价值,最终会全部保留了下来;其他节点会统一效仿那个拥有更长分支链的节点所做的决策。另外,值得一提的是,同一时间,较短分支上的区块会立即丢弃,而里面的小纸条也会随之释放出来,被重新标记上“未确认”。&/p&&p&&br&&/p&&p&&b&“双花”与“51%攻击”&/b&&/p&&p&&br&&/p&&p&你可能已经开始困惑或者有点兴奋,末尾几个区块的排序在修复过程中,因为时间差肯定会产生一些模棱两可的地方,这往往会给数据安全埋下一颗雷。一个最简单的假设——我记录的一张小纸条很不巧地被归在了一条较短的支链上,这条支链在竞争过程中理所当然输掉了比赛,区块被丢弃、小纸条被无情的贴上“未确认”的标签。在等待下次区块重新确认的过程中,这个时间差内,我,好像、似乎可以做点什么坏事 ?(?﹃??) ,就比如说“双花”(双花,花两次,双重支付的意思)&/p&&p&&br&&/p&&p&你脑海中也许很快浮过的这样的构想,可不可能通过下面这种方法触发双花问题的产生,从而让我不劳而获:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-82f01cc16cbd1ffb75723db_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1592& data-rawheight=&994& class=&origin_image zh-lightbox-thumb& width=&1592& data-original=&https://pic4.zhimg.com/v2-82f01cc16cbd1ffb75723db_r.jpg&&&/figure&&p&&br&&/p&&ol&&li&假设有一个名叫X-Man的坏家伙,他控制了一个计算机节点,这个节点拥有比地球上任何一个节点算力都强大的计算机集群。&/li&&li&首先,X-Man事先创造了一条独立的(不去广而告之)、含有比较多区块的链条。其中一个区块里放着“X-Man转账给X-Man 1000元”的纸条。&/li&&li&接着,X-Man跟张三购买了一部手机,他在小纸条上记录下“X-Man转账给张三1000元”。张三已经比一般的卖家谨慎了,他在这条信息被三次确认后(即三个区块被真实挖出、校验和连接)才将手机给了X-Man。按照我们之前的理解,这条交易记录已经板上钉钉永远无法被串改。&/li&&li&X-Man拿到手机之后,按下机房的开关,试图将先前已经创造的区块链条连接在自己这个节点区块链的末尾。&/li&&li&大功告成,X-Man拥有了一条更长的区块链条,那些较短、存放着“X-Man转账给张三1000元”的区块链,以及在区块链世界里那则真实转账行为被一同成功销毁。(???)&/li&&/ol&&p&&br&&/p&&p&事实真的如此吗?在这里我可以很负责任的说,too young too simple,区块链世界规则的制定远比我们想象的要健全很多,还记得我们之前讲的“区块的ID至少会跟区块内所有小纸条的集合、即将与之相连的上一个区块ID、当前产生区块的时间戳以及挖矿节点的运气值等因素相关”。 在这里,正是因为打算连接到主链的过程中,主链会立马意识到,那条事先准备的链子(的第一个区块)的时间戳存在异常,不属于当前区块链世界里线性增长的时间戳,于是马上意识到这个事先准备的链子(的第一个区块)是无效的,需要重新计算。 &/p&&figure&&img src=&https://pic3.zhimg.com/v2-5ac7eb9be1b20e59974a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1646& data-rawheight=&980& class=&origin_image zh-lightbox-thumb& width=&1646& data-original=&https://pic3.zhimg.com/v2-5ac7eb9be1b20e59974a_r.jpg&&&/figure&&p&&br&&/p&&p&在区块链的世界,重新计算的行为等同于把自己(节点)置身于同一个起跑线,跟世界上其他所有的节点一同竞争挖矿。你会说,我拥有更强大的计算能力,但是对不起,跟你竞争的对象并不是第五大道、南京西路、香榭丽舍大道上的某一个节点,而是全球所有算力的集合,在这个集合中,你拥有的算力永远都只是一个很小的子集。所以,根据区块链算力民主、少数服从多数的基本原则,这个构想将永远不会成立。&/p&&p&&br&&/p&&p&&b&除非....&/b&&/p&&p&&br&&/p&&p&你控制着全球51%的算力,这也就是区块链世界里另外一个著名的概念,叫做“51%攻击”,但这也仅仅是一个理论值,在真实世界里这样的攻击我个人觉得是很难发动起来的,这里面就牵涉到很多经济、哲学甚至政治的因素。举个最简单的例子:X-Man为了回滚刚刚发生的一笔交易记录,成功发起了51%攻击,这意味着很快整个区块链系统将会崩盘,因为这次攻击已经严重伤害到人们对这套系统的信任,接着比特币开始暴跌至几乎一文不值;但是这个拥有51%算力的X-Man原本完完全全可以通过挖矿的方式获取更多收益,购买无数的iPhone手机。那他不是脑袋不是坏了还能是啥?对51%攻击话题感兴趣的同学可以阅读这篇文章《&a href=&//link.zhihu.com/?target=http%3A//8btc.com/article-1949-1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&什么是比特币51%攻击?&/a&》。&/p&&p&&br&&/p&&p&至此,我觉得区块链最基础、最核心的知识已经全部讲完了(除了挖矿内部实现原理,作为一个遗憾留在这里,有时间会完善掉),相信你已经对它有了一个宏观的认识。另外,由于这篇文章采用了适当抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,欢迎大家来纠错。另外,也是受限于自己知识结构的缺失,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。&/p&&p&&br&&/p&&p&--&/p&&h2&问答部分&/h2&&p&&br&&/p&&p&&b&去中心化的系统中,到底是谁在发行货币?是无限量发行吗?&/b&&/p&&p&比特币的货币是通过挖矿(工作量证明)来发行的,总数量是通过程序写死了2100万个,而第一笔区块奖励也是硬编码写死的。矿工挖出一个区块所获得的奖励,每隔21万个区块将减少一半,按照平均10分钟挖出一个区块的执行效率,也就就说差不多每四年会锐减一次。2009年1月起每个区块奖励50个比特币,2012年11月减半为每个区块25个比特币,2016年7月减半为12.5个比特币。基于这个规则,到2140年,所有比特币(20,999,999,980)将全部发行完毕,之后不会再有新的比特币产生。&/p&&p&&br&&/p&&p&&b&矿工节点的收益除了挖出区块以外还有哪些?&/b&&/p&&p&矿工节点的收益主要由两部分组成:1)挖出新区块的奖励;2)挖出新区块内所含交易的交易费。但就目前来说,一个区块内的交易费大概只占到矿工总收入的0.5%甚至更少,大部分收益主要还是来自于挖矿所得的比特币奖励。然而,随着挖矿奖励的递减,以及每个区块中包含的交易数量增加,交易费在矿工收益中所占的比重将会逐渐增加。在2140年之后,所有的矿工收益将完全由交易费构成。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&参考&/b&&/h2&&ul&&li&中心化与去中心化 &a href=&//link.zhihu.com/?target=https%3A//www.douban.com/note//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&douban.com/note/6244212&/span&&span class=&invisible&&70/&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&图说区块链 &a href=&//link.zhihu.com/?target=https%3A//book.douban.com/subject//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&book.douban.com/subject&/span&&span class=&invisible&&//&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&区块链是什么,如何简单易懂地介绍区块链? &a href=&https://www.zhihu.com/question/& class=&internal&&&span class=&invisible&&https://www.&/span&&span class=&visible&&zhihu.com/question/3729&/span&&span class=&invisible&&0469&/span&&span class=&ellipsis&&&/span&&/a& &/li&&li&什么是比特币51%攻击? &a href=&//link.zhihu.com/?target=http%3A//8btc.com/article-1949-1.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&8btc.com/article-1949-1&/span&&span class=&invisible&&.html&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&区块链与新经济:数字货币2.0时代 &a href=&//link.zhihu.com/?target=https%3A//book.douban.com/subject//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&book.douban.com/subject&/span&&span class=&invisible&&//&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&詳解比特幣原理和運行機制 &a href=&//link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DP4seQcP77H4& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&youtube.com/watch?&/span&&span class=&invisible&&v=P4seQcP77H4&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&区块链是什么:从技术架构到哲学核心 &a href=&//link.zhihu.com/?target=https%3A//v.qq.com/x/page/x0518nuh2z7_0.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&v.qq.com/x/page/x0518nu&/span&&span class=&invisible&&h2z7_0.html&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&区块链核心算法解析 &a href=&//link.zhihu.com/?target=https%3A//book.douban.com/subject//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&book.douban.com/subject&/span&&span class=&invisible&&//&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&深入理解比特幣的安全性及程式交易安全性與相關的密碼學原理 &a href=&//link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3D3w1Tg3B_oKQ& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&youtube.com/watch?&/span&&span class=&invisible&&v=3w1Tg3B_oKQ&/span&&span class=&ellipsis&&&/span&&/a& &/li&&li&深度了解区块链——拜占庭将军问题深入探讨 &a href=&//link.zhihu.com/?target=https%3A//wallstreetcn.com/articles/338061& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&wallstreetcn.com/articl&/span&&span class=&invisible&&es/338061&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&精通比特币-挖矿与共识 &a href=&//link.zhihu.com/?target=http%3A//zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter08.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zhibimo.com/read/wang-m&/span&&span class=&invisible&&iao/mastering-bitcoin/Chapter08.html&/span&&span class=&ellipsis&&&/span&&/a&&/li&&/ul&
友情提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果…
&p&首先要搞清一个问题——比特币是区块链,但是区块链并不是比特币。&/p&&p&于是,在区块链的这个问题回答里,提到“矿工”,“挖矿”,“最长链”,“分叉”等等词的,其实都不准确。&/p&&p&写一点上个月讲课的内容——个人觉得大部分的回答,包括google搜出来的或者wiki的,都不能很好地解释区块链是个什么东西。因为讲比特币的人很多,懂比特币的人也很多,但是具体到区块链,现在并没有一个很清楚的定义说什么是区块链,基本上所有的介绍里都是这样的:&/p&&p&比特币——〉区块链是比特币的底层技术。&/p&&p&或者&/p&&p&比特币——〉比特币是一种区块链。&/p&&p&具体到什么是区块链的问题,目前没有看到很好的定义和介绍,更多的是大而化之地讲区块链的意义在哪里的空泛文章,要不然就是一水的矿工和挖矿。所以我来从纯理论角度说一下我个人对区块链的定义:&/p&&p&&b&1,区块链是一个放在非安全环境中的分布式数据库(系统)。&/b&&/p&&p&&b&2,区块链采用密码学的方法来保证已有数据不可能被篡改。&/b&&/p&&p&&b&3,区块链采用共识算法来对于新增数据达成共识。&/b&&/p&&p&&b&具有以上三个性质的系统,就是区块链。&/b&&/p&&br&&br&&p&&b&1,区块链是一个放在非安全环境中的分布式数据库(系统)。&/b&&/p&&p&这里的要点有两个:(1)分布式,(2)非安全环境。&/p&&p&首先,这是一个分布式的,去中心化的系统。所以,有一个中心服务器或者节点的,不是区块链。节点都是安全的,无恶意的,那这不是区块链。同理,从应用的角度讲,如果你的应用必须要使用中心节点(例如要用超级计算机做深度学习)或者没必要考虑节点不安全的情况(例如某个安全的工厂里的传感器),那么并不需要考虑区块链技术。&/p&&p&至于后面的词“数据库”,目前大部分成熟的区块链都是数据库,例如比特币就是一个分布式账本,而账本其实就是数据。然后,根据数据的格式,又可以分三种——1,数据是完全不相关的,只是达成的共识,没有有效无效之分;2,数据有某些逻辑结构,例如账本中,一笔交易实际上除了金额,还有输入和输出,连接到之前的交易,这些数据需要通过逻辑验证(例如交易中,节点需要验证输入的交易是否有效);3,数据拥有图灵完备的逻辑,而验证的时候需要通过节点使用算力运算,每笔交易可以有不同的输出和状态,每个节点要做的不仅仅是验证交易的真实性和输入的正确性,还要根据交易里的逻辑读入数值,进行验算然后再验证结果。&/p&&p&比特币的系统就是第二种,又叫分布式账本;以太坊是第三种。第三种可以支持智能合约。&/p&&p&用比特币举例的话,1,它是一个完全去中心化的系统,2,它放在一个非安全的环境,它并不要求所有使用比特币的人都没有恶意。&/p&&br&&p&&b&2,区块链采用密码学的方法来保证已有数据不可能被篡改。&/b&&/p&&p&这个是误解最多的部分,因为很多人一提到区块链就只觉得是这个。诚然,这部分很重要,而且确实区块链也因此得名,但这只是区块链的定义的一部分。&/p&&p&这个部分的两个核心要点是:(1)密码学哈希函数,(2)非对称加密。&/p&&p&两个都是密码学的基础概念,网上都有非常清晰的定义,我只简单说下:&/p&&p&(密码学)哈希函数:一个函数Y=H(X),有如下性质:1,有X可以很容易算出Y;2,有Y不可能算出X;3,有Y不可能找到另一个X'使得H(X')=Y;3.5,如果X和X'相差很小,H(X)和H(X')则完全不相关。&/p&&p&这东西主要用于验证信息完整性——在一个信息后面放上这个信息的哈希值,这个值很小,例如256bit,而且计算方便。收到信息之后收信人再算一遍哈希值,对比两者就知道这条信息是否被篡改过了。如果被篡改过,哪怕只有一bit,整个哈希值也会截然不同。而根据哈希函数的性质,没有人能够伪造出另一个消息具有同样的哈希值,也就是说篡改过的数据完全不可能通过哈希校验。&/p&&p&非对称加密:这东西很好理解——对称加密就是有个密钥,可以理解成保险箱钥匙,你把消息加密变成密文,没有人能看懂这是啥,然后同一把钥匙解密成原来的消息。&/p&&p&非对称加密就是有两把钥匙,一把叫公钥,一把叫私钥,用其中一把加密的话,只能用另一把解密,反之亦然。另一个重要的性质是,给你密文,明文和其中一把钥匙,你还是解不出来另一把钥匙是啥。原理基本上是基于一些困难数学问题,例如因数分解和离散对数,常用的有RSA,Diffie-Hellman和ECC(椭圆曲线),比特币用的是椭圆曲线。&/p&&p&非对称加密除了和对称加密一样用于信息加密之外,还有另一个用途,就是身份验证。因为通常情况我们假设一对公私钥,公钥是公开的,而私钥只有本人有,于是一个人如果有对应的私钥,我们就可以认定他是本人。其中一个重要的应用就是数字签名——某个消息后面,发信人对这个消息做哈希运算,然后用私钥加密。接着收信人首先对消息进行哈希运算,接着用相应的公钥解密数字签名,再对比两个哈希值,如果相同,就代表这个消息是本人发出的而且没有被篡改过。&/p&&br&&p&以上是基础知识,至于区块链怎么实现的,很简单:&/p&&p&交易(数据)写在区块里。&/p&&p&第一个区块叫创世区块,写啥都行。&/p&&p&从第二个区块开始,每个区块的第一部分有前一区块的哈希值。此外,区块里的每一笔交易(数据),都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改,原因见上。&/p&&br&&p&到这为止有人可能会问:为什么要弄个链啊?直接所有数据加个哈希值不就行了?&/p&&p&因为——这个数据库并不是静止的啊。&/p&&p&数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。&/p&&p&至于如何增加区块,就涉及到第三个部分——共识算法。&/p&&br&&p&&b&3,区块链采用共识算法来对于新增数据达成共识。&/b&&/p&&br&&p&共识算法的目的,就是让所有节点对于新增区块达成共识,也就是说,所有人都要认可新增的区块。对于有中心的系统,这事很简单,中心说什么大家同意就好了,但是放到去中心化系统里,尤其是当有些节点有恶意的时候,这东西非常复杂,计算机科学里有个相应的问题,叫做“拜占庭将军问题”或者“拜占庭容错”(BFT)。&/p&&p&有很多用Lamport给出的那个例子来讲BFT的东西,我在这里换一个角度。&/p&&p&Lamport大神当年提出这个问题的时候在斯坦福研究中心给NASA做项目,他提出这个问题的原因并不是考虑类似比特币的应用场景(整个互联网成千上万个用户),而是考虑特殊背景下的一个简单的系统——&/p&&p&航天飞机的控制系统。&/p&&p&如果有航空背景的同学可能知道,飞机有三套独立的控制系统,为什么呢?因为任何系统都不可能完全不出故障,就算飞机控制系统的故障率已经极低了,还是有飞到一半这东西坏了的可能。于是我们可以弄两套独立的系统,同时坏掉的几率就会大大降低。&/p&&p&可是两套独立的系统还是不足以容下一个系统的错误——一架飞机迎面飞来,两套系统一个说要躲,一个说不躲,那到底是躲还是不躲呢?所以我们需要三台独立的系统,这样,如果有一个系统有故障了,还有两台能正常工作,能少数服从多数给出正确的结果。学过纠错码的同学对这个应该不陌生,这个系统的输出之间的汉明间距是3,所以可以纠正一位的错误。&/p&&p&然而,对于航天飞机,在冷战的背景下,万一某个系统不是坏掉了,而是被敌人控制了呢?三套系统还够吗?&/p&&p&答案是否定的,因为不同于单纯只是坏掉的节点,恶意节点可以做一些别的事来阻止整个系统达成共识。&/p&&p&这个部分略复杂要讲的话要单开一帖,所以我们只说最简单的情况(无签名同步系统)。&/p&&p&我们管三个系统叫ABC,正常工作流程是三个人每次得出结果就互相告诉一下,然后每个人选多数人同意的结果。这是个没有中央节点的分布式系统,也就是说三人不能聚在一起开个会啥的,仨人只能两两通信。这个时候,假设C有恶意,它的目标是破坏这个系统。于是,假设正确的读数是1,A和B都得出了1这个结果,这个时候C这个小婊砸告诉A说“我的结果是0,B也觉得是0”,同时打个电话跟B说“哎我觉得是0,A也这么说”,于是A和B就懵逼了。假设你是A,你听到了两个不同版本的B的答案,B说自己选了1,C说B选了0,可是A这个时候没法知道B和C谁才是那个骗了自己的小婊砸,因为如果B真的告诉A选了1然后告诉C是0,他听到的结果和现在是一模一样的。&/p&&p&于是结论是,拜占庭容错,也就是需要容下一个恶意系统而非错误系统,需要4个独立系统。&/p&&p&(当然,签名可以解决这个问题,但是这只是同步系统的情况,在异步系统里这问题会变得更加复杂,原因是正常节点的回答有延迟,而恶意节点可以不回复,所以,正常节点一方面要等另一个节点的回复,但是它又不知道对方会不会回复因为对方有可能会有恶意,而在收到回复之前,它完全没法判断对方是正常节点还是恶意节点,这个问题叫异步BFT,也是BFT的最复杂的情况,这里不再做更多的解释,下文提到的BFT算法,其实都是异步BFT的算法)&/p&&p&Lamport提出这个问题之后,有无数的算法被提出来,统称BFT(拜占庭容错)算法,其中最有代表性的叫PBFT,然后由于最近区块链的热度,无数针对区块链应用场景优化过的BFT算法也涌现出来,但是一个重要的问题是,所有目前的BFT算法,都只能应用在小型网络里。原因很简单——因为BFT这个问题是设计给类似于航天飞机控制系统这样的场景的,早期的算法考虑的也主要是这种场景。PBFT论文里考虑的就是一个5个节点的系统。就算算上新提出的BFT算法,也最多应用在不超过100个节点的网络里。&/p&&p&这个问题被搁置了很久,直到比特币的诞生——中本聪从某种意义上简化了这个问题,在比特币中,同样是共识问题,中本聪引入了一个重要的假设——奖励,他之所以能这样做的原因是,他考虑的是一个数字货币,也就是说共识这个东西是有价值的。&/p&&p&于是在这样的系统上,他提出了工作证明机制。&/p&&p&所有挖矿,矿工,最长链,分叉等等等等,都可以归结为一句话:&/p&&p&&i&说话是要有代价的,说真话是有好处的,说假话是要扣钱的……&/i&&/p&&p&这就是目前两类共识算法的核心区别:&/p&&p&BFT共识模型:恶意节点可以干任何事。&/p&&p&比特币共识模型:模型中有公认的“价值”,每个节点说话都需要一定代价,诚实节点会受到奖励,而恶意节点由于只付出代价而收不到奖励,变相受到了惩罚。&/p&&p&也就是说,BFT共识模型其实涵盖了比特币共识模型的场景,比特币共识其实放宽了BFT共识模型的限制。&/p&&p&比特币共识对于BFT的优势在于,由于给恶意节点的能力做了限制,恶意节点所能造成的破坏大大降低了,尤其是对于异步系统——BFT共识里恶意节点可以一直拒绝相应而诚实节点还需要一直等它(因为不知道它是不是恶意的),而对于比特币共识,随你便,你不响应就没有奖励可拿。于是,比特币共识算法可以应用于成千上万个节点,而且,任何人随时都可以加入,不需要预先在网络里注册自己的身份(而BFT算法里,网络中节点的数量和身份都必须是已知的)。&/p&&p&但比特币共识的缺陷在于,首先,得有个有价值的东西,也就是说放在比特币里这东西还行,以太坊的话现在可能也凑合,但是其他数字货币嘛……BFT共识有个严格的限定,就是恶意节点不能超过总数的1/3,然而其实比特币共识没有这样的限制,唯一的限制就是假定大部分节点都是理性的,是逐利的,也就是会采用最佳的策略来赚取最大的价值。所以,严格来说,自私挖矿这种行为在比特币共识里是允许的,而多数攻击,其实也算不上一种攻击,因为这些都没有突破比特币共识的框架——如果这个价值无限大,比特币共识是非常可靠的。然而这并不

我要回帖

更多关于 电子合同与区块链 的文章

 

随机推荐