当我们说起智能合约,我们说的应该是什么?

学习

体验

蜂群

拼拼

LeanCode

当我们说起智能合约,我们说的应该是什么?

在某种意义上,智能合约确实是合约。但这名字也容易给人带来错误的感性认识,智能合约和传统合约在用法上完全不一样,它们更像是“刻板、无私、非常不智能”的机器人管家。


一个智能合约,就是一段可以自动执行的代码。这段代码,跟互联网上和手机中运行的千千万万程序,有什么本质区别?


为什么有些东西应该运行在智能合约上,有些东西却不需要?


关键在于:

  1. 智能合约的执行结果通常影响两方或多方的利益;
  2. 因为智能合约的代码必须是公开的,当事的这几方都可以充分理解合约执行所产生的全部效果;
  3. 当智能合约被执行后,没有人可以改变它执行的结果。


并不是所有程序都需要满足这些条件,因此那些程序不需要运行在智能合约上。


因此,当我们说某些计算步骤要在智能合约上执行,是希望它们的执行能够符合上面列的这几点要求。


智能合约的概念早在 1996 年就由 Szabo 提出来了,但为什么在最近,特别是区块链技术兴起后,重新被重视起来?这是因为区块链技术提供了一个可信的执行环境,让上面列的智能合约特性得以实现。


区块链技术是如何提供可信环境的,这个环境有多可信,可信环境是不是一定要用区块链技术? 这些问题不在这里讨论。总之,我们要知道的就是,因为这种可信计算环境的存在,智能合约才有意义。


这样的讨论比较抽象,我们来看些具体例子。


以太坊是现在最广为人知的智能合约平台。 以太坊上的智能合约,就是一种有存储内部数据的能力,可以通过外部施加命令触发其执行的程序。


我们可以把这种智能合约,理解为一个“刻板、无私、非常不智能”的机器人管家


我们把一些规则告诉它(智能合约的逻辑),它对世界有一定的认识(智能合约的存储空间),它会根据这些认识和规则对外界的新事实(外部施加的命令)进行机械地理解,得到新的认识(智能合约执行后的状态)。


我们来看一个来自以太坊白皮书的简单例子。


爱丽丝有一大笔钱(数字货币)。她觉得把这一大笔钱存在一个账户上很危险,因为一旦她的这个账户的密钥被盗窃的话,就全玩了。因此,她找来的好朋友鲍勃,一起建立一个智能合约,来保护她的钱。用我们的比喻来说,她和他找来了一个机器人管家来管理她的钱。她们和机器人管家订立了如下规则:

  • 这一大笔钱存在机器人管家的手里(智能合约可以直接管理数字货币);
  • 每天,爱丽丝可以从管家手中拿最多 1%(爱丽丝通过她的账户密钥来从智能合约里支取);
  • 每天,鲍勃也可以从管家手中拿最多 1%,但是爱丽丝可以随时停止鲍勃的这个权利;
  • 爱丽丝和鲍勃同时出现的话,可以从机器人管家手里拿走任意数量的钱。


刻板的机器人管家,只能够通过密钥来识别爱丽丝和鲍勃。


这个智能合约背后的逻辑是这样:

  • 爱丽丝平时只需要 1% 的钱就够她消费和投资使用;
  • 如果由于特殊情况需要更多的钱,她只需找鲍勃一起来拿就行了;
  • 如果爱丽丝的密钥被盗,也就是说别人也拥有了她的密钥,她可以立刻和鲍勃一起把所有钱都转移出来;
  • 如果爱丽丝不小心丢失了自己的密钥,那么这些钱还是可以逐渐被鲍勃取出来的还给,假设鲍勃是可信的;
  • 如果爱丽丝发现鲍勃不可信,她可以停止鲍勃的这个权利;
  • 当然,如果出现双重偶然,在爱丽丝不小心丢失自己的密钥后,鲍勃才背叛她的话,爱丽丝就可能真的要丢失这笔钱了,但是由于鲍勃和爱丽丝的身份都是真实的,她还可以考虑通过外部的仲裁来伸张正义。


无论如何,通过这个简单的例子,我们大概可以看到像智能合约这样的机器人管家,能够为我们带来什么样的好处。


就目前而言,在以太坊平台上,开发和运行最广泛的一类智能合约,毫无疑问是所谓的 ERC20,因为很多区块链项目用它来进行 ICO 。


ERC20 一种标准。ERC20 智能合约指的是符合这种标准的智能合约。ERC20 智能合约都用来实现 Token 的所有权的记录和转移。所谓 Token,你可以把它理解为一个价值单位。只是这个价值从何而来,暂且不论。


ERC20 这种机器人管家,能够做如下的几件事情:

  • 回答当前总共发行了多少 Token;
  • 回答某人拥有多少 Token;
  • 根据某人的指令,把他的一定数额的 Token 转到另一个人的手里;
  • 根据某人的指令,授权另外一个人处理他的一定数额的 Token;(代理人)
  • 根据代理人的指令,把某人的一定数额的 Token 转到另一个人的手里;
  • 回答某人对某代理人授权了多少数额的 Token。


由于 ERC20 标准以及一大批示例智能合约的出现,任何一个人都可以轻易地在以太坊上发布这类对自定义价值单位进行记账的智能合约。


正因为每人都可以随意发布这种智能合约,普罗大众可能会误以为 ERC20 没有意义,只是空气币的温床。


但这并不是 ERC20 智能合约的问题。ERC20 这种机器人管家,仍然完成了它们的职责 - 非常无私、可信地记录这些 Token 的发行和交易,任何人都不能随意篡改这些历史。


这种被诚实记录下来的 Token 究竟有何价值,是发行方需要解决的问题。发行方可以声称这些 Token 代表了一些物理世界的资产,他们用自己的信用承兑;发行可以根据一些技术手段就来把 Token 的使用和其他有价值的服务结合起来;可以通过一些治理手段,让这些 Token 得到一些有用的权利等等。


这种讨论有点抽象。要进一步理解这种忠实记录交易和执行规则的机器人管家存在的意义,可以阅读“智能合约和去中心化组织”一文。


无论如何,我们需要明白的是,智能合约的意义在于可以不受干扰地忠实执行既定的规则。


这一切都基于区块链技术提供了一个可信的环境,这种可信并非 100% 牢不可破,但这是另外一个层面的问题。在讨论智能合约时,我们假定它所在的环境是可信的。