量子学派区块链课程第五章《 世界宪章 代码即法律》读书笔记

IMG_20180820_192310.jpg

继续学习量子学派的区块链课程,在学习了其基础知识、工作原理、共识机制后,阅读学习《世界宪章 代码及法律》。记录如下:

见:
• 如果代码不可篡改,
• 就必须保证代码没有漏洞,
• 这是区块链最纠结的地方。

• 区块链世界的“代码悖论”
• 代码曾经是自由的,越优秀的代码越自由。就像越好的语言扩展性越强一样,然而一旦在代码中添加区块链概念,就实现了不可篡改性。既然代码不可篡改,就必须保证代码没有漏洞。可是,谁又能一直保证自己不犯错误呢?这是一个难题。
• 如果说信任的机器是区块链的躯干,共识机制是区块链的灵魂。而在区块链的世界里,无论是躯干还是灵魂,最终都是由代码构成。代码相当于是区块链的DNA。
• 在现实世界,法律作为一种配置社会资源的机制,被社会经济发展的客观要求所决定,并直接影响着经济运行的全部过程,随着社会分工细化和人类活动范围日益扩张,法律逐渐变成国家制度的框架下加以确认的一套格式化规则体系,它能够简化社会关系的复杂程度,节约交易成本,帮助社会成员安全规范有序的进行交易。不管是基于社会契约论,功利主义论,暴力威慑论,还是法律正当论,法律的约束力都从未突破人的自我意志。
• 也就是说在现实世界,法律的解释是多样性的,而在区块链的世界,由代码完成的交易输出的解释是唯一的,没有歧义的。代码的解释是唯一性的。

• 法律的本质是“合约”
• 现行法律的本质上是一种合约,它是由人(生活于某一社群的)和他们的领导者所缔结的,一种关于彼此该如何行动的共识。个体之间也存在着一些合约,这些合约可以理解为一种司法,相对应的,这种司法仅对合约的参与者生效。而合同的概念可以追溯至远古时代,古希腊和古罗马人认为:合同是解决信任透明度和执法问题的正式协议,如市场交易合同、企业组织生产经营活动的各种内部规章以及其它一些契约关系。
• 目前,主要依靠当事人的忠实履约或我第三方来保障合约实行。在具体操作过程中合约会面临着一系列的成本,比如:交易双方在要约与承诺阶段,因大量的谈判而发生的签约成本,合同签订过程中,双方还可能根据不同的情况对合同条款进行修改补充,以使合同更加完备而产生的修约成本,合同的维护和执行过程中发生的履约成本等。
• 例如年前给某人一笔钱而签订了合约,但他最后决定毁约不还钱,此时你多半会将对方告上法庭,但在现实生活中,打官司这种事情充满了不确定性。通常情况下将对方告上法庭,意味着你需要支付高昂的费用,聘请律师帮你在法庭上展开辩论,这一过程基本上旷日持久,即使你最终赢得了官司,也可能会遇到一些问题,比如对方没有财产可供执行。而对你比较有利的是,当初你和借款人把条款写了下来,订立了合约。
• 但法律的制定者和合约的起草者们都必须面对一个不容忽视的挑战:在理想情况下,法律或者合约的内容应该是明确而没有歧义的,但现行法律和合约都是由语句构成的,而语句,是出了名的充满歧义。

• 合约:区块链世界的“法律前置”
• 一直以来,现行的法律体系存在的两个巨大难题。第一,合约或法律是由充满歧义的语句定义的;第二,强制执行合约或法律的代价非常大。
• 随着区块链技术的诞生,这些问题将被以更友好的方式解决。由代码组成的区块链技术,基于法律框架,通过预设自动执行的智能代码合约在约束并引导人们的行为时引入技术、依靠技术使信息更加透明、数据更加可追踪、交易更加安全,且大大降低了执行成本。这其实是一种法律前置。
• 在区块链世界里,由代码构成的智能合约,形成了区块链的“自规则”,形成了区块链的法律,话句话说:代码即法律。
• 代码对应着语言中的文字,但不同于文字的“多释义”。代码的含义,具有唯一性。代码作为一种核心工具,我们可以用它来构筑并保护我们最基本价值理念的网络空间,同样也可以用代码使其消失殆尽。斯塔福德劳伦斯莱斯格教授在《代码》中反复强调:基于代码的软件协议,能够像任何法律规则一样规管我们的生活。

• 互联网的基础架构就是TCP/ IP协议,这个协议规定数据包是如何在网络中进行传输和交换的,而就是这个简单的协议,保证了互联网的迅猛发展。因为他没有试图在基础的网络架构里加入太多的东西,比如安全和控制等等,从而保证了基础架构的简单和灵活性。互联网的这种架构,让创新在网络的边缘节点来进行,从而有很多的创新应用得以发明出来。
• 如果当初是按照美国电话电报公司的想法来规划互联网,那么它今天就不会是这个样子了。作为一个企业,美国电话电报公司必然会在基础的架构里加入很多的功能和控制,并会对边缘节点的接入应用进行限制,那样的互联网就不会像今天这样的自由。
• 一开始是美好的,控制着整个互联网的核心运作的就是TCP/IP协议,它是严格执行这个协议的程序代码,在计算机网络的世界里,所有的规则定义是以代码来实现的,然而发展的路径却并不是由程序员来说了算。第一代架构是由非商业组织研究者和黑客建立的,他们关注于如何建立一个网络;第二代架构则是由商业建立的;到了第三代架构,已经是政府的作品。现实社会的法律开始作用于网络空间,代码越来越不法律,反而法律开始影响网络的构架,开始影响一行行代码,为了维护网络空间的稳定,网络实名制被提上议题,新发的帖子需要通过关键词审查,为了网络纯洁,图片需要改变外链规则。在网络空间内代码实现了法律所需要的效果,法律化身为代码。
• 不过,到了区块链时代,它区别于传统互联网,有着自定共识规则和自动实施规则的能力,区块链技术可以通过技术方法落实契约原则,解决信任问题,这是契约的前置,信任的锁定,法律的嵌入,社区的共识。每一笔交易都透明公开,通过共识协议和可编程的智能代码和运行,是以建立互信、创造信用、通过共识协议和可编程的智能代码合约运行,是可以建立互信,创造信用,可以制定和执行交易各方认同的商业条款。引入法律规则和监管控制节点,确保价值交换符合契约原则和法律规范,避免无法预知的交易风险。谁要改变这样的代码,就是与整个社区为敌,代码就是法律。

• 代码实现了哈希值的计算
• 接下来我们再来了解一下它的流程,弄明白它为什么在技术上更加可靠。
• 我们知道比特币使用的是哈希加密算法来维护信息的安全性,那么代码要如何实现这一过程呢?以Python语言为例:
• 首先打开终端,输入Python,并单击enter,然后你将进入Python REPL,在这种环境下,你可以直接使用python命令,而不是在单独的文件中编写程序。最后输入以下数值,在每行之后,敲击Enter,在标记处输入TAB:
• import hashlib
• def hash(mystring):
• [TAB]hash_object=hashlib.md5(mystring.encode())
• [TAB]print(hash_object.hexdigest())
• [ENTER]
• 这样你就创建了一个哈希函数,该函数将计算出某一特定的使用md5哈希算法的字符串的哈希值。将字符串插入哈希函数的括号中,便可运行该函数。
• 输入字符插入括号,按ENTER键即可查看该字符串的哈希值随机值。而做一点微小的改变,将会生成一种完全不同的哈希值。
• 代码实现了哈希函数的运行,在区块链中,通过代码就可以计算出哈希值,基于哈希算法的数字加密也才得以更好地进行。

• 基于代码编程的区块链
• 想要区块链自规则能够完整运行,少不了代码的编程。下面从代码的角度实际讲一下如何形成一个完整的区块链。
• 1、逻辑步骤决定区块结构。
• 这其中最必要的部分是:
• index(下标)、timestamp(时间戳)、data(数据)、hash(哈希值)、和previous hash(前区块哈希);
• 2、确保区块链的这个块中必须能找到前一个块的哈希值,以此来保证整条链的完整性;
• 3、哈希加密。为了保存完整的数据,需要用哈希算法计算整个区块;
• 4、块的生成。要生成一个块,必须知道前一个块的哈希值,然后创造其余所需的内容,块的资产部分是由终端用户所提供的;
• 5、块的存储。内存中的Jacascript数组被用于存储区块链。区块链的第一个块,通常被称为“起源块”,是硬编码的;
• 6、确认区块完整性。在任何时候都必须确保一个区块或者一整条链的区块的完整性能够被确认,在我们从其他节点接收到新的区块,并需要决定接受或拒绝它们时,这一点尤为重要;
• 7、选择下一个链。任何时候在链中都应该只有一组明确的块。万一出现冲突,前面的主干区块链会选择有最大数目认同的链;
• 8、节点控制,某种程度上用户必须能够控制节点。这一点通过搭建一个http服务器可以实现。
• 至此,一个区块链世界已经创建完成,在200多行的代码的编程中,这个数字世界的法律被建立,“代码即法律”得到了很完美的诠释。
• 但值得注意的是,以上的代码只是最简单的一种代码架构,像比特币和以太坊的代码,经过这么长时间的发展,已经发生了一些变化,它们要复杂的多,架构肯定也完整的多。

• 区块链世界法律架构的确立——以太坊为例
• 以太坊是通过数字货币和编程语言的结合,给用户提供了一个智能合约编写的平台,用户能够以智能代码合约为底层系统确定自己区块链世界的“法律”。
• 以太仿的智能合约,有一个完整的编程语言构成,有时也被叫做以太脚本。我们都知道代码语言是人类用来控制计算机工作的,而反过来计算机则无法猜透人类的意图,因此用任何代码语言写好的指令,对计算机来说都是准确无误,没有歧义的。也就是说计算机如何执行一段代码是不存在歧义的,除非是你的代码编写出了问题。在同样的条件下,这段代码总是会按照既定的步骤执行,这种特征正是人类现行法律与合约中所缺失的,有了以太脚本之后,我们就可以建立具备这种特征的合约了!
• 考虑到大部分的合约都涉及到经济价值的交换,或者具有某种经济后果,因此我们可以在以太网上用代码实现人类社会中各式各样的法律与合约。用代码实现合约,可以有严格明确的定义,并且可以自动被执行。如此说来,有些晦涩难懂,我们还是一起来看个简单的例子吧。
• 假如你有个古董,然后小强想以88888元的价格购买,同时承诺会在5月份进行付款。按照传统的交易流程,首先会与小强签订一个合约,合约里规定张某在5月份向你付款,合同签订完毕,你就将古董的控制权转移到了小强手里,等着张某到5月份给你付款。等到了5月份,按照你对合约的理解,小应该付款了,但这时候小强说,他认为合同里的5月份指的是明年5月,而不是今年5月,这个时候你就要准备好花钱,请律师去法庭上好好讨论一下,合同里的5月份到底是何年何月了。
• 而如果基于以太坊,你可以用以太脚本定义出这份合同的智能代码合约,相比于现有的律师们起草的合约要通俗易懂的多。如果采用这种方式,简单的代码合约一般的用户就可以起草,特殊一点的代码合约可能需要资深一点的专家。作为结果,我们得到的这份合约,完全消除了类似“我认为,你认为”的这种误解,缔约双方是否依法履约的不确定性也一并被消除。也就是说,代码脚本写成的这份合约,既定义了合约内容,又保证了合约内容的执行。
• 本质上而言,由代码构成的合约是一个无歧义且无法毁约的合约,只要双方都认同合约,那么合约就一定会执行,不管其中是否有人想毁约或者提出歧义,代码就是最好的语言,代码的自规则将自行运转,是不以人的主观意志为转移的机器法律。

• 结语:代码即法律
• 法律作为一种社区共识,它是以人性作为起点,以道德作为基础,以利益作为条件,以暴力作为信用而形成的一个“合约”,但这个合约很容易在高收益的诱使下被破坏,然后违约者被发现后才会受到法律制裁,这是一种“过去式”的惩罚机制。
• 而区块链代码是一种内在的规则,为软件代码定义的对应的算法运算规则,如果不遵守代码的运行机理,程序将返回一个error并停止运行,这是一种"进行时"的执行机制。代码所组成的进行式机制,从根本上保证了整个规则体系的运转,如果代码无漏洞,该体系就无法被打破。
• 因此代码意味着规则,区块链世界的宪章就是代码,代码即法律。
• 当然,最后的区块链世界会不会和互联网世界一样,仍然是由法律来主宰代码,谁也没有办法在这里预测。有时候我们低估了技术的力量,有时候我们也高估了人性的底线,但由于区块链技术的介入,如果想要修改区块链世界的宪章,那将是一场更激烈的战争。

• 感:
• 作为执业多年的律师,在长期的法律应用实践中,早已适应了现今的法律体系及规则,以及它的纠纷解决机制。说实话,对于这一早已适应了的体系,却没有思考过能有置身其外的视角,来审视整套体系的优劣。
• 该文认为现行的法律体系的合约和法律是充满歧义的,且强制执行合约或法律的成本巨大。细细思考,不得不承认这是事实。

• 思:
• 现行的法律体系,是架构在由文字、语句构成的成文法中,合同合约也是由文字构成。而文字与语句,都是很容易产生歧义的。解决争端的机制需要成本,这将对于交易达成构成影响。
• 在接触学习区块链之前,从未设想过计算机程序代码的自动执行,能够产生自动执行合约的作用。也由此,开阔了自己的思路,了解了“智能合约”的概念。智能合约的输入和解释是唯一的,执行的结果也是唯一的。交易安全透明可追踪,这是一种法律前置,也可以理解为是将文本意义上的合同,预先转化为没有歧义且交易各方均认可的代码,确保合同能够自动得到执行。不会产生任何歧义,也不会产生可能导致诉讼或仲裁的纠纷。
• 虽然,这还是一种前瞻性的猜想,技术的发展、人性的底线,在具体的新的变革到来后,还需要接受时间的检验。但对于律师而言,如果这些设想实现了部分,那对于生产关系的变革是巨大的,对于律师行业的影响也是巨大的。整个法律体系的架构将发生巨大的变化,许多现行的法律及争端解决机制将不复存在,律师的法律服务内容及方式将会巨变。这些,都是值得每一个法律人认真思考并在实践中摸索前行的。

• 行:
• 参与其中,保持绝对的理性与开放,持续地学习,并以写作的方式记录。

你可能感兴趣的:(量子学派区块链课程第五章《 世界宪章 代码即法律》读书笔记)