区块链:为以太坊智能合约开发做准备
智能合约开发准备
编辑的选择
理论上,任何编辑器都可以编写Solidity合约代码,例如:WebStorm、VSCode、Sublime等。
我们选择 Atom,它轻巧漂亮的界面
Atmo->首选项->安装
什么是以太坊?
以太坊官网
以太坊是一个运行智能合约的去中心化平台:应用程序完全按照编程运行,没有任何停机、审查、欺诈或第三方干扰的可能性。 这是官网上的文字说明。 以太坊是近几年才发展起来的一种新的底层区块链技术。 以太币(Ether)是在以太坊公链上产生的一种加密货币。 除了像比特币一样可以交易之外,它还有实际用途。
在以太坊上开发的 DApp
以太坊在每个运行节点上运行一个以太坊虚拟机(Ethereum Virtual Machlne,EVM),可以用来执行一个完整的程序。 这些程序在以太坊中称为智能合约。 除了数据处理之外,智能合约还内置了转账功能,可以方便地通过智能合约进行加密货币交易。
以太坊还开发了web3.js,让开发者可以使用web技术编写智能合约的操作界面。 这样的网页操作界面也称为分布式应用程序(DAPP)。 要使用 DAPP,必须在支持 DAPP 的浏览器中使用(例如:Mist 或 Party 或 MetaMask)。
我们可以把以太坊理解为App Store,基于以太坊开发的DAPP发布在以太坊上。 相对于比特币的单一性,我们也称之为以太坊区块链2.0
使用智能合约技术提供的服务也构成了以太坊生态系统的一部分。 例如,以太坊名称服务(ENS)为用户提供了一种更容易找到转账对象、智能合约和 DAPP 的方法。
以太的实际用途
一般在电脑上执行的代码,写的时候可能会循环执行,搬到区块链上也是一样。 所以为了解决这个问题,以太坊让执行的代码有价值。 EVM 支持的所有指令(OPCODE)都有明确标价,智能合约的执行需要消耗与执行指令数等值的以太币。 在智能合约术语中,这些用于消耗的以太币被称为gas(燃料)。 在向区块链部署合约时,需要附加一定数量的燃料。 当gas用完,程序还没有执行完以太坊官网上,就会出现out of Gas错误。 智能合约使用这种方法来避免死循环等情况。
以太坊的缺点
目前以太坊区块链的速度无法与计算机的执行速度相提并论,不适合快速交易或需要存储大数据的情况。
什么是智能合约(Smart Contract)
运行在区块链上的程序通常被称为智能合约(Smart Contract)。 因此,编写区块链程序通常更名为编写智能合约。 虽然比特币上也可以写智能合约,但是比特币支持的语法只和交易有关,能做的事情比较有限。 因此,说到编写智能合约,通常指的是支持执行图灵完备程序的以太坊(Ethereum)区块链。
智能合约与普通程序的区别
如何编写智能合约?
以太坊上的智能合约需要用 solidity 语言编写。 之前还有其他语言可以用来写智能合约,比如Serpent(像Python),LLL(像Fortran),但是目前所有公开的智能合约都是用solidity写的。 官方宣传说solidity是一种类似JavaScript的语言,使用NPM提供围绕JavaScript的各种开发工具链,属于Javascript生态。
将智能合约部署到区块链的过程
编写好solidity代码(.sol)后,需要将程序代码编译(compile)成EVM(Ethereum Virtual Machine)可以理解的二进制Contract ByteCode,然后再部署到以太坊区块链上执行。 部署在区块链上的合约都会有一个合约地址(Contract Address),其格式与钱包地址(address)相同。
智能合约可以在部署后自动执行。 后续调用智能合约时,用户可以使用部署合约的钱包地址(owner account)以太坊官网上,也可以根据书面智能合约的条件,允许其他钱包地址调用智能合约。 调用智能合约其实就是向这个合约地址发起交易,但交易的不仅仅是代币,而是智能合约提供的调用方式。