干货 | 以太坊工具集合,解决你的入门困难

如果你是一名区块链或以太坊新手,一开始接触以太坊生态系统中的工具和技术时很可能会像我一样一头雾水。为了让大家对以太坊的技术生态有一个整体的了解,并熟悉各部分的组合,本篇文章就将对以太坊学习中经常会遇到的各种技术或工具组件进行简要的介绍。

作者 | Mahesh Murthy

编译 | reason_W

以太坊

以太坊(http://ethereum.org/)是一个智能合约区块链,用户可以在这个区块链平台上构建去中心化的应用程序(即智能合约)。

如果你是技术控,可以看一下这份白皮书:https://github.com/ethereum/wiki/wiki/White-Paper 详细了解以太坊的技术原理 。

如果你之前已经有Web应用程序的开发经验,还可以参考我之前写的一篇比较以太坊区块链和Web应用程序架构的文章https://medium.com/@mvmurthy/ethereum-for-web-developers-890be23d1d0c#.8wo4bi611,这可能有助于你更深入地了解以太坊。

Geth

Geth(https://github.com/ethereum/go-ethereum)是一款由以太坊基金会提供的官方客户端软件。它用Go语言编写而成, 主要由以下几部分组成:

1.客户端守护进程

当你启动这个客户端守护进程时,它会自动连接到网络中的其他客户端(也称为节点)并下载区块链的副本,并通过不断与其他节点通信,保持区块链副本更新。它可以挖掘区块,将交易添加到区块链中,验证区块中的交易并执行交易。 它还可以开放API接口成为可通过远程过程调用(RPC)连接的服务器。

2.Geth控制台

Geth控制台(https://github.com/ethereum/go-ethereum/wiki/geth)是一个命令行工具,可让你连接到正在运行的节点并执行各种操作,如创建和管理帐户,查询区块链,签名并提交交易到区块链等。

3.Mist浏览器

这是一个用来与你的节点通信的桌面应用程序。任何可以用Geth控制台执行的操作都可以通过这个GUI完成。

Parity

Parity(https://github.com/paritytech/parity)是另一个以太坊协议的实现,由Rust语言编写而成。 这是一个由一家名为Parity Inc.(https://parity.io/)的公司维护的非官方客户端。任何人都可以配置这款客户端软件并加入以太坊网络。你可以按照这个黄皮书(https://ethereum.github.io/yellowpaper/paper.pdf)中的说明来配置你自己的客户端。

Web3.js

就像你可以通过Geth,Mist浏览器等工具与以太坊节点进行通信一样,还有一个名为Web3.js的JavaScript库(https://github.com/ethereum/web3.js/),也可以用于与节点进行交互。由于它是一个JavaScript库,因此可以用它来构建基于Web的去中心化应用(DApps)。

Solidity

Solidity(https://solidity.readthedocs.io/en/develop/)是在编写智能合约(在以太坊区块链上运行)时最流行的编程语言。它是一种高级语言,通过编译转换为EVM(以太坊虚拟机)字节码。 这与Java的设计机制非常相似,诸如Scala,Groovy,Clojure,JRuby这些JVM语言编译生成的字节码都在JVM(Java虚拟机)中运行。你也可以创建一个像Solidity这样的语言,当然前提是你遵循规范,并且你的语言可以编译成有效的EVM字节代码。

关于这种语言,还有一个基于浏览器的IDE,设计的非常漂亮。你可以在这里编写合约,编译并部署到区块链:

http://remix.ethereum.org/

Truffle/Embark

就像我们在开发Web应用程序时会想到Ruby on Rails,Python / Django等开发框架一样,DApps开发也有两个最流行的框架:Truffle(http://truffleframework.com/)和Embark(https://github.com/iurimatias/embark-framework)。它们把区块链上编译和部署合约时会碰到的很多复杂的东西都抽象出来了。

如果你没有以太坊Dapps开发的经验,可以参考我写的一个指导教程:

(一)(https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2

(二)(https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-2-30b3d335aa1f

(三)(https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-3-331c2712c9df

MetaMask

如果你已经进入了Ethereum社区一段时间,肯定会知道MetaMask(一款以太坊轻钱包,https://metamask.io/)。在我们发布这篇文章的时候,它的形式还只是一个用于与以太坊节点进行交互的Chrome插件。让每一位用户都先完成繁重复杂的配置再运行节点来和区块链进行交互是不现实的。 所以,开发MetaMask的那帮家伙主动维护了大量的节点,从而把其他用户从繁杂的同步过程中解放了出来。你只需安装MetaMask,它就可以自动连接到它们的节点上。

ENS

以太坊域名系统(ENS,http://ens.domains/)是以太坊世界里的DNS。就像互联网世界里的IP地址可以被映射为方便人们读取的名称一样,任何以太坊合约或钱包的地址也可以被映射成易读的名称。

例如:146.115.22.177→google.com。你不必在浏览器中输入IP地址,而是输入google.com即可,它会解析为该这个IP地址。

同样地:0x80C013d980aB049471c88E1603b8b4a60E03295C是我的钱包地址。如果你需要给我转一些以太币,也同样不必记住这个地址。在ENS发布之后,我可能会将其映射到mvmurthy.eth,你可以使用这个名字轻松把钱转给我:)。

Swarm

区块链在存储少量数据的时候是OK的。但如果想存储一些比如患者病历,销售合同或某些需要公开时间戳的大文件时该怎么办呢?在区块链中存储这种大文件数据的内存需求是昂贵的,并且也不能在所存储的块上扩展。Swarm(http://swarm-gateways.net/bzz:/theswarm.eth/)就是用来解决这个问题的。它是一个去中心化的内容存储和分发服务。你可以将其视为CDN,但它并不是在一家公司的服务器上托管整个CDN,而是通过互联网分布在很多计算机上。 就像连接到以太坊网络需要运行一个以太坊节点一样,你需要运行一个Swarm节点来连接到Swarm网络。

当你将一个以太坊合约部署到区块链时,你将获得ABI的部署地址和JSON接口(一种类似于API的合约接口,https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI)。当你想要某人使用你的合约时,你必须告诉他们部署地址和ABI。未来,ABI将存储在Swarm中,任何人都可以通过查看以太坊地址来查找ABI。

IPFS

IPFS(星际文件系统,https://ipfs.io/)在概念上与Swarm非常相似。它是一个去中心化的存储系统,虽然和以太坊并没有直接关联,但却可以与以太坊整合。

你可以在这里详细了解Swarm和IPFS之间的区别:

https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM

Whisper

你可能没怎么听过关于Whisper(https://github.com/ethereum/wiki/wiki/Whisper)的信息。它其实是Ethereum技术生态中的一个很有趣的技术。这是Dapps彼此交互的通信协议。关于它的更详细信息你可以在以太坊的官方文档中进行了解:

https://github.com/ethereum/wiki/wiki/Whisper

下面这张图是我们对上文所介绍内容的一个整理:

希望这篇文章能让你对以太坊生态系统有一个宏观了解,并有能力对其中每一部分进行更深入的研究和理解。

原文发布于微信公众号 - 区块链大本营(blockchain_camp)

原文发表时间:2018-06-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网大杂烩

Hyperledger Fabric系统结构

Fabric系统主要由两个应用构成:Orderer和Peer,其中Orderer负责交易共识并生成区块,Peer节点负责模拟执行交易和记账。这种划分可以使整个平...

702
来自专栏金融民工小曾

一文看懂银联云闪付二维码收单机构如何改造

前面有两篇文章,金融民工小曾已经跟大家介绍了银联云闪付二维码应用服务方和付款行改造,对于大部分银行,采用的模式都是银行卡前置模式,详细的可以见我前面两篇文章《一...

1553
来自专栏SAP梦心的SAP分享

『诡异的』VL10B创建外向交货单出错解决全过程

      一直觉得SAP STO的业务模式配置起来还是挺简单的,无非就是关联一下采购单与交货单的关系,以及相应工厂的装运数据,其他像主数据的设置也没有什么特别...

2388
来自专栏醒者呆

区块链3.0:拥抱EOS

EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0。不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创...

1K12
来自专栏SDNLAB

SDNLAB技术分享(十五):容器网络大观

一、容器网络概述 容器这一两年火的不行,可以说是独领IT风骚,一时风光无二。相比于虚拟机来说,容器更轻,一台服务器上可以运行成百上千的容器,这意味着更为密集的计...

3328
来自专栏区块链入门

第八课 如何调试以太坊官网的智能合约众筹案例

【本文目标】 发布并执行通ETH官网的众筹合约代码。 【前置条件】 参考《第七课 技术小白如何在45分钟内发行通证(TOKEN)并上线交易》完成了Colo...

842
来自专栏区块链技术专栏

EOS 投票合约,终于等到你。

config里面有一个config.ini配置文件,只有在运行一次nodes后才会出现,主要配置一些插件和节点,需要第一次运行修改。

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

饭团开通一周,3人学会了比特币操作

最近比特币行情火爆,很多人听到此消息后全当作泡沫,没有绿灯思维。而有少许人则去快速学习区块链的相关知识,去探寻它背后的本质规律。每一个新技术的出现都会颠覆许多已...

2587
来自专栏醒者呆

探路以太坊

关键字:以太坊,加密货币,crowdsale,geth,console,web3.js 以太坊简介 一句话简介:以太坊是一个基于功能齐全的编程语言构建的...

3236
来自专栏醒者呆

【精解】EOS智能合约演练

EOS,智能合约,abi,wasm,cleos,eosiocpp,开发调试,钱包,账户,签名权限 热身 本文旨在针对EOS智能合约进行一个完整的实操演练,...

6126

扫码关注云+社区