什么是智能合约

1,997 阅读3分钟

前言

智能合约是在以太坊的EVM上运行的一段经过编译的代码。在这篇文章中我将详细阐述智能合约到底意味着什么,开发的时候有哪些需要思维模式的转变,如何避免踩坑等。

智能合约

智能合约与平时的代码其实没有什么区别,只是运行于一个以太坊这样的分布式平台上而已。这个运行的平台,赋予了这些代码不可变确定性分布式可自校验状态等特点。代码运行过程中状态的存储,是不可变的。每一个人,都可以开一个自己的节点,重放整个区块链,将会获得同样的结果。

在以太坊中,每个合约都有一个唯一的地址来标识它自己。客户端可以与这个地址进行交互,可以发送接收ether调用函数查询当前的状态等。

智能合约,本质上来说就是代码,以及代码运行后存储到区块链上的状态两个元素组成。比如,你用来收发ETH的钱包,本质上就是一个智能合约,只是外面套了一个界面。

GAS是什么

既然提到了智能合约,就不得不提和他相伴的GAS限制。智能合约,就是一些代码,运行整个分布式网络中。由于网络中的每一个节点都是一个全节点。这样的好处是容错性强,坏处是效率低,消耗资源与时间。因为执行计算要花钱,而要执行的运算量与代码直接相关。所以,每个在网络运行的底层操作都需要一定量的gas。gas只是一个名字,它代表的是执行所需要花费的成本。更详尽的请参考:《Calculating Costs in Ethereum Contracts》

开发智能合约意味着什么

开发智能合约意味着什么,或者说为什么我们要开发智能合约,这是一个需要思考的问题,通常的示例一般都是投票,竞价,代币等,这些但是这些例子总是让人很迷惑,为什么要用智能合约来实现这些东西,能不能实现一些有实际价值的,更通俗,与真正的合约相关的内容。前面介绍了合约是什么,可能你们还是没有很清楚,合约可不可以等于合同,合同是不是具有约束性,能在双方(合同一般是双方或者多方)间提供约束,现在的智能合约是否具有法律约束。

我们需不需要智能合约

虽然现在区块链很火,但是我们必须要承认,他的应用面不是很广,只有少部分特定的行业适合使用。

合约开发方式

现在常用的语言是 solidity 类js语言,用用remix作为编辑,编译和调试的工具。或者本地使用文本编辑器编写代码,并保存为.sol 的文件,然后使用solcjs 工具将 源码编译为.abi .bin文件。

remix编辑器

合约的部署方式

  1. 通过终端部署
  2. 通过web3js部署
  3. 通过JsonApi部署

引用

深入浅出以太坊 4--写一个简单的智能合约 对于以太坊中gas的理解

本人网站出处:www.gethgeek.com/archives/sm…