他们说,“智能合约不具有法律效力”。

他们说得对,但是忽略了重点。

-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

智能合约被忽视的一面相关推荐

  1. 区块链100讲:智能合约审计指南

    智能合约代码的审计,目前还不是技术社区内经常会讨论的主题.今年3月6日,发表在博客网站[Schneier on Security]上的一篇博客(原文链接:[https://www.schneier.c ...

  2. 中国平安:杀进智能合约,你怕不怕?

    智能合约赛道迎来行业玩家,金融壹账通想做金融全领域 合约管理是金融行业日常最基础的工作之一,也是金融行业数字化转型的深水区. 近年来,随着人工智能.云计算.区块链等技术的涌现,金融机构在前台营销和后台 ...

  3. 智能合约如何可信的与外部世界交互

    区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作.例如,按照农产品价格情 ...

  4. 比特币开发者:BSC可能会超越以太坊成为顶级智能合约平台

    比特币开发者Udi Wertheimer发推称,我觉得这是以太坊作为顶级智能合约平台的最后一个周期了. 昨天币安智能链(BSC)结算500万ETH,以太坊本身结算700万ETH左右.这可能会很快结束. ...

  5. BSN智能合约开发培训-CITA(三)

    1 智能合约的定义 1994年,计算机科学家和密码学家 Nick Szabo 首次提出"智能合约"概念.它早于区块链概念的诞生.Szabo 描述了什么是"以数字形式指定的 ...

  6. 「镁客·请讲」OracleChain老狼:EOS智能合约生态唯上,超级节点的竞争,不看吹牛先看做事...

    "如果21个出块节点都是靠返利.贿选选上去的话,EOS生态最后可能会走向消亡." 最近,要说币圈最热的话题是什么,非EOS超级节点的竞选莫属.根据EOS GO社区的最新报告,目前全 ...

  7. 智能合约安全测试指南

    智能合约安全测试指南 由于智能合约的漏洞,在去中心化应用的世界中,利用和攻击一直都很普遍,可以从各种来源看到,例如: https://rekt.news/ https://defiyield.app/ ...

  8. Solana区块链智能合约开发简要流程

    Solana区块链智能合约开发简要流程 Solana区块链是当今市值第5的区块链,已经有很多知名生态准备部署在Solana上.相比于类以太坊(EVM)区块链来讲,Solana上智能合约开发(叫Prog ...

  9. 【智能合约系列009-如何做智能合约审计?】

    研究报告[Finding The Greedy, Prodigal, and Suicidal Contracts at Scale])指出,目前在以太坊中,有89%的智能合约代码都或多或少存在安全漏 ...

最新文章

  1. 慢SQL,压垮团队的最后一根稻草No.92
  2. printf 格式输出代码大全
  3. CENTOS6.3下zabbix安装部署
  4. 4.6 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)
  5. java复制类mytool_MyTools
  6. VTK:图表之SelectedVerticesAndEdges
  7. Docx:docx.opc.exceptions.PackageNotFoundError: Package not found at
  8. java集合清空_java 集合删除数据
  9. Jquery全选单选功能
  10. python与专业相结合应用案例_Office高级应用与Python综合案例教程(普通高等教育十三五规划教材)...
  11. 走进我的交易室03_第一步成功的外部障碍
  12. linux日志按日期生成器,Cron表达式生成器
  13. 在计算机中添加用户时提示拒绝访问,教你怎么解决打印机拒绝访问问题
  14. HowTo 激活非常规方式安装的正版OEM Vista
  15. 机器学习_经典模型_逻辑回归(logistic regression)
  16. 极限中0除以常数_酶动力学中的一些常数简介
  17. VScode 本地或远程单文件和多文件调试精简配置
  18. kali虚拟机安装提示安装系统步骤失败
  19. 计统大作业Hello P2P
  20. 诊断和响应故障_恢复表和表分区

热门文章

  1. webstorm 主题 配色
  2. 施工员是做什么的?施工员证书怎么考?
  3. Firewalld 日志开启.
  4. android wear 兼容模式,TicWatch Pro智能手表兼容模式如何开启?TicWatch Pro兼容模式开启教程...
  5. 富豪独子失踪男子冒顶41年 背后的真相是……
  6. maven与layUI的权限设计
  7. BCSP-玄子前端开发之JavaScript+jQuery入门CH02_JavaScript函数
  8. Volley的使用(一)
  9. Java 设置 httponly cookie
  10. Java异常面试题重点汇总