免费试读阅读约需 7 分钟

什么是智能合约?

智能合约(smart contract)是存储在区块链上的程序,有人调用时就会运行。它既不“智能”,也不是法律意义上的合同。它就像一台自动售货机:投入正确的东西,就会出来既定的东西,而且不需要任何人批准。

重要的特性

  • 确定性:在相同状态下进行相同的调用,总会产生相同的结果。
  • 公开性:任何人都能读取已部署的字节码,通常也能读取源代码。
  • 自主性:一旦部署,它便脱离作者独立运行,而且往往没有任何办法让它停下。

“代码即法律”是一句警告,不是口号

合约只做代码写明的事,不管作者本来想做什么。里面没有关于意图的条款,也没有可以上诉的法官。如果代码允许某人把合约里的资金抽干,这并不违反合约。那正是合约在正常运行。

这就是需要审计(audit)的原因。一个持有真实资金却未经审计的合约,是实实在在的风险,不能当作文书手续上的欠缺。这也是为什么“合约已验证”这句话只表示公开的源代码与已部署的字节码相符。它完全不能说明这些源代码是否安全。

已验证的意思是“这确实就是正在运行的代码”,并不是“这段代码是安全的”。混淆这两者已经让人们损失了大量金钱。
什么是智能合约? · Crypto Academy