掌握了区块链的原理、发展趋势及现状,现在到了真枪实弹演习的时刻了。由于区块链技术还处在慢慢被人们理解和接受的初级阶段,学习资料的匮乏和不完善,加上爱好者们翻译文档的水平良莠不齐,给区块链技术的初学者,带来不小的障碍。
为了入门,我也研究过很多资料,看过很多教程,通俗易懂的不多,部分书籍甚至东拼西凑(比如某开发指南),严重打击初学者的积极性,但无论条件多么困难,都阻止不了一颗热切的心,随着开发者们不断的分享与交流,相信总有一些经验和知识与别人有关、对别人有用,这也是我写博的原因之一。
言归正传,本文将探讨以下几个问题:
1、以太坊与区块链的关系?
2、为什么要学习以太坊?
3、什么是智能合同?
4、在开发实战之前要做哪些准备?
以太坊(Ethereum)与区块链的关系
如果把区块链比作传统互联网里的TCP/IP协议,那以太坊就是HTTP;如果把以太坊比作Android,那区块链就是Android Framework;还没明白? 如果把区块链比作手机,以太坊就是智能手机,这些比喻深究起来未必绝对准确,但对初学者而言,理解概念才是最重要。
要更加透彻地理解区块链和以太坊之间的关系,先回顾一下《小白秒懂区块链》里的一张图
区块链发展的三个阶段:1.0数字货币(比特币)——2.0智能合同(以太坊)——3.0高级智能合同、智慧资产。以太坊是目前最稳定、最成熟、并被广大开发者所追捧的,一个基于区块链架构设计,可以运行智能合同的系统级应用。
为什么是系统级应用?
早期开发者们开发区块链应用大多复制比特币源码进行修改,扩展,开发成本高和局限性大,直到以太坊的横空出世,将区块链开发者们的三轮车换成了小摩托,以太坊不仅提供了灵活、稳定、成熟、多样化的开发语言,和完善的工具包,还有一整套从开发到编译、到部署发布的完整流程,以至于,一夜之间(在很短的时间内),众多基于太坊的应用,代币如雨后春笋般涌现。用众星捧月形容以太坊,实不为过,它的出现,也标志着区块链技术真正进入了2.0时代。
为什么要学习以太坊?
在当下区块链2.0时代,学习区块链技术就要学习智能合约,而以太坊是智能合约的先祖和标杆,毫不客气地说,目前学习区块链,就要学习以太坊。(这当然只是为了表达学习以太坊的重要性)
什么是智能合约?
智能合约,就是把现实中的合同,程序化,数字化,在陌生的网络环境中,在毫无信任基础的情况下,通过编程,把交易双方的协议、约束变成可执行代码,嵌入到数字货币中,从而实现价值的转移和流通,这也是区块链被称为价值互联网的根本原因。
智能合约,是区块链技术去信任,实现可编程货币的关键技术。
在开发实战之前要做哪些准备?
1、开发语言
Solidity 是以太坊默认的开发语言,因为和Javascript语言类似。也是目前最受欢迎的和功能丰富的智能合约脚本语言。
Serpent 和Python语言类似,在以太坊历史的早期受欢迎。
LLL(Lisp Like Language) 和Lisp类似,也只有在早期使用。它大概是最难用的。
2、开发环境
【运行环境】: EVM(Ethereum Virtual Machine)以太坊虚拟机,是以太坊中智能合约的运行环境,和JVM类似。
【编译(智能合约)】:初学者推荐使用web编译器Browser-Solidity Web IDE,当然也可以自己安装solc编译器。
【部署(智能合约)】:把编译好的合约(字节码)通过节点以发送交易的形式部署到以太坊区块链上,以太坊官方提供了以太坊钱包(Ethereum Wallet),其实就是一个客户端,它集成了账户管理、挖矿、转账、智能合约的部署和执行等等功能,几乎就是一个强大完善的IDE(开发者工具),当然钱包也集成了EVM,不需要开发者单独安装。
【运行(智能合约)】:合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。
【测试(智能合约)】:在以太坊的公共网络上,进行测试需要账户里有以太币余额,开发者可以通过以下四种方式来进行开发测试,在测试成功之后,再部署到公共以太坊区块链上。
选择以太坊官网测试网络Testnet
之所以选择测试网络,是为了更容易获得免费的以太币,以便测试,美中不足的是需要发很长时间进行节点初始化。
使用私有链
我们可以搭建属于自己的以太坊,甚至取名叫太太坊也无所谓,专门用来开发、调试和测试智能合约,
使用开发者网络(模式)
在开发者网络(模式)下,系统会自动分配一个有大量余额的开发者账号给我们使用。
使用模拟环境
使用testrpc来创建测试网络,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。testrpc在启动时可以帮我们创建10个存有一定余额的测试账户。
3、开发工具
如果你使用的是Mac,除了以太坊钱包这一必不可少的开发工具之外,在我们搭建、配置开发环境的过程中,对于初学者而言还有一件利器——Homebrew,它可以一键帮你安装好所有缺失的软件包。
注意:以太坊钱包 Ethereum Wallet 在安装的过程中,可以选择以太坊官网测试网络Testnet的选项。
最后,科普一下Dapp(去中心化的应用程序或分布式应用程序)
Dapp是什么?
一、运行在分布式网络上;
二、参与者信息被安全存储,隐私得到很好的保护;
三、通过网络节点去中心化操作。符合这3个条件的应用可以认为是一个去中心化应用。
Dapp三个特征:
一、程序开源,数据加密保存在公开且去中心化的区块链上。
二、应用必须通过标准算法来生产代币,代币根据应用需要使用,提供贡献的用户都应该获得代币奖励。
三、根据市场反馈改进,必须由多数用户一致同意。
在太坊社区里,把基于智能合约的应用称为去中心化的应用程序或分布式应用程序。
好了,知己知彼,百战不殆,掌握了这些基础知识,以太坊实战演习将要开始了。
领取专属 10元无门槛券
私享最新 技术干货