区块链学堂——以太坊实战第一步

以太坊

掌握了区块链的原理、发展趋势及现状,现在到了真枪实弹演习的时刻了。由于区块链技术还处在慢慢被人们理解和接受的初级阶段,学习资料的匮乏和不完善,加上爱好者们翻译文档的水平良莠不齐,给区块链技术的初学者,带来不小的障碍。

为了入门,我也研究过很多资料,看过很多教程,通俗易懂的不多,部分书籍甚至东拼西凑(比如某开发指南),严重打击初学者的积极性,但无论条件多么困难,都阻止不了一颗热切的心,随着开发者们不断的分享与交流,相信总有一些经验和知识与别人有关、对别人有用,这也是我写博的原因之一。

言归正传,本文将探讨以下几个问题:

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三个特征:

一、程序开源,数据加密保存在公开且去中心化的区块链上。

二、应用必须通过标准算法来生产代币,代币根据应用需要使用,提供贡献的用户都应该获得代币奖励。

三、根据市场反馈改进,必须由多数用户一致同意。

在太坊社区里,把基于智能合约的应用称为去中心化的应用程序或分布式应用程序。

好了,知己知彼,百战不殆,掌握了这些基础知识,以太坊实战演习将要开始了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链

智能合约简介

……换句话说,智能合约是执行“如果发生这种情况就执行那种结果”的小程序,由大量计算机运行并验证以确保可信。

1.2K16
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-26相关报表

5.2 SAPERP 报表 用法 以下表格列示了您获取业务过程相关信息所能使用的报表。 您可在以下业务流程文档中找到每个报表的详细信息。它们综合提供了所有重要...

3118

了解智能合约

智能合约是由公共区块链所带来的新技术,因为其部分混淆了描述的核心互动,所以这个术语会让人很难理解。智能合约有助于实现分散的体系,它存在于所有被允许的各方之间,不...

3678
来自专栏Java架构师进阶

一个程序员眼中的区块链技术

我为什么要写这篇文章?在了解区块链相关信息时(例如维基百科上的内容),我发现这些内容非常零碎和不连贯。要把这些零碎的信息整合在一起,形成一个完整的视图需要花费大...

944
来自专栏liuchengxu

用表情符号解释比特币 - Part 1

比特币是一个存储和消费数字货币的革命性方式,并且有着变革其他领域的潜力。无须成为一个数学家或密码学家, 你就可以理解它是怎么回事。当开始看到整个系统是如何形成时...

722
来自专栏区块链大本营

BTA | 张犁 :为什么需要一个通用区块链资产平台?

37813

分片:以太坊可扩展性问题的解决方案?

以太坊区块链的创新本质毋庸置疑,其智能合约功能促进了去中心化应用程序(DApps)和初首次币发行(ICOs)的发展。然而,尽管迄今为止以太坊取得了立竿见影的成功...

3814
来自专栏申龙斌的程序人生

如何开发一款支持多币种的钱包?

除了炒币之外,比较有深度的介入区块链行业的一种办法是开发Dapp,即去中心化的应用。钱包就是一种非常重要的Dapp,可以说是币圈用户的刚需,如果说微信是移动互联...

1274
来自专栏极客编程

智能合约用solidity编程语言开发一个以太坊应用区块链投票实例

智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技...

1142
来自专栏黑白安全

关于区块链安全的实际性思考

区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每...

1142

扫码关注云+社区