主页 > imtoken钱包官方版软件下载 > 1. 智能合约与区块链

1. 智能合约与区块链

智能合约也称为“自动执行协议”或“编码合约”。 本节我们不谈智能合约的社会意义,但假设你是一名开发者,准备开始智能合约的开发,那么在开始之前需要具备哪些基础知识呢? 本文为您呈现。

1. 智能合约与区块链

智能合约的概念最早由 Nick Szabo 于 1994 年提出。从广义上讲,任何可以自动完成的合约都是智能合约。 比如我去自动售货机买瓶饮料,或者扫码使用共享单车。 但目前讨论的智能合约都离不开区块链。 所以我们这里讨论的智能合约的准确定义是运行在区块链上的程序。 请注意,此程序甚至不需要模拟商业合同。 任何一个程序只要部署在区块链上,我们就称它为智能合约,哪怕程序只是完成了打印Hello World或者给计数器加一的操作。

为什么智能合约和区块链结合得如此紧密? 在 Szabo 提出智能合约概念后的很长一段时间里,智能合约根本无法实现,主要是合约双方无法达成信任。 因此,区块链作为所谓的信任机器,刚刚成为智能合约的技术基础。 智能合约与传统计算机程序的最大区别在于其执行结果的识别。 传统计算机程序的执行结果并不是基于共识机制。 达成共识的前提是合约的执行过程要公开,合约产生的数据不能被篡改。

比特币是不是智能合约_比特币50倍合约怎么玩_比特币合约交易教程

比特币作为区块链之母,并没有真正成为智能合约的运行平台。 原因是比特币脚本是图灵不完备的,无法实现丰富的逻辑,所以直接在比特币上运行复杂的智能合约是不现实的。 最终,是以太坊的出现,带来了智能合约的爆发。

2.用Solidity编写智能合约

比特币合约交易教程_比特币50倍合约怎么玩_比特币是不是智能合约

虽然,以太坊之后的大部分区块链项目都支持智能合约,包括比特币,它在第二层也有一个RSK解决方案来支持智能合约。 但是,以太坊技术在智能合约方面的许多开创性成果,已经被大家公认为行业标准。

方方之所以能够带来智能合约的革命比特币是不是智能合约,是因为它成功地在区块链之上运行了一种图灵完备的语言,使得描述复杂的业务逻辑成为可能。 Solidity 是以太坊社区诞生的一种用于编写智能合约的新型编程语言。 虽然理论上智能合约可以用多种语言编写,但 Solidity 是目前最流行的编写智能合约的语言。 不仅可以在以太坊上使用,Nervos AppChain 还可以使用 Solidity 进行智能合约开发。

比特币是不是智能合约_比特币50倍合约怎么玩_比特币合约交易教程

因为比特币的功能很少,所以基本上可以看做是一个运行在区块链上的数据库,因为主要的功能就是存储交易数据。 与以太坊不同,它可以被认为是运行在区块链上的虚拟机。 以太坊区块链上的虚拟机称为EVM,EVM是Solidity语言的运行环境。 以太坊被称为世界计算机。 所有部署在以太坊上的合约代码都将由全网所有计算机进行计算,保证了计算过程的公开可信。

但是退一步想想,为什么Bitcoin Script不是设计成图灵完备的呢? 中本聪没有考虑过智能合约吗? 不。 中本聪的考虑是这样的,因为区块链是一个公共环境,如果允许用户写循环语句,那么攻击者就可以写一个死循环,可以瘫痪整个网络。 而这种担忧显然也适用于以太坊,那么以太坊是如何避免这个问题的呢? 在以太坊上,每次代码执行都需要消耗少量代币,即Gas,即汽油。 这句话的意思很明确,就是想要以太坊汽车跑得快,就必须给它加汽油。 如果你写一个死循环,你账户里的汽油很快就会用完,代码就会停止。 操作,避免网络瘫痪。

比特币50倍合约怎么玩_比特币合约交易教程_比特币是不是智能合约

总之,学习任何平台的智能合约开发,都离不开学习以太坊的各种思想和标准,其中最重要的就是Solidity语言和消耗Gas租用系统资源的思想。

3.编译执行

比特币合约交易教程_比特币是不是智能合约_比特币50倍合约怎么玩

那么我们用Solidity实现智能合约后,如何编译执行呢?

代码写好后,需要先编译,然后部署到区块链网络运行。 各大区块链项目基本上都有自己的测试链。 在测试链上部署和执行代码不需要真金白银。 您只需要申请一些测试链代币。 测试链的运行效果与主网相差不大。 这里需要注意的是,代码部署到区块链上之后,我们就可以和智能合约进行交互了。 但是可以访问的接口不再是我们熟悉的HTTP API,而是叫做ABI,也就是“Application Binary Interface”,所以交互方式也不同了。 幸运的是,我们开发人员完全不用担心这个。 每个平台都发布了相应的库来支持交互。 比如我们用来和智能合约交互的前端是一个Web App,这样我们就可以导入相应的JS版本的库来实现交互。 以太坊下有Web3.js比特币是不是智能合约,Nervos下的nervos.js都是为了这个目的。 生的。 如果您使用 Android 本机应用程序作为前端,也有相应的 Java 版本的库可用。

所以整个画面是这样的。 智能合约编译完成后部署在区块链上,成为链上运行的实例。 然后就可以使用前端App通过Web3.js或nervos.js等库调用合约的各种功能,进行各种读写操作。 合约加上前端App构成一个DApp。

4.总结

本节是为开发人员编写的,以帮助他们了解智能合约开发的一些基础知识。 正如我们所说,区块链已经成为智能合约的必要技术基础,因为它可以保证代码执行和数据不可篡改。 因为以太坊可以运行图灵完备的Solidity语言,所以带来了真正意义上的智能合约大爆发。 最后聊一聊,合约部署到区块链上后,可以使用Web3.js等库来完成前端App与后端合约的交互。 当然,关于智能合约还有很多其他重要的知识点,但是这些知识最好在实际平台的动手操作中学习,这里就不展开了。