# Ethereum开发相关资料汇总

By [tony](https://paragraph.com/@5sessions) · 2022-02-25

---

Ethereum作为头部公链，其汇集的开发者无可争议是blockchain领域的重要核心开发社群，也是blockchain领域稳定的建设者。自vitalik2015年创建Ethereum以来，培养与吸引了一大批开发者加入其中，可以预见的是未来随着该领域各种基础设施以及链上协议需求的增多，以及想象空间与潜力的迸发，会有越来越多新入的开发者。

判断一个程序语言或者一个项目本身的生态，如果针对于该语言有越来越丰富的开发框架、工具、开源工具包，那么就说明该语言的生态再不断丰富，这一点在etherum生态上也在不断体现。

比如**soliditylang**网站详细介绍solidity语言语法

[https://docs.soliditylang.org/en/v0.8.11/](https://docs.soliditylang.org/en/v0.8.11/)

提供可复用、安全性较高的合约代码包的OpenZeppelin

[https://openzeppelin.com/](https://openzeppelin.com/)

方便合约部署、并且提供交互工具的truffle

[https://trufflesuite.com/](https://trufflesuite.com/)

同时也存在着众多兼容EVM的公链，这些公链或多或少在开发生态中与Etherum有交集。

![EVM兼容公链](https://storage.googleapis.com/papyrus_images/74afdb6d641e4563c4033f23c948b5194b276382c1cfd52363a9a789536bdcad.png)

EVM兼容公链

正是基于如上的认识，我认为随着该领域的发展，solidity语言以及Ethereum开发生态会越来越茁壮，就像Java语言由于其稳定性、丰富的开源工具、数量巨大的开发者等原因依然作为很多大型机构、项目的首选。

为此，为了达到对Solidity语言一定程度的理解，并且可以做到基本的合约部署、合约调用、常见工具的使用。本文梳理了solidity，Ethereum开发生态中的相关资料。如果是这个领域的开发者，那么这些资料或者工具大部分应该接触与应用过。

目录如下

**A.solidity语言及ethereum基本概念的介绍**

​ **1.soliditylang**

​ **2.ethereum.org**

​ **3.ethereumdev**

**B.客户端交互工具或基础设施**

​ **1.Go-eth**

​ **2.Clef**

​ **3.truffle**

​ **4.infura**

​​ **5.myetherwallet**

**C.其他工具**

​ **1.合约工具mythril**

​ **2.myetherwallet**

**D.补充与结语**

**E.其他参考资料**

* * *

**A.solidity语言及ethereum基本概念的介绍**

**1.soliditylang**

合约的基本语法、合约代码示例、编译器以及其他工具。solidity语法最全的网站。

[https://docs.soliditylang.org/en/v0.8.11/](https://docs.soliditylang.org/en/v0.8.11/)

**2.ethereum.org**

了解Ethereum整个生态的入口，从理念、基本概念、开发、社区建设...等角度都有大量翔实精确的内容。

[https://ethereum.org/](https://ethereum.org/)

**3.remix**

学习solidity语言开发平台，免去本地繁琐的搭建与配置环境，直接基于remix编写与调用合约.

[http://remix.ethereum.org/](http://remix.ethereum.org/)

不过本人还是倾向于本地搭建好平台，或者将节点为配置infura作为基础开发环境。有时因为网速原因reminx不太稳。

如上内容只要把soliditylang、[ethereum.org](http://ethereum.org) 涉及solidity的掌握，基本对于语言就已经掌握了。

**B.客户端交互工具或基础设施**

如何搭建本地节点，同步以太坊主网数据？如果需要管理以太坊地址，如何管理，使用什么工具？如果需要指定地址与指定合约进行交互，如何进行交互？

首先是如何搭建本地节点？常见的是使用geth。

**1.Go-eth**

使用go语言实现的与eth协议交互的工具，可以作为单独客户端也可以作为函数包嵌入到其他应用，如android、iOS。可以搭建本地轻节点，同步数据。

[https://geth.ethereum.org/](https://geth.ethereum.org/)

**2.Clef**

账户管理工具，geth本身也有账户管理的功能，clef本身集成的功能更专注于账号管理。

[https://geth.ethereum.org/docs/clef/tutorial](https://geth.ethereum.org/docs/clef/tutorial)

**3.truffle**

进行合约部署、测试、交互的工具包。可以连接本地的节点，也可以通过配置连接第三方节点如infura进行交互。当前不少开发者使用的都是该工具包进行合约的部署与交互。

[https://trufflesuite.com/](https://trufflesuite.com/)

**4.infura**

开发工具组件，主要提供节点服务，不用自己下载eth全部巨量的数据，可以直接通过infura的接口进行调用，Metatask用的就是infura的服务。

[https://infura.io/](https://infura.io/)

[https://www.alchemy.com/](https://www.alchemy.com/)

Alchemy类似于infrua，不过看起来比infrua产品功能更多一些。

**C.其他工具**

1.**合约工具mythril**

EVM 安全分析工具，如果合约未开源，可以通过该工具获取到该合约的abi。

[https://github.com/ConsenSys/mythril](https://github.com/ConsenSys/mythril)

**2.myetherwallet**

通过网页可视化方法与合约交互，如可以获得合约的abi。

[https://www.myetherwallet.com/](https://www.myetherwallet.com/)

**D:补充与结语**

turffle是使用js与eth主网进行交互，js最新版的语法相较于之前有不少改动，如增加了一些异步处理的语法await、let。如果对此不熟悉，需要熟悉下这些新增加的语法，方便使用truffle与合约进行交互。

js语言 最新语法ES6

[https://www.javascripttutorial.net/es6/](https://www.javascripttutorial.net/es6/)

由于truffle是封装了web3.js的很多接口，有时truffle不太好用的时候，比如我之前直接调用链上已经存在的合约，发现直接使用truffle总是出现一些问题，可以通过web3.js原生方法进行调用。

[https://web3js.readthedocs.io/en/v1.7.0/index.html](https://web3js.readthedocs.io/en/v1.7.0/index.html)

个人学习与训练使用solidity的目的则是达到能够进行的合约部署与调用、为能够读懂solidity合约代码或者发现深层次的问题(如安全问题)打下基础、也算是能够从代码层面去理解项目本身，同时个人也一直坚信只要这个领域一直在发展，生态不断再繁荣，那么随着时间的推移将会出现在越来越多的情况下，用到这方面的知识或者技能可能性。

不过学习与训练过程，不是那么一蹴而就，有时一个小问题可能2个小时就过去了。为什么还要继续？如果几年之后，这个领域发生了更广泛的变化，当很多设施被广泛的人群所使用，很多协议被广泛的人所熟知与了解的话，那么我相信，这一切都是值得与期许的。

**D:其他参考资料**

1.如何与已经部署的合约交互

[https://medium.com/@blockchain101/interacting-with-deployed-ethereum-contracts-in-truffle-39d7c7040455](https://medium.com/@blockchain101/interacting-with-deployed-ethereum-contracts-in-truffle-39d7c7040455)

2.使用java语言实现的以太坊客户端

[https://besu.hyperledger.org/en/stable/](https://besu.hyperledger.org/en/stable/)

3.EIP-1559介绍

[https://www.quicknode.com/guides/web3-sdks/how-to-send-an-eip-1559-transaction](https://www.quicknode.com/guides/web3-sdks/how-to-send-an-eip-1559-transaction)

4.HD-wallet 钱包体系

[https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)

---

*Originally published on [tony](https://paragraph.com/@5sessions/ethereum)*
