以太坊智能合约编写(一)

什么是智能合约?

在区块链上运行的程序,通常称为智能合约。所以通常会把写区块链程序称做写智能合约。虽然比特币上也能写智能合约,但是比特币所支持的语法仅与交易有关,能做的事情比较有限。因此目前提到写智能合约,通常指的是以太坊区块链 。

智能合约可以做什么?

目前最常见的智能合约是各种加密货币合约,开发者可以很容易地透过部署一个智能合约,来提供运行于以太坊上的新加密代币。如果这份智能合约相容于ERC20标准,开发者不需要重新开发从挖矿到交易的整个代币生态系,你的新加密代币就可以直接使用支持以太坊的电子钱包来收发,大大降低了建立新加密代币的门槛。

智能合约也可以用来运作各种公开公正的自动服务机构(DAO,权力下放自治组织)。透过分散在全球各节点上运作的智能合约,所有运作与决策都是公开透明的,降低了交易的不确定性。

智能合约和一般程序程序的差异?

一、 部署与后续写入时需要的费用不同

一般的应用程序需要提供网址让使用者下载,一般的网页应用程序也需要运行在服务器上,开发者需要维持服务器的运行以提供服务,这需要持续地花费(就算是免费的服务器或网页空间,也是厂商自行吸收了费用),程序开始运作后,除了维持费用外不需额外的花费。

智能合约在部署时需要一笔费用,这笔费用将分给参与交易验证(挖矿)的人。而在合约部署成功后,合约会作为不可更改的区块链的一部分,分散地储存在全球各地以太坊的节点上。也因此,智能合约在部署后,并不需定期提供维持费用,同时查询已写入区块链的静态资料时也不需费用。只有在每次透过智能合约写入或读取计算结果时,需要提供一小笔交易费用。

二、储存资料的成本更高


一般的应用程序将资料储存在本机或服务器上,需要资料时再从本机或服务器上读取,而智能合约将资料储存在区块链上,储存资料所需的时间与成本相对昂贵。

三、部署后无法更改

一般的应用程序改版时可透过安装新版程序,网页应用程序也可透过部署新版程序达成,而智能合约一旦部署到区块链上后,就无法更改这个智能合约。

如何编写智能合约?

Ethereum上的智能合约需要使用solidity语言来编写。之前还有其他能用来编写智能合约的语言如Serpent(类的Python),LLL(类的Fortran),但目前看到所有公开的智能合约都是使用solidity编写。官方宣传上说solidity是一种类似的JavaScript的语言,而且围绕着JavaScript的各种开发工具链都是使用属于使用Javascript生态系的NPM来提供的。

将智能合约部署到区块链的流程

写好solidity代码(.sol)后,需要先将程序代码编译(编译)成EVM(Ethereum Virtual Machine)能读懂的二进制度Contract ByteCode,才能部署到Ethereum的区块链上执行。部署到区块链上的合约会有一个和钱包地址一样格式的合约地址(Contract Address)。


以太坊智能合约编写(一)_第1张图片

部署后智能合约可自动执行,后续呼叫智能合约的时候,使用者可以使用部署合约的钱包地址(所有者帐户),或依据编写的智能合约条件,让其他钱包地址也能呼叫这个智能合约。 呼叫智能合约,其实就是向这个合约地址发起交易,只是交易的不只是代币,而可以是智能合约提供的呼叫方法。


以太坊智能合约编写(一)_第2张图片

你可能感兴趣的:(以太坊智能合约编写(一))