区块链:以太坊智能合约开发准备

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wtdask/article/details/81911023

智能合约开发准备

编辑器选择
理论上讲任何编辑器都可以编写Solidity合约代码,比如:WebStorm,VSCode,Sublime等等。
我们选择轻量界面漂亮的Atom

Atmo->Preferences->Install

这里写图片描述

  • autocomplete-solidity代码自动补齐
  • linter-soliumlinter-solidity代码错误检查
  • language-ethereum支持Solidity代码高亮以及Solidity代码片段

以太坊(Ethereum)是什么?

以太坊官网

以太坊是一个分散的平台,运行智能合约:完全按照程序运行的应用程序,没有任何停机,审查,欺诈或第三方干扰的可能性。这是官网上的一段文字描述,以太坊(Ethereum)是近几年才发展起来的一种新的底层区块链技术。以太币(Ether)是以太坊公有链上产生的加密货币,除了可以拿来像比特币一样交易外,还具有实际的用途。

基于以太坊开发的DApps

以太坊在每个运行的节点上都运行着一个以太坊虚拟机(Ethereum Virtual Machlne,EVM)可以用来执行完整的程序。这些程序在以太坊中被称为智能合约(Smart Contract)。智能合约除了可以处理数据,还内置转账功能,可以很容易地透过智能合约交易加密货币

以太坊还开发出了web3.js让开发者可以使用网页技术撰写智能合约的操作界面。这样的网页操作界面又被称为分布式应用程序(DAPP)。要使用DAPP,必须在支持DAPP的浏览器中才能使用(如:Mist或Party或者MetaMask)。

我们可以把以太坊理解为App Store,基于以太坊开发的DAPP发布到以太坊上,相对于比特币的单一,我们也把以太坊称为区块链2.0

使用智能合约技术制作的服务,也构成了以太坊生态圈的一环。例如Ethereum Name Service(ENS) 就提供了让使用者更容易寻找到转账对象,智能合约和DAPP的方式。

这里写图片描述

以太币(Ether)的实际用途

在电脑上执行的一般代码,写出来可能会循环不断执行的情况,搬到区块链上亦然。那么以太坊为了解决这个问题,让执行的代码变的有价值。EVM里面支持的所有的指令(OPCODE)都有明码标价,执行智能合约需要消耗与执行的指令数量相当的以太币。在智能合约的术语中,这些拿来消耗的以太币被称为gas(燃料)。部署合约到区块链上时,需要附加一定数量的燃料。当燃料耗尽而程序还没有执行完毕,就会出现out of Gas(燃料耗尽)错误。智能合约透过这样的方式来避免死循环等情况。

以太坊的缺点

目前以太坊区块链的速度和电脑执行速度无法相比,不适合快速交易,或是需要存储较大数据的情境。

什么是智能合约(Smart Contract)

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

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

  • 一、整合金流容易

    一般的应用程序要整合金流是件非常不容易的事情而智能合约极容易整合金流系统(使用以太币或自行建立的新代币合约)。

  • 二、部署时与后续写入时需费用

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

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

  • 三,储存资料的成本更高

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

  • 四,部署后无法更改

    一般的应用程序改版时可透过安装新版程序,网页应用程序也可透过部署新版程序达成,而智能合约一旦部署到区块链上后,就无法更改这个智能合约。当然聪明的开发者透过加入额外的智能合约,也已有办法绕过智能合约部署后无法再更改的限制。

如何编写智能合约?

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

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

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

这里写图片描述

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/wtdask/article/details/81911023