# 以太坊开发入门3

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

---

Gas

智能合约，就是一些代码，运行整个分布式网络中。由于网络中的每一个节点都是一个全节点。这样的好处是容错性强，坏处是效率低，消耗资源与时间（译者注：原来只在一个节点执行一次就行，现在所有节点中每一个，都要执行一模一样的运算）。因为执行计算要花钱，而要执行的运算量与代码直接相关。所以，每个在网络运行的底层操作都需要一定量的gas。gas只是一个名字，它代表的是执行所需要花费的成本（译者注：由于以太坊是图灵完备的，随便一个死循环就将导致网络不可用，所以引入了gas的概念）。整个分布式网络引入了强制限制，来避免停机问题（[https://en.wikipedia.org/wiki/Halting\_problem）。因此如果你写一个死循环，当gas耗尽后，网络就会拒绝执行接下来的操作，并且回滚你之前的所有操作。](https://en.wikipedia.org/wiki/Halting_problem%EF%BC%89%E3%80%82%E5%9B%A0%E6%AD%A4%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%86%99%E4%B8%80%E4%B8%AA%E6%AD%BB%E5%BE%AA%E7%8E%AF%EF%BC%8C%E5%BD%93gas%E8%80%97%E5%B0%BD%E5%90%8E%EF%BC%8C%E7%BD%91%E7%BB%9C%E5%B0%B1%E4%BC%9A%E6%8B%92%E7%BB%9D%E6%89%A7%E8%A1%8C%E6%8E%A5%E4%B8%8B%E6%9D%A5%E7%9A%84%E6%93%8D%E4%BD%9C%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%9B%9E%E6%BB%9A%E4%BD%A0%E4%B9%8B%E5%89%8D%E7%9A%84%E6%89%80%E6%9C%89%E6%93%8D%E4%BD%9C%E3%80%82)

gas的价格由市场决定，类似于比特币的交易费机制。如果你的gas价格高，节点则将优先因为利益问题打包你的交易。

一般来说，在Ethereum中计算和存储东西比在传统环境中做的更为昂贵，但是，Ethereum为您的代码提供了上述我们讨论过的那些好的属性，这可能是一样有价值的。

一般来说，在以太坊网上读取状态是免费的，只有写入状态是收费的。下面这个文章是gas概念的一些深度解析（[https://hackernoon.com/ether-purchase-power-df40a38c5a2f）。](https://hackernoon.com/ether-purchase-power-df40a38c5a2f%EF%BC%89%E3%80%82)

分布式APP（?App / Dapp / dapp/ dApp）

一个分布式App是指，服务端运行于以太坊网络上一个或多个智能合约。

一个分布式的App不用将所有状态都存储在区块链上，或者在链上进行所有计算（译者注：比如图形渲染），这样就太花gas了。所以一个分布式App把需要大家共同信任的状态存在区块链上就好了。许多的分布式应用使用后面提到的技术，如IPFS和Gelem，在链下进行分布式存储和计算。虽然没在以太坊上，但仍使用的是区块链技术。

我不知道谁开始在D上使用这个小小的缺点，是看起来酷，但会影响搜索。 你可以自由使用，但尽量方便别人的搜索。

以太坊的github上，有一个dapp-bin的目录（[https://github.com/ethereum/dapp-bin），有一些文档和示例。使用前，你需要看看文件最近的状态，因为他们将很可能已经被淘汰。](https://github.com/ethereum/dapp-bin%EF%BC%89%EF%BC%8C%E6%9C%89%E4%B8%80%E4%BA%9B%E6%96%87%E6%A1%A3%E5%92%8C%E7%A4%BA%E4%BE%8B%E3%80%82%E4%BD%BF%E7%94%A8%E5%89%8D%EF%BC%8C%E4%BD%A0%E9%9C%80%E8%A6%81%E7%9C%8B%E7%9C%8B%E6%96%87%E4%BB%B6%E6%9C%80%E8%BF%91%E7%9A%84%E7%8A%B6%E6%80%81%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%96%E4%BB%AC%E5%B0%86%E5%BE%88%E5%8F%AF%E8%83%BD%E5%B7%B2%E7%BB%8F%E8%A2%AB%E6%B7%98%E6%B1%B0%E3%80%82)

DApp客户端

大多数的分布式应用都通过一些用户友好的前端提供服务，因为不是所有人都愿意通过命令行，通过自己手动组装哈希串和操作指令码进行交易。

一个DApp与传统的开发中的，客户端或前端是类似，区别仅在于它们与以太坊的区块链进行交互（也可以同时与其它服务交互）。这些客户端往往用JS编写，因为当前还暂时没有完成全部的向NodeJS的转换。

另外，大多数的Dapp客户端使用JS的原因，是因为它可以在浏览器中运行，因为大家都有浏览器，这样每个人都可以运行了。由于有更多的go语言的开发工具，使用go语言来写客户端的也不少。在现在这个激烈的发展期，这意味着，除非你有自己的偏好，否则可能要从go和JS（也许还有，Rust）来选择一种语言，来与以太坊区块链，以及基于以太坊开发的协议进行交互了。

以太坊的一个核心开发者，写了一篇关于使用Meteor工具来创建Dapp的文章（[https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor），这意味着Meteor已经成为Dapp客户端开发的新标准。这绝对是基于JS建立全栈应用时的一个首选方法。但需要注意的是Meteor只是提供了一个开发工具，与DApp客户端并不等同，DApp客户端也完全可以由其它方式开发。（译者注：还有一些其它的开发工具，如Truffle，也是非常不错的哦）。](https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor%EF%BC%89%EF%BC%8C%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80Meteor%E5%B7%B2%E7%BB%8F%E6%88%90%E4%B8%BADapp%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%BC%80%E5%8F%91%E7%9A%84%E6%96%B0%E6%A0%87%E5%87%86%E3%80%82%E8%BF%99%E7%BB%9D%E5%AF%B9%E6%98%AF%E5%9F%BA%E4%BA%8EJS%E5%BB%BA%E7%AB%8B%E5%85%A8%E6%A0%88%E5%BA%94%E7%94%A8%E6%97%B6%E7%9A%84%E4%B8%80%E4%B8%AA%E9%A6%96%E9%80%89%E6%96%B9%E6%B3%95%E3%80%82%E4%BD%86%E9%9C%80%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AFMeteor%E5%8F%AA%E6%98%AF%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E4%B8%AA%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%EF%BC%8C%E4%B8%8EDApp%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B9%B6%E4%B8%8D%E7%AD%89%E5%90%8C%EF%BC%8CDApp%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B9%9F%E5%AE%8C%E5%85%A8%E5%8F%AF%E4%BB%A5%E7%94%B1%E5%85%B6%E5%AE%83%E6%96%B9%E5%BC%8F%E5%BC%80%E5%8F%91%E3%80%82%EF%BC%88%E8%AF%91%E8%80%85%E6%B3%A8%EF%BC%9A%E8%BF%98%E6%9C%89%E4%B8%80%E4%BA%9B%E5%85%B6%E5%AE%83%E7%9A%84%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%A6%82Truffle%EF%BC%8C%E4%B9%9F%E6%98%AF%E9%9D%9E%E5%B8%B8%E4%B8%8D%E9%94%99%E7%9A%84%E5%93%A6%EF%BC%89%E3%80%82)

因为围绕Meteor和DApp开发的活跃，有非常多的包在Atmophere（Meteor的包管理工具），它提供了许多常见的操作，如帐户管理，从区块链中获得最新的50个区块等等。

DApp浏览器

一个DApp浏览器，正如它字面所表达的，用来让DApp客户端（常常使用JS与以太坊的智能合约进行交互）的使用更加容易。

DApp浏览器的主要目的是：

1.  提供到一个以太坊节点的连接（或者连接到一个本地节点或者远程节点），和一个方便的切换不同节点（甚至是不同的网络）。
    
2.  提供一个帐户（或者一个钱包）来方便用户与DApp交互。
    

Mist（[https://github.com/ethereum/mist）是以太坊官方的DApp浏览器。一个漂亮的界面来与以太坊节点交互，与智能合约发、收交易。](https://github.com/ethereum/mist%EF%BC%89%E6%98%AF%E4%BB%A5%E5%A4%AA%E5%9D%8A%E5%AE%98%E6%96%B9%E7%9A%84DApp%E6%B5%8F%E8%A7%88%E5%99%A8%E3%80%82%E4%B8%80%E4%B8%AA%E6%BC%82%E4%BA%AE%E7%9A%84%E7%95%8C%E9%9D%A2%E6%9D%A5%E4%B8%8E%E4%BB%A5%E5%A4%AA%E5%9D%8A%E8%8A%82%E7%82%B9%E4%BA%A4%E4%BA%92%EF%BC%8C%E4%B8%8E%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%8F%91%E3%80%81%E6%94%B6%E4%BA%A4%E6%98%93%E3%80%82)

Status（[https://status.im/）是一个手机上可以使用的DApp浏览器。](https://status.im/%EF%BC%89%E6%98%AF%E4%B8%80%E4%B8%AA%E6%89%8B%E6%9C%BA%E4%B8%8A%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E7%9A%84DApp%E6%B5%8F%E8%A7%88%E5%99%A8%E3%80%82)

MetaMask（[https://metamask.io/）是一个Google浏览器扩展，把Chrome变成了一个DApp浏览器。它的核心特性是注入以太坊提供的js客户端库web3，到每一个界面，来让DApp连接到MetaMask提供的以太坊节点服务。不过这个Chrome扩展，可以允许你管理你的钱包，以及连接到不同的以太坊网络（译者注：包括本地的开发网络）。](https://metamask.io/%EF%BC%89%E6%98%AF%E4%B8%80%E4%B8%AAGoogle%E6%B5%8F%E8%A7%88%E5%99%A8%E6%89%A9%E5%B1%95%EF%BC%8C%E6%8A%8AChrome%E5%8F%98%E6%88%90%E4%BA%86%E4%B8%80%E4%B8%AADApp%E6%B5%8F%E8%A7%88%E5%99%A8%E3%80%82%E5%AE%83%E7%9A%84%E6%A0%B8%E5%BF%83%E7%89%B9%E6%80%A7%E6%98%AF%E6%B3%A8%E5%85%A5%E4%BB%A5%E5%A4%AA%E5%9D%8A%E6%8F%90%E4%BE%9B%E7%9A%84js%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%BA%93web3%EF%BC%8C%E5%88%B0%E6%AF%8F%E4%B8%80%E4%B8%AA%E7%95%8C%E9%9D%A2%EF%BC%8C%E6%9D%A5%E8%AE%A9DApp%E8%BF%9E%E6%8E%A5%E5%88%B0MetaMask%E6%8F%90%E4%BE%9B%E7%9A%84%E4%BB%A5%E5%A4%AA%E5%9D%8A%E8%8A%82%E7%82%B9%E6%9C%8D%E5%8A%A1%E3%80%82%E4%B8%8D%E8%BF%87%E8%BF%99%E4%B8%AAChrome%E6%89%A9%E5%B1%95%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%85%81%E8%AE%B8%E4%BD%A0%E7%AE%A1%E7%90%86%E4%BD%A0%E7%9A%84%E9%92%B1%E5%8C%85%EF%BC%8C%E4%BB%A5%E5%8F%8A%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%BD%91%E7%BB%9C%EF%BC%88%E8%AF%91%E8%80%85%E6%B3%A8%EF%BC%9A%E5%8C%85%E6%8B%AC%E6%9C%AC%E5%9C%B0%E7%9A%84%E5%BC%80%E5%8F%91%E7%BD%91%E7%BB%9C%EF%BC%89%E3%80%82)

Parity（[https://parity.io/parity.html）是一个以太坊客户端（也是一个全节点的实现），集成到了Web浏览器，并使之成为一个DApp浏览器。](https://parity.io/parity.html%EF%BC%89%E6%98%AF%E4%B8%80%E4%B8%AA%E4%BB%A5%E5%A4%AA%E5%9D%8A%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%88%E4%B9%9F%E6%98%AF%E4%B8%80%E4%B8%AA%E5%85%A8%E8%8A%82%E7%82%B9%E7%9A%84%E5%AE%9E%E7%8E%B0%EF%BC%89%EF%BC%8C%E9%9B%86%E6%88%90%E5%88%B0%E4%BA%86Web%E6%B5%8F%E8%A7%88%E5%99%A8%EF%BC%8C%E5%B9%B6%E4%BD%BF%E4%B9%8B%E6%88%90%E4%B8%BA%E4%B8%80%E4%B8%AADApp%E6%B5%8F%E8%A7%88%E5%99%A8%E3%80%82)

---

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