智能合约被忽视的一面
他们说,“智能合约不具有法律效力”。
他们说得对,但是忽略了重点。
-14 世纪的壁画,由 Ambrogio Lorenzetti 创作,名为“好政府对城市生活的影响”-
Nick Szabo 创建智能合约的初衷就是要将它与法律合约区别开来。 他希望创建新的数字机构:通过代码执行合约条款,而不是通过法院。 显然,实体法院(靠纸质公文运转的效率低下的裁决中介)无法跟互联网同步。 虽然法律体制已经竭力为许多人提供服务,但迅速涌入的跨辖区交易平台将越发凸显其优势。
甚至中本聪也表示有兴趣通过比特币脚本实现各种约定。 如今,像 Tezos 这样的智能合约平台进一步发展了 Szabo 的研究成果,允许我们在互联网上与陌生人作出约定——通过代码的方式。
-在 Ambrogio Lorenzetti 壁画中,舞者与乐师在善政下得以相互协调-
为什么我们需要合约?
在一个没有合约或货币的世界里,我们只能局限于同步的易货交易——你有一个苹果,我有一条面包,我可以当场用面包换你的苹果。 然而,我们交易的越多,就越有可能陷入经济学家所谓的需求的双重偶合(double coincidence of wants)问题:我们之间达成交易的前提必须是我们同时想要对方手里的东西,而这种情况不常出现。
货币是解决这个问题的一种方法。 我可以卖了面包换到钱,然后用钱换苹果或其他物品。通过钱,我们可以把双重需求减少成单一需求:我无需持有你想交易的东西;我可以通过后续交易获得苹果。这样时间限制就被削弱了。
合约的工作原理与货币类似,但它们能促进更多潜在的交易。 合约不要求同步交换价值,甚至不需要以货币作为中介。 我现在可以把一条面包卖出去,买方可以答应下个月付款给我。 这种能力从根本上扩展了我们可以进行的交易类型。
但仍有一个问题。 你怎么确定我会履行承诺付款给你? 我们如何建立可信的约定?
履行约定
-《善政下正义得到彰显》(作者:Ambrogio Lorenzetti)-
早期现代思想家托马斯·霍布斯(Thomas Hobbes)认识到了执行承诺的问题:
“言语的约束力太弱,无法抑制人们的野心、贪婪、愤怒等热烈的情绪,因为言语不具有强制力,无法威慑人们”(利维坦,第 69 页)。
此外,他认为政府的主要职能之一确保合约的强制执行。 也就是说,只有武力才能胁迫我们履行承诺。
耶鲁大学法学院教授兼前院长 Anthony Kronman 指出,国家可以被视为强制执行机器。 他还表示,如果这台机器被私有化,那么缔约方需要付费才能使用。
在 20 世纪 90 年代中期,Nick Szabo 几乎照搬强制执行机器的概念创造出了智能合约,一种可以在安全硬件上运行的合约,无需依赖法院就能强制执行合约内容。
智能合约仅仅是区块链上运行的代码吗?
然而,大约在 2013 年,加密货币领域扩展了智能合约的概念。 例如,以太坊白皮书使用“合约”泛指区块链上运行的代码。
这一新定义转移了智能合约的重点。 这些“合约”的目的尚不清晰,绝不只是简单地执行约定。 新的定义也掩盖了智能合约丰富的发展史:继 20 世纪 90 年代 Szabo 的研究成果之后,Agoric 的 Mark Miller 在 2003 年写了一篇关于拆分合约(split contracts)的论文(即由两个或以上部分组成的智能合约,其中有一些部分是依靠代码自动执行的,另一些部分——如指令仲裁——则不是)。 有的智能合约平台甚至早于互联网,例如 AMIX,美国信息交易中心,“世界上第一个针对信息和专业知识的在线市场”。AMIX 创建于 80 年代和 90 年代,堪称时代的翘楚,能让用户以顾问的角色安全地出售自己的经验。
中本聪认为履约将是比特币未来的一个重点发展方向。 中本聪在 2010 年表示:“它支持我多年前设计的各种可能实现的交易类型,例如托管交易、保税合同、第三方仲裁、多方签名等等。如果比特币得到广泛的认同”,ta 进一步解释道,“这些都会是我们未来想要探索的方向。”
Tezos 根据智能合约的原义创建了一个平台:智能合约不作为世界计算机的代码,而是一种交易的实现方式。 于此同时,Tezos 使用的区块链语言是 Michelson,这种图灵完备并指定形式的语言能支持各种不同的用例。
-《坏政府的影响》(作者:Ambrogio Lorenzetti)-
“智能合约”能否取代法律合约?
智能合约真的可以取代法律合约实现某些用途吗? 答案是肯定的,但目前这些用途很有限。
假设我想在网上销售一件商品,但不是通过 ebay ,而是点对点的交易市场。 如果是在网上向陌生人出售物品,很多情况下还需要跨越法律管辖区,会产生英国政治哲学家霍布斯指出的交易风险问题。 在交易过程中,无论谁先履行合约都要承担对方违背合约的风险。 如果卖方先发货,买方可能不会付款;如果买方先付款,卖方可能不会发货。
这个问题的解决方案是使用多重签名的智能合约,如 Milo Davis 提供的这个例子或是 OCamlPro 提供的用 Liquidity 编写的更高级别的例子。 在针对在线交易的多重签名合约中,可以要求至少获得三方(买方,卖方和中立的第三方)中任意两方的签名。 第三方可以是任何人(或任何事物!),只要能让我们相信 ta 能公正地解决争议即可。 特别要注意的是,第三方仲裁员的权力非常有限,ta 们只能在买卖双方出现争议的情况下,决定将钱汇给其中一方。 仲裁员不能私吞这笔钱或是将它汇给买卖双方以外的其他人。[1]
细心的读者可能会注意到,为了让这套机制运作起来,交易金额必须交给第三方托管。 目前,智能合约不能从账户中取钱或预先扣押未来收入。未来的研究应优先考虑如何实现非托管付款的机制,这样才能让更多类型的使用者与协议参与进来。
-《坏政府的寓言》(作者:Ambrogio Lorenzetti)-
法律合同和自我约束型约定
另一方面,正如 Kronman 所说的,法律合约可以依赖于国家“无可匹敌的强制力”。 但是,国家权力是一种有限资源,在缺乏价格机制的情况下必须实行定量配给。 因此,法院需要分辨哪些约定值得花时间去强制执行,哪些不值得,从而衍生了一些学说,例如美国法律中的约因学说(doctrine of consideration)。
要以智能合约的形式执行某些可信约定仍需进行大量的研究。 但是,目前也有一些智能合约可以执行法律合约无法履行的约定。 例如,下图是 Milo Davis 用 Michelson 写的智能合约,它会在某个时间段内锁定一定量的 tez 币,之后它会将 tez 币发送到记录在档的合约中。
parameter unit;
storage (pair timestamp (pair tez (contract unit unit)));
return unit;
code { CDR; # Ignore the parameterDUP; # Duplicate the storageCAR; # Get the timestampNOW; # Push the current timestampCMPLT; # Compare to the current timeIF {FAIL} {}; # Fail if it is too soonDUP; # Duplicate the storage value# this must be on the bottom of the stack for us to call transfer tokensCDR; # Ignore the timestamp, focusing in on the transfer dataDUP; # Duplicate the transfer informationCAR; # Get the amount of the transfer on top of the stackDIP{CDR}; # Put the contract underneath itUNIT; # Put the contract’s argument type on top of the stackTRANSFER_TOKENS; # Make the transferPAIR} # Pair up to meet the calling convention
你可能会疑惑,怎么会有人会使用这样的合同。 为什么会有人想要在特定时间段内封锁自己使用代币的权限? 因为我们的短期行动往往与我们的长期目标对立,而自我约束型约定可以帮助我们解决时间贴现 (temporal discounting)造成的问题(Elster,“Ulysses Unbound”,第 25 页)。 [2]
Jon Elster(以及后来的 Cass Sunstein 与 Richard Thaler 在其著作《助推( Nudge)》 中)描述了这样一个案例。 在信用卡出现之前,家长们通过圣诞储蓄来确保他们有足够的钱购买礼物。 他们会从每笔薪水中取出一部分存到圣诞储蓄,直到 12 月才能取出。
-1954 年左右的一则圣诞储蓄广告-
法律是不承认这种单方合约的。事实上,这一概念在现代法律框架中甚至没有意义。 但是,智能合约很容易就能应用到这种自我约束型约定中,并免去了第三方之需。 自我约束型约定在交易中非常有用(正如诺贝尔奖得主经济学家 Thomas Schelling 提出的)并且可以说是宪政主义的基础(不过这一领域仍然需要大量研究)。
互联网时代的约定
随着比特币的出现,一场经济学革命已初现端倪,但我们仍在等待智能合约成为现实。 诚然,智能合约需要更多功能才能与法律合约相媲美。但是,请别忘记,大多数人无法订立法律合约,而且通过法律诉讼解决争议的成本通常会很高。 2008 年,据联合国委员会估计,全球有 40 亿人得不到法律的庇护。 尽管智能合约仍处于起步阶段,但它们或许能比传统机构更快地满足全球贫困人口的需求。 智能合约强制要求我们预先解决歧义,扩宽法律通道,且成本低于法律裁决。 作为开源软件,智能合约允许人们对强制履约进行快速实验,并以前所未有的速度提高法制能力。
延伸阅读
论文和文章
- Milo Davis’ website on Michelson
- “Contract Law and the State of Nature” by Anthony T. Kronman
- “An Essay on Bargaining” by Thomas Schelling
书籍
- Contract as Promise by Charles Fried
- Ulysses Unbound by Jon Elster
[1]: 他们在决定把钱汇给卖方还是买方时依然存在受贿的可能性
[2]: 合约把 tez 币锁定起来也有利于防盗
阿剑按:作者的想法跟时下流行观点可谓针尖对麦芒:智能合约做不到法律合约能做的所有事情,但智能合约也有法律合约做不到的事情。重点是她提醒了我们,Nick Szabo 之后,有人发展了智能合约的理念,而其中可能蕴藏着启发。
原文链接: https://medium.com/tezos/the-forgotten-contracts-68a0c1d2f3de
作者: Kate Sills
智能合约被忽视的一面相关推荐
- 区块链100讲:智能合约审计指南
智能合约代码的审计,目前还不是技术社区内经常会讨论的主题.今年3月6日,发表在博客网站[Schneier on Security]上的一篇博客(原文链接:[https://www.schneier.c ...
- 中国平安:杀进智能合约,你怕不怕?
智能合约赛道迎来行业玩家,金融壹账通想做金融全领域 合约管理是金融行业日常最基础的工作之一,也是金融行业数字化转型的深水区. 近年来,随着人工智能.云计算.区块链等技术的涌现,金融机构在前台营销和后台 ...
- 智能合约如何可信的与外部世界交互
区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作.例如,按照农产品价格情 ...
- 比特币开发者:BSC可能会超越以太坊成为顶级智能合约平台
比特币开发者Udi Wertheimer发推称,我觉得这是以太坊作为顶级智能合约平台的最后一个周期了. 昨天币安智能链(BSC)结算500万ETH,以太坊本身结算700万ETH左右.这可能会很快结束. ...
- BSN智能合约开发培训-CITA(三)
1 智能合约的定义 1994年,计算机科学家和密码学家 Nick Szabo 首次提出"智能合约"概念.它早于区块链概念的诞生.Szabo 描述了什么是"以数字形式指定的 ...
- 「镁客·请讲」OracleChain老狼:EOS智能合约生态唯上,超级节点的竞争,不看吹牛先看做事...
"如果21个出块节点都是靠返利.贿选选上去的话,EOS生态最后可能会走向消亡." 最近,要说币圈最热的话题是什么,非EOS超级节点的竞选莫属.根据EOS GO社区的最新报告,目前全 ...
- 智能合约安全测试指南
智能合约安全测试指南 由于智能合约的漏洞,在去中心化应用的世界中,利用和攻击一直都很普遍,可以从各种来源看到,例如: https://rekt.news/ https://defiyield.app/ ...
- Solana区块链智能合约开发简要流程
Solana区块链智能合约开发简要流程 Solana区块链是当今市值第5的区块链,已经有很多知名生态准备部署在Solana上.相比于类以太坊(EVM)区块链来讲,Solana上智能合约开发(叫Prog ...
- 【智能合约系列009-如何做智能合约审计?】
研究报告[Finding The Greedy, Prodigal, and Suicidal Contracts at Scale])指出,目前在以太坊中,有89%的智能合约代码都或多或少存在安全漏 ...
最新文章
- 慢SQL,压垮团队的最后一根稻草No.92
- printf 格式输出代码大全
- CENTOS6.3下zabbix安装部署
- 4.6 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)
- java复制类mytool_MyTools
- VTK:图表之SelectedVerticesAndEdges
- Docx:docx.opc.exceptions.PackageNotFoundError: Package not found at
- java集合清空_java 集合删除数据
- Jquery全选单选功能
- python与专业相结合应用案例_Office高级应用与Python综合案例教程(普通高等教育十三五规划教材)...
- 走进我的交易室03_第一步成功的外部障碍
- linux日志按日期生成器,Cron表达式生成器
- 在计算机中添加用户时提示拒绝访问,教你怎么解决打印机拒绝访问问题
- HowTo 激活非常规方式安装的正版OEM Vista
- 机器学习_经典模型_逻辑回归(logistic regression)
- 极限中0除以常数_酶动力学中的一些常数简介
- VScode 本地或远程单文件和多文件调试精简配置
- kali虚拟机安装提示安装系统步骤失败
- 计统大作业Hello P2P
- 诊断和响应故障_恢复表和表分区
热门文章
- webstorm 主题 配色
- 施工员是做什么的?施工员证书怎么考?
- Firewalld 日志开启.
- android wear 兼容模式,TicWatch Pro智能手表兼容模式如何开启?TicWatch Pro兼容模式开启教程...
- 富豪独子失踪男子冒顶41年 背后的真相是……
- maven与layUI的权限设计
- BCSP-玄子前端开发之JavaScript+jQuery入门CH02_JavaScript函数
- Volley的使用(一)
- Java 设置 httponly cookie
- Java异常面试题重点汇总