# 以太坊开发入门5

By [Untitled](https://paragraph.com/@0x6bda405d05eaf5ed9b69f49f63238fca95fc5b7e) · 2021-11-23

---

**Truffle和Embark**

一旦你开始写智能合约，你会重复做大量的操作，比如编译源码为字节码和abi，部署到网络，测试然后部署合约等等。你也许希望更关注于你想要实现的东西。

Truffle和Embark框架，标准化和自动化了这些琐碎的工作。它们提供了一个好的开发，部署，以及更为重要的，测试智能合约的体验。

你可以查看这个文章（[http://truffleframework.com/docs/getting\_started）来开启使用Truffle的旅程。](http://truffleframework.com/docs/getting_started%EF%BC%89%E6%9D%A5%E5%BC%80%E5%90%AF%E4%BD%BF%E7%94%A8Truffle%E7%9A%84%E6%97%85%E7%A8%8B%E3%80%82)

这篇文章，提供了使用Truffle来部署以及与智能合约交互的文章（[https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05）。](https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05%EF%BC%89%E3%80%82)

Embark（[https://github.com/iurimatias/embark-framework）提供了类似的，帮助开发者组织工程的稍有些不同的工具。](https://github.com/iurimatias/embark-framework%EF%BC%89%E6%8F%90%E4%BE%9B%E4%BA%86%E7%B1%BB%E4%BC%BC%E7%9A%84%EF%BC%8C%E5%B8%AE%E5%8A%A9%E5%BC%80%E5%8F%91%E8%80%85%E7%BB%84%E7%BB%87%E5%B7%A5%E7%A8%8B%E7%9A%84%E7%A8%8D%E6%9C%89%E4%BA%9B%E4%B8%8D%E5%90%8C%E7%9A%84%E5%B7%A5%E5%85%B7%E3%80%82)

当你一开始接触智能合约这块时，应该尽量不要使用框架。直到你明白了使用框架能带来的价值时，才应该开始使用，正如你不应该通过rails new来学习HTML语言一样。

**ETHPM**

分享是关心，所以ETHPM是一个去中心化的智能合约包管理资源库（[https://www.ethpm.com/registry）。使用ETHPM，你可以关联或连接到某个著名的合约或库，减少代码重复，尽可能理想的为未来的开发提供好的基础。](https://www.ethpm.com/registry%EF%BC%89%E3%80%82%E4%BD%BF%E7%94%A8ETHPM%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%85%B3%E8%81%94%E6%88%96%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%9F%90%E4%B8%AA%E8%91%97%E5%90%8D%E7%9A%84%E5%90%88%E7%BA%A6%E6%88%96%E5%BA%93%EF%BC%8C%E5%87%8F%E5%B0%91%E4%BB%A3%E7%A0%81%E9%87%8D%E5%A4%8D%EF%BC%8C%E5%B0%BD%E5%8F%AF%E8%83%BD%E7%90%86%E6%83%B3%E7%9A%84%E4%B8%BA%E6%9C%AA%E6%9D%A5%E7%9A%84%E5%BC%80%E5%8F%91%E6%8F%90%E4%BE%9B%E5%A5%BD%E7%9A%84%E5%9F%BA%E7%A1%80%E3%80%82)

这里的这个规范（[https://github.com/ethereum/EIPs/issues/190），详细的说明了相关的信息以及背景。Truffle和Embark均可与之集成，并创造一个愉快的开发体验。](https://github.com/ethereum/EIPs/issues/190%EF%BC%89%EF%BC%8C%E8%AF%A6%E7%BB%86%E7%9A%84%E8%AF%B4%E6%98%8E%E4%BA%86%E7%9B%B8%E5%85%B3%E7%9A%84%E4%BF%A1%E6%81%AF%E4%BB%A5%E5%8F%8A%E8%83%8C%E6%99%AF%E3%80%82Truffle%E5%92%8CEmbark%E5%9D%87%E5%8F%AF%E4%B8%8E%E4%B9%8B%E9%9B%86%E6%88%90%EF%BC%8C%E5%B9%B6%E5%88%9B%E9%80%A0%E4%B8%80%E4%B8%AA%E6%84%89%E5%BF%AB%E7%9A%84%E5%BC%80%E5%8F%91%E4%BD%93%E9%AA%8C%E3%80%82)

**网络**

Mainnet-以太坊主网，通常是所有客户端的默认网络。

Ropsten - 以太坊使用工作量证明的主测试网络。这个网络，因为低的计算量，容易遭到DDOS攻击，分片，或者其它问题。垃圾邮件攻击后被暂时放弃，最近才恢复使用。（[https://github.com/ethereum/ropsten）](https://github.com/ethereum/ropsten%EF%BC%89)

Kovan-parity客户端组成的测试网络，使用授权证明来提升对垃圾邮件攻击的抗扰度，并且持续4秒的阻塞时间。（[https://github.com/kovan-testnet/proposal）](https://github.com/kovan-testnet/proposal%EF%BC%89)

Rinkeby-geth客户端组成的测试网络，使用集团共识，尽管计算量低，但是对恶意行为者更有弹性。（[https://www.rinkeby.io/）](https://www.rinkeby.io/%EF%BC%89)

你可以自己搭建你自己的测试网络，也许使用kubernetes（[https://github.com/MaximilianMeister/kuberneteth）或者docker-compose（https://capgemini.github.io/blockchain/ethereum-docker-compose/），但也许你将很快就可以不需要花什么时间。](https://github.com/MaximilianMeister/kuberneteth%EF%BC%89%E6%88%96%E8%80%85docker-compose%EF%BC%88https://capgemini.github.io/blockchain/ethereum-docker-compose/%EF%BC%89%EF%BC%8C%E4%BD%86%E4%B9%9F%E8%AE%B8%E4%BD%A0%E5%B0%86%E5%BE%88%E5%BF%AB%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%B8%8D%E9%9C%80%E8%A6%81%E8%8A%B1%E4%BB%80%E4%B9%88%E6%97%B6%E9%97%B4%E3%80%82)

**帐户与钱包**

一个以太坊帐户就是一个私钥和公钥地址对。它们可以用来存储ether，创建时不需要花费gas。

钱包则是用来管理ether的智能合约（一些代码）。这里是使用solidity写的一个钱包，运行于Mist浏览器（[https://github.com/ethereum/meteor-dapp-wallet/blob/develop/Wallet.sol）。他们可以有许多的特性，比如多用户签名，纸？等等。](https://github.com/ethereum/meteor-dapp-wallet/blob/develop/Wallet.sol%EF%BC%89%E3%80%82%E4%BB%96%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%9C%89%E8%AE%B8%E5%A4%9A%E7%9A%84%E7%89%B9%E6%80%A7%EF%BC%8C%E6%AF%94%E5%A6%82%E5%A4%9A%E7%94%A8%E6%88%B7%E7%AD%BE%E5%90%8D%EF%BC%8C%E7%BA%B8%EF%BC%9F%E7%AD%89%E7%AD%89%E3%80%82)

这样，我们就正确的定义了两个名词，前面看到其它人对这两个术语的困惑，并把所有能存ether的都叫作Wallet。

EVM以及智能合约创建的状态

在每个全节点网络上运行的智能合约代码在EVM内执行。这是您的标准虚拟机，执行一些字节码，除了这个vm与网络，文件系统，进程等隔离。没有人想要编写字节码，所以我们有一些更高级别的语言编译为EVM字节码。

---

*Originally published on [Untitled](https://paragraph.com/@0x6bda405d05eaf5ed9b69f49f63238fca95fc5b7e/5)*
