# 编程日记：Hardhat本地部署（2022-08-28）

By [Corror](https://paragraph.com/@corror) · 2022-08-28

---

编程学习
----

### 行动指南

目标：使用 Hardhat 搭建最小完整项目，需要包括以下功能：

*   \[ \] 部署合约
    
*   \[ \] 测试合约
    
*   \[ \] 创建并引用库
    

整体框架：

1.  部署Hardhad开发环境
    
    1.  安装 Hardhad: `yarn add --dev hardhat`
        
    2.  创建 JavaScript 版本的 Hardhat.
        
2.  迁移智能合约
    
    1.  重写代码，查阅笔记，巩固不熟悉的代码部分。
        
3.  编译智能合约
    
    1.  `yarn hardhat compile`
        
4.  部署智能合约
    
    1.  "Require Module": 引入模块
        
        *   `hardhat`
            
            *   **_cm_** 为什么 `hardhat` 模块被引入后只能重命名为 `ethers`?
                
    2.  "Main Function": 主函数
        
        1.  本地部署
            
            1.  创建合约工厂： `ethers.getContractFactory()`
                
            2.  部署合约：`ContractFactory.delpoy()`
                
            3.  确认交易：`contract.deployed()`
                
            4.  **_td_** 学习 Hardhat Network, 了解为什么我们部署本地合约时，无需 Private Key 以及 RPC URL。
                
        2.  远程部署
            
    3.  "Executor Function": 执行函数
        
5.  测试智能合约
    

### 做了什么？

1.  成功了解了 `hardhat.config.js` 文件的作用。
    
2.  成功重写了 `SimpelStorage.sol` 合约内容，再次巩固了合约的写法。
    
3.  成功找到了编程的重心，明白要将思考放在重要的编程问题上。
    
4.  成功利用 Hardhat 在本地部署合约，并将过程记录在了整体框架当中。
    

### 收获了什么知识？

#### `hardhat.config.js` 配置文件

`hardhat.config.js` 文件是整个 Hardhat 项目的 entry 入口，类似于一个源代码里的 `main()` 函数。

Hardhat 的配置包括三个方面：config, plugins 以及 custom tasks, 所有的配置都可以写在 `hardhat.config.js` 文件当中。

#### task 任务

Hardhat 中的 task 任务，相当于带有 metadata 元数据的 JS 异步函数。

### 收获了什么方法？

#### 通过编程框架，专注于重要的问题

##### 背景：建立框架

在编程的时候，需要写下自己的目标和编程框架，目标是让自己觉得有意义的方向，而框架是实现目标的环节，它能够让自己明白自身当下的定位。

在能够确定目标、整体框架、预测框架的情况下，自己就确定了当下的定位和前进的方向。

##### 方法：思考+索引记录

*   框架以内的问题，需要通过思考来解决，因为这样的问题具有意义感，解决后也更能够获得成就感。
    
*   框架以外的问题，可以记录下解决的方法，之后需要深入了解的时候，再去索引记录，并深度思考。

---

*Originally published on [Corror](https://paragraph.com/@corror/hardhat-2022-08-28)*
