文/温国兵
本文由币乎(bihu.com)优质内容计划支持。
这是「区块链技术指北」的第 22 篇文章。
如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把你拉入微信群「区块链技术指北」。BTW,李笑来老师也加入了我的知识星球,文末有加入方式。
理解智能合约对理解区块链技术至关重要。我们先来看下什么是智能合约。
智能合约是 1990s 年代由尼克萨博提出的理念,几乎与互联网同龄。由于缺少可信的执行环境,智能合约并没有被应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,以太坊首先看到了区块链和智能合约的契合,发布了白皮书《以太坊:下一代智能合约和去中心话应用平台》,并一直致力于将以太坊打造成最佳智能合约平台,所以比特币引领区块链,以太坊复活智能合约。[1]
也就是说,智能合约概念并不是随着区块链技术诞生的。区块链技术天然给智能合约带来得天独厚的应用前提。如果说区块链落地应用,比特币和以太坊就是最大的应用了。
题图来自: © Guia do Bitcoin / Tudo que você precisa saber sobre o Ethereum Hard Fork que acontecerá amanhã / guiadobitcoin.com.br
了解什么是智能合约概念,我们接下来看下怎么样去理解它。
智能合约程序不只是一个可以自动执行的计算机程序:它自己就是一个系统参与者。它对接收到的信息进行回应,它可以接收和储存价值,也可以向外发送信息和价值。
这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。
下面这个示意图就是一个智能合约模型:一段代码(智能合约),被部署在分享的、复制的账本上,它可以维持自己的状态,控制自己的资产和对接收到的外界信息或者资产进行回应。
智能合约模型:它是运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、储存和发送价值。
简单地说,智能合约就是传统合约的数字化版本。它们是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。
现实世界是怎么样应用智能合约的呢?开发人员会为智能合约撰写代码。智能合约可用于交易和(或)两方/多方之间的任何交换行为。该代码包含一些会触发合约自动执行的条件。一旦编码完成,智能合约就会被上传到区块链网络上,即它们被发送到所有连接到网络的设备上。一旦将数据上传到所有设备上,用户就可以与执行程序代码的结果达成协议。然后更新数据库以记录合约的执行情况,并监督合约的条款以检查合规性。[2]
Solidity 是一种语法类似 JavaScript 的智能合约高级语言,它被设计成以编译的方式生成 以太坊虚拟机(Ethereum Virtual Machine,EVM) 代码。
它的语法接近于 Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:
去中心化应用(DAPP)是可以使用户和供应商之间直接互动的服务。以太坊去中心化应用典型地通过 HTML/Javascript 网络应用与用户互动,使用 Javascript API 与区块链通信。去中心化应用典型地在区块链上有自己的相关合约套件,用来编码商业逻辑,允许持久存储对共识要求严格的状态。
DAPP 和 APP 是对应的。APP 我们已经很熟悉了,目前我们主要在 iOS 和 Android 平台使用各种类型的 APP。通常一个 APP 从设计、开发、测试、上线等过程都是由一个中心化的组织完成的,APP 的应用也是基于 C/S 架构,其中的 S 表示 Server,也是中心化结构。而 DAPP 不完全是指它的开发是去中心化的,而是它的运行是去中心化的。
目前最为成功的 DAPP 是 CryptoKitties,也就是那个撸猫游戏。这个游戏上线一度造成以太坊网络严重堵塞。
根据 State of the DAPPS 网站统计,目前基于以太坊的 DAPP 有 977 个。感兴趣的读者不妨去搜索看看。
如果要学习智能合约编程,以下事项需要读者注意:
比如在第五步,你可以自行在以太坊测试网络或者正式网络发行 Token,还可以基于开源的 Pet Shop 实现第一个 DAPP。
如果你使用 Sublime Text 进行 Solidity 编程,推荐使用以下插件:
如果你使用 Atom 进行 Solidity 编程,推荐使用以下插件:
本文介绍了智能合约,智能合约程序不只是一个可以自动执行的计算机程序:它自己就是一个系统参与者。它对接收到的信息进行回应,它可以接收和储存价值,也可以向外发送信息和价值。接着讲解了智能合约使用的编程语言 Solidity,接着介绍了 DAPP,然后给出了学习智能编程的步骤,最后给出了相关的资源,希望可以帮到读者。
未来会有更多的 DAPP 进入我们的生活,如果读者是个开发者,不妨找个场景实现个 DAPP。
「区块链技术指北」同名 知识星球,二维码如下,欢迎加入。BTW,李笑来老师也加入了。
「区块链技术指北」相关资讯渠道:
同时,本系列文章会在以下渠道同步更新,欢迎关注:
原创不易,读者可以通过如下途径打赏,虚拟货币、美元、法币均支持。
–EOF–