# 以太坊智能合约Hello World

By [faifcn.eth](https://paragraph.com/@faifcn) · 2022-07-24

---

第一课：以太坊智能合约Hello World
----------------------

以快速的方式学习solidity智能合约开发流程笔记

1\. 准备工作
--------

下载[metamask钱包浏览器插件](https://www.google.com/url?q=https://metamask.io/download/&sa=D&source=editors&ust=1658674446659885&usg=AOvVaw3VEu9C4JQ87qJ7GA72iCmO)。本试验使用firefox火狐浏览器。建立自己的钱包和以太坊钱包地址（请保存好助记词）。

![Metamask 安装界面](https://storage.googleapis.com/papyrus_images/a02dc0e08762d2caabd729c79a440ed99a4ba02b5313aab86b67883f10240720.png)

Metamask 安装界面

2\. 准备测试网络和测试币
--------------

点击show/hide test networks，使metamask可以连接到以太网测试网路。我们使用Ropsten Test Network (注意Ropsten测试网在以太坊合并到POS以后，[2022年底会关停](https://www.google.com/url?q=https://blog.ethereum.org/2022/06/21/testnet-deprecation/&sa=D&source=editors&ust=1658674446660829&usg=AOvVaw07H5_EC9EceP6u5ymK8cOF)，届时可以使用其他的测试网）。

![连接钱包到测试网络](https://storage.googleapis.com/papyrus_images/36833486ad8ba259aabbfdf67c2eb3763afec8b32e3384744eca9c5e08a88bff.png)

连接钱包到测试网络

申请测试以太币，测试币申请通过网上几个水龙头🚰程序 Faucet，例如[https://faucet.metamask.io/](https://www.google.com/url?q=https://faucet.metamask.io/&sa=D&source=editors&ust=1658674446661285&usg=AOvVaw0MP3gCiSZfe5IZ8ofnF8LX) [https://faucet.egorfine.com/](https://www.google.com/url?q=https://faucet.egorfine.com/&sa=D&source=editors&ust=1658674446661491&usg=AOvVaw0Gp-4by59ueTIMzIRKSoMD) 等。将你的钱包地址填入申请测试以太币，或者通过连接钱包操作，一般30分钟内会收到以太币。

3\. 用Remix开发智能合约
----------------

我们可以使用在线开发平台 [remix](https://www.google.com/url?q=https://remix.ethereum.org&sa=D&source=editors&ust=1658674446661974&usg=AOvVaw2NVBc6JSGWqrubCwnVLSu8)，进行智能合约编程。注意Remix使用浏览器缓存进行文件存储，重置或清理浏览器缓存会造成文件丢失，请备份本地文件，或者远程云备份。

我们将使用“[精通以太坊](https://www.google.com/url?q=https://github.com/ethereumbook/ethereumbook/blob/develop/book.asciidoc&sa=D&source=editors&ust=1658674446662454&usg=AOvVaw30kxXunAlVdGlISjQJpkEz)”这本开源书的 [Solidity](https://www.google.com/url?q=https://github.com/ethereumbook/ethereumbook/tree/develop/code/Solidity&sa=D&source=editors&ust=1658674446662771&usg=AOvVaw3z5dZ1g6-6ZB0pQK8Kb1xu)代码来进行测试 。下载水龙头简单的 [Faucet](https://www.google.com/url?q=https://raw.githubusercontent.com/ethereumbook/ethereumbook/develop/code/Solidity/Faucet.sol&sa=D&source=editors&ust=1658674446663038&usg=AOvVaw0WymkB5P3jOLEbmqp-wkJo)源代码。在Remix IDE上，你可以新建一个Workspace，选择blank的template（模板），新建文件命名为Faucet.sol , 将文件的源代码copy paste到你的新建的文件中。Remix的编程界面如下：

![Remix开发界面](https://storage.googleapis.com/papyrus_images/523a3214f28bfbbbcc6f5db29301337e4c297dd60bd983390c4982731a9942e4.png)

Remix开发界面

这个合约是一个简单的“水龙头”应用，你可以把钱（以太）发送到这个合约（给水龙头充值），也可以向水龙头申请钱（从合约里面取得以太）。

Remix的右边四个tab下面的两个tab分别是编译和运行，你可以对代码进行编译，运行的时候，需要设置各种运行环境，可以选择Injected Provider - Metamask，可以看到连接到Ropsten测试网了。

![部署智能合约界面](https://storage.googleapis.com/papyrus_images/d751d59058c7b03e62f5e34786d4eb2aed7ee7a270127f440bf10adc90680152.png)

部署智能合约界面

直接点击里面“Deploy”的这个按钮，然后Metamask会弹出请你批准部署这个合约到网上（花费一定的gas），点击确认，等一会儿，合同就部署到测试网上了。在remix的状态栏里面显示已经部署成功，可以在Etherscan上查看内容了。

![部署状态栏](https://storage.googleapis.com/papyrus_images/a748f0931659c00039497b0fbe627f9ce50161ffe31e89afac380f3a2915fae2.png)

部署状态栏

部署合约也是交易的一种，所以通过交易HASH查询：

[https://ropsten.etherscan.io/tx/0xb93ba93660d608ab071d143305f5ec20ea4c4cc8e257caeaf02db4cbf189e954](https://www.google.com/url?q=https://ropsten.etherscan.io/tx/0xb93ba93660d608ab071d143305f5ec20ea4c4cc8e257caeaf02db4cbf189e954&sa=D&source=editors&ust=1658674446665062&usg=AOvVaw0d-F-TCdUljjEvzvem7iew)

合约地址为：

[https://ropsten.etherscan.io/address/0x5f67197b3105f8cfc0f61abc452f391df8df95a0](https://www.google.com/url?q=https://ropsten.etherscan.io/address/0x5f67197b3105f8cfc0f61abc452f391df8df95a0&sa=D&source=editors&ust=1658674446665519&usg=AOvVaw2Io6Y6PHJce8pcCgrs3br0)

4\. 测试合约
--------

与合约交互：因为现在的合约还没有前端界面，我们可以通过钱包和合约进行交互，首先，使用metamask向合约打1个ETH。直接从metamask里面向合约地址发送一个以太，然后批准交易，等几分钟后，交易完成以后，合约地址里面就能看到1一个以太了，并且可以在测试网上看到交易记录。

![通过Etherscan查看合约信息](https://storage.googleapis.com/papyrus_images/3232aa18aada816cbfbef8d2da8ee75aa5109c0b185895aa74b2da424d7fca02.png)

通过Etherscan查看合约信息

向合约取钱，可以在deploy的tab下，使用Remix左侧的工具栏调用withdraw函数。现在的程序使用wei作为单位，所以索取0.1个以太，通过[https://eth-converter.com/](https://www.google.com/url?q=https://eth-converter.com/&sa=D&source=editors&ust=1658674446666542&usg=AOvVaw3yqy2pIcVhZj-vZHHUZMo_) 可以转换一下所需wei的数量为100000000000000000，点击“transact”，过几分钟，0.1 ETH就到你的连接的钱包里面了。

![与合约进行交互（调用函数）](https://storage.googleapis.com/papyrus_images/9b84d6fc1b39676238802543a6b2d380d3e8d0b9f2797ede8105c6e86fda130f.png)

与合约进行交互（调用函数）

查看etherscan合约地址下面的Internal Txns可以看到0.1以太被转出到你的地址。

![查看合约运行情况](https://storage.googleapis.com/papyrus_images/25470dcab88a81e99966ade6f0080604621cfb81fae1808668e5cc0bc78633c2.png)

查看合约运行情况

参考文献
----

1.  [https://github.com/ethereumbook/ethereumbook](https://www.google.com/url?q=https://github.com/ethereumbook/ethereumbook&sa=D&source=editors&ust=1658674446667914&usg=AOvVaw0Ryb9TBzKH2P31m4eVfvRx)

---

*Originally published on [faifcn.eth](https://paragraph.com/@faifcn/hello-world)*
