写点什么

看得懂的区块链及智能合约概念

用户头像
石君
关注
发布于: 2020 年 05 月 19 日
看得懂的区块链及智能合约概念

金融领域和计算机领域的专业术语越来越多,大量的缩写、简称让人读的云里雾里,用于专业交流也就算了,如果想要普及,让更多的人感受到金融、计算机对人们生活的影响,使用大量专业术语的做法,不是故意为之,就是又蠢又坏。



故意为之的原因有很多,抬高行业门槛,或者让自己显得非常专业;别人这么说所以我也这么说则属于蠢,深究起来根本不理解;刻意营造复杂的气氛和语境则属于坏,目的就是要把人绕晕,无脑跟我走就是了。



区块链领域就是这样一个环境,本质上区块链是一种数据结构,比特币、以太坊、智能合约等等是以区块链为基础的业务应用。这样一个涉及计算机、金融等领域的交叉知识,简直就是模糊化、概念化的温床。



厘清概念很有必要,不人云亦云已成为千里行之跬步;而且我认为对于一项新技术新概念而言,上来就钻研它的技术原理、变量,不是一条合适的路,更妥当的方式是适当放过细节,详略得当,先从整体上把握这个技术出现的背景、技术路线、与相似产品的差异,然后再深入到代码、技术细节。



1、区块链

1.1 概念

中心化管理模式是思维惯性。即使是p2p下载,一开始也必须由中心节点告诉你,哪些终端上有你还没有下载到的部分,你应该通过xx地址去找它,只是后来才出现了完全不需要中心节点的DHT解决方案,也就是我们常见的磁力链接。



本质上,区块链是一种实现了数据库功能的链表,数据库用来存储交易数据、用户信息,链表用来查找、记录交易这个动作。



或者这么说,只要能够满足不依赖于某一个或一组的权威、中心,去记录数据、查找数据而实现的网络,都是具备去中心化能力的。

1.2 类比

为了更方便地理解,我们把基于区块链实现的比特币交易,与传统银行转账做类比:



  • 不同于银行中心化的运行模式,区块链构成了一个分布式网络,网络中没有权威节点,不依靠权威节点记账、计算余额,只能靠算法和机制来实现:

  1. 区块链网络是一种拓扑结构,自然就要设计某种“路由算法”,算出拓扑节点之间相互通信的路径;

  2. 当某个分布式系统具有自己的拓扑结构,它本身成为一个“覆盖网络”(“Overlay Network”),通俗地讲就是“网络之上的网络”。对于大部分 DHT 而言,它们是基于互联网之上的“覆盖网络”,它们的数据通讯是依赖下层的互联网来实现的;

  3. 分布式系统在设计拓扑结构和路由算法时,只需要考虑节点之间如何通信,而不用考虑其下层网络的属性(比如:协议类型、IP 地址、端口号)。  



  • 一笔成功的传统银行转帐记录如下图所示。其中的核心要素是交易日期、付款人、付款账号、收款人、收款账号、金额。银行后台有一堆这样的记录,加加减减,最终得到你账户中的余额。区块链使用密码学知识生成了每个人的私钥、钱包地址,等同于人、账号,又通过链表,记录了你所有的交易行为,串起来,就可以得到你现在的余额。这样,就基本具备了交易的功能。



  • 现代化银行的转账业务,是业务驱动技术发展的结果,脱胎于手工记账、中心汇总,在出现计算机之后逐步实现了电子化、自动化;但区块链不一样:

  1. 区块链的概念首次出现在中本聪在比特币白皮书《Bitcoin: A Peer-to-Peer Electronic Cash System》(https://bitcoin.org/bitcoin.pdf )中,根据激励机制一章的内容:“By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block.”(翻译:对每个区块的第一笔交易进行特殊化处理,该交易将产生一个由改区块创造者所有的心的电子货币。),也就是说,区块链的产生和货币的产生是密不可分的,技术就是业务,业务就是技术,两者融为一体,不能孤立。

  2. 后来区块链技术被应用到更广泛的领域,才出现了区块链2.0智能合约,出现了3.0“区块链+”,出现了公有链、联盟链,区块链的应用范围拓展到游戏、民生等各行各业。



2、智能合约

2.1 概念

很多文章在谈及智能合约的概念的时候,最喜欢这么介绍,仿佛是抄到了一起:

“智能合约”(Smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表于自己的网站的几篇文章中提到了智能合约的理念,定义如下:“一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。



介绍完之后立马让人产生更多疑问,这究竟跟我在淘宝买东西把钱交给支付宝的承诺,有什么不同?



事实上,百度百科第一句话才是最重要的,当然,百科是来自Wikipedia:

智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。



也就是说,支付宝平台那种第三方承诺不属于智能合约,智能合约不要第三方,是在交易双方博弈的、利己背景下也能达成的交易。



从这一点理解,智能合约是随着区块链技术的出现,以及基于区块链技术出现的Dapp(Decentralized Application,去中心化应用),才得以在首次提出后将近20年,依托于Dapp实现。



web时代出现web application,移动互联出现移动App,去中心网络出现Dapp。磁力链接也是一种Dapp,磁力链接是基于Kademlia技术实现的,智能合约也是一种Dapp,智能合约是基于区块链技术实现的。磁力链接用于p2p文件下载,智能合约可以用于金融、游戏以及其他资产交互与登记的应用。

2.2 应用场景

想象一个场景,我们在没有支付宝这种第三方信用平台之下,个体与商家怎么做交易?

(1)当面交易

我跟商家当面交易,一手交钱,一手交货——菜市场买菜就是这种模式。

(2)理想交易

如果做不到当面交易,商家在网上发布一个消息,说他那里有一件商品价值1块钱,我给他转入1块钱,商家就把商品发给我,我确认收货,商家收到1块钱。



(3)交易博弈第一回

听上去不错,但是这里面有问题。如果我转了1块钱,但商家根本没有货,那我只能白白浪费1块钱。在没有担保的情况下,我肯定不会转出这1块钱,这个交易不可能完成。

怎么办?商家说那这样,商家先转进去1块钱表示他有1块钱的商品,并作为担保。然后我再转入1块钱,之后商家发货,我签收,商家得到2块钱。



(4)交易博弈第二回

听上去不错,但是这里面还是有问题。如果我收到货之后,就是不签收呢?商家不仅损失了商品,还损失了1块钱。



怎么办?我说这样吧,商家先打进去1块钱,我打进去2块钱。我收到商品之后,肯定需要触发签收操作,签收之后,商家得到了2块钱,再返还我1块钱。如果我不进行这样的操作,就会损失1块钱。



(5)交易博弈第三回

当然,上面也可以采取超时自动确认收货的方式,迫使交易闭环。



但这里面还是有问题。比如商家发给我的商品有问题,根本不值1块钱,没有任何担保,没有“店小二”协调,我再找商家的时候他不搭理我怎么办。是不是还需要商家多缴纳1块钱作为保证金。



通过这个例子,我们很容易发现,在没有中间人担保的场景下,两个陌生人也是可能完成一笔交易的,但这里面充满了博弈,需要作出良好的设计,平衡双方的利益,促使方式保有权利的同时行使义务。

3.总结

区块链的早期应用是货币交易、金融交易,随后是智能资产,包括房产、汽车等实物资产及知识产权、司法认证、公共档案等虚拟资产。基于以上理解,这时候我们再看区块链的技术细节,比如哈希、公钥、私钥、数据签名、智能合约重放攻击等安全漏洞,就会更深刻更了解其中的所以然。



接下来的文章,笔者还将陆续带来智能合约安全漏洞的分析,敬请关注。



发布于: 2020 年 05 月 19 日阅读数: 382
用户头像

石君

关注

与其更好,不如不同 2020.03.26 加入

分享孤独,成为故事,分享思考,成为思想。 做信息安全领域的探险家。

评论 (2 条评论)

发布
用户头像
区块链是好东西,但现在落地不多。
2020 年 05 月 21 日 08:49
回复
用户头像
感谢科普,期待更多佳作。
2020 年 05 月 20 日 09:23
回复
没有更多了
看得懂的区块链及智能合约概念