基于以太坊的开发实践系列-(基础篇)

发布时间:2018-05-16 10:37:14

相信很多人刚接触区块链的人,对很多名词概念在实际应用场景上还不太容易理解。此文将基于以太坊平台,对开发环境进行系统化梳理以便快速建立思维模型。

先说以太坊。官方解释在白皮书或百度百科中介绍得很详细了,这里可以简单得理解为类似于Android开发平台,它对底层区块链技术进行了封装,让我们只关注应用本身的开发。

再来看智能合约。以太坊上的程序称之为智能合约(程序猿的主要工作),具有区块链分布式、不可变的特点。智能合约可以理解为在区块链上可以自动执行的(由消息驱动的)、以代码形式编写的合同(特殊的交易)。暂且把他理解成存储过程+触发器的一种体现。

最后是编程语言了。Solidity是官方推荐的编程语言,扩展名以.sol结尾。它和JavaScript很相似,用它来开发合约并编译成以太坊虚拟机字节代码。当然,除了官方推荐的Solidity,当然还有Viper,Serpent,LLL及Bamboo(其中Serpent和Viper,两者都是类Python)。

和大多数开发环境一样,代码写完后,编译、布署这些环节必不可少。

先了解EVM。EVM(Ethereum Virtual Machine),是以太坊中智能合约的运行环境,类似JVM,这个很容易理解。EVM是由以太坊客户端提供的。Geth是典型的开发以太坊时使用的客户端(go-Ethereum),基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。

开发框架可以选择Truffle。它可以帮我们处理掉大量无关紧要的小事情,具备Eclipse 或Visual Studio之类IDE的功能。让我们可以迅速开始写代码-编译-部署-测试-打包DApp整个流程。

最后一步就是运行了,运行需要一个以太坊网络,在测试时推荐搭建模拟环境testrpc。testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。而且testrpc可以在启动时帮我们创建10个存有资金的测试账户。进行合约开发时,可以在testrpc中测试通过后,再部署到Geth节点中去。

以上内容只是针对基于以太坊开发环境中涉及到的相关知识点进行了简要梳理,实际操作中会出现不少问题,将在后续篇中予以介绍。