如果你是一个以太坊或区块链的新手开发者,那么你可能正费力地(至少我是)试图了解以太坊生态系统中的所有工具和技术。 所以在开始学习以太坊之时,我决定简单介绍一下你经常遇到的各种组件。 希望这将有助于您全面地了解以太坊生态系统,以及每一部分是如何联系在一起。
1 . 以太坊
以太坊是一个聪明的智能合约区块链,您可以在上面创建去中心化的应用程序(称为DApp)。 如果您是技术专家,这本白皮书值得一读:
https://github.com/ethereum/wiki/wiki/White-Paper.
如果您之前已经创建了Web应用程序,我写了一篇文章,比较了以太坊区块链和Web应用程序架构,这可能有助于更深入地了解以太坊。
2 . Geth
Geth是由以太坊基金会提供的官方客户端软件。它是用Go编程语言编写的。 这个软件包几个值得了解的组件:
-
Geth 守护进程
当您启动Geth 守护程序时,它将连接到网络中的以太坊节点,并下载同步区块。 它将不断与其他节点进行通信,以使其区块不断更新至最新。 它还具有挖掘区块并将交易添加到块链的能力,验证并执行区块中的交易。 它还可以充当服务器,您可以通过RPC来访问暴露的API接口。 -
Geth 终端 (https://github.com/ethereum/go-ethereum/wiki/geth)
这是一个命令行工具,可以让您连接到正在运行的节点,并执行各种操作,如创建和管理帐户,查询区块链,签署并将交易提交给区块链等等。 -
Mist 浏览器
这是一个用于与您的节点通信的桌面应用程序。 您使用 Geth 终端 执行的任何操作都可以通过此图形用户界面来完成。
3 . Parity
Parity 是对以太坊协议的另一个很好的实现,并且是用Rust编程语言编写的。 这是一个由一家名为Parity Inc (https://parity.io/)的公司来维护的非官方客户端。任何人都可以实现这个客户端软件,并加入以太坊网络。 您可以按照本黄皮书 (https://ethereum.github.io/yellowpaper/paper.pdf) 中的规范来实施您自己的客户端!
4 . Web3.js
就像你用 geth,mist 浏览器等等,来与以太坊节点进行通信,还有一个名为Web3.js的javascript库,可以用来与一个节点进行交互。 由于它是一个 JavaScript 库,您可以使用它来构建基于Web的dapps。
5 . Solidity
Solidity是用于编写在以太坊区块链上运行的智能合约的最流行的编程语言。 它是一种高级语言,当编译转换为 EVM 字节码。 这与 Java 非常相似,其中有诸如 Scala,Groovy,Clojure,JRuby等JVM语言。所有这些编译都生成在JVM(Java虚拟机)中运行的字节码。 只要遵循规范,你也可以创建一个像 Solidity 这样的语言,编译成的 EVN 运行的字节码。
还有一个非常棒的浏览器,它基于IDE,您可以在这里编写合同、编译和部署到区块链: http://remix.ethereum.org/
![](/qrcode.jpg)
就像您拥有Ruby on Rails,Python / Django等Web应用程序开发框架一样,Truffle 和 Embark 是用于开发以太坊 DApps的两个最常用的框架。 它们抽象出在区块链上编译和部署合同的许多复杂的东西。
7 . Metamask
如果你在经常关注以太坊社区,你一定会听过 Metamask 。 它是一个用于与以太坊节点进行交互的Chrome 插件。 让全世界的人都运行一个节点与区块链交互是不切实际的。 所以,Metamask会拥有一部分节点。 你只需要安装 Metamask ,它就会自动连接到他们的节点。
8 . ENS
ENS 以太坊域名服务是以太坊世界的DNS。 就像你将 IP 地址映射到可读取的名称一样,您可以将任何以太坊合约或钱包地址映射到一个易读的名称。
例如: 146.115.22.177 → google.com. 您不需要在浏览器中输入IP地址,而是输入google.com就可以解析该IP地址。
例如: 0x80C013d980aB049471c88E1603b8b4a60E03295C 是我的钱包地址。如果你想转给我一些以太币,你并不需要记住这个地址。 一旦 ENS 启动,我可能会将其映射到mvmurthy.eth,你可以很轻松地用它给我转钱 :)。
9 . Swarm
区块链能很好地存储少量的数据。 如果您要存储病历,销售合同或是需要公开时间戳的大型文件,该怎么办?在区块链中存储数据的代价很大,同时它不可扩展。 Swarm 解决了这个问题。 Swarm 是一个去中心化的内容存储和分发服务。 您可以将它视为 CDN,但它并不是在一家公司的服务器上托管的所有 CDN,而是通过互联网在计算机上分发。 就像运行一个以太坊节点一样,来运行一个 Swarm 节点连接到 Swarm 网络。
当您将一个以太坊合同部署到区块链时,您会获得ABI (https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABIJSON接口(类似于API的合约接口)。)的部署地址和 当您希望有人使用您的合约时,您必须提供部署的地址和ABI。 将来,ABI会存储在Swarm中,所以每个人都可以通过查看以太坊地址来查找ABI。
10 . IPFS
IPFS(Inter Planetary文件系统)在概念上与Swarm完全相似。 它是一个去中心化的存储系统。 它与以太坊没有直接关联,但可与以太坊集成。
您可以在以下网址阅读Swarm和IPFS之间的区别: https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM
11 . Whisper
你可能听到很多关于 Whisper的谈论,但是在以太坊生态系统中,它是一项有趣的技术。 它是Dapps与其他......交互的互通协议。 点击以下网址阅读更多关于Whisper的内容: https://github.com/ethereum/wiki/wiki/Whisper
下图尝试把所有的东西放在一起:
希望以上能让您对以太坊生态系统有一个概括性的了解,并能深入地、更好地了解它。