---
# System prepended metadata

title: '[Z <> Nero 實習進度](https://hackmd.io/@zinstitute/HktIQ3yH2)(Eda)'
tags: [日本實習]

---

###### tags: `日本實習`


clockify

https://app.clockify.me/tracker

---



Tech writer 的話，目前需要的是比較 research 類型的，這個需要理解到的程度是例如 how bundler, different paymaster implementation works 這種

形式是 tutorial + 簡易 working 的GitHub 範例，類似你這次實習最後做的那份，只是題目不同


https://github.com/pimlicolabs/erc20-paymaster-contracts

___

hardhat


install dependencies
> npm instal

Install failed,run the following the command:

> npm audit fix
> npm audit fix --force
> npm audit
> npm install

run test
> Npx hardhat test

An unexpected error occurred，run:
> npm install --force

![](https://hackmd.io/_uploads/SJ4D46mch.png)

將../../typechain-types改成../../node_modules/typechain-types
![](https://hackmd.io/_uploads/HyNiEaQ5h.png)


![](https://hackmd.io/_uploads/SkbSV67c3.png)

，安装缺失的依赖项：
> npm install chai @types/chai chai-as-promised @types/chai-as-promised



並且導入模塊和類型
> import { expect } from 'chai';
> import chaiAsPromised from 'chai-as-promised';


![](https://hackmd.io/_uploads/S1vfHa7c3.png)

--
![](https://hackmd.io/_uploads/Byo1s-Hcn.png)

--

![](https://hackmd.io/_uploads/rkUEF-S93.png)

![](https://hackmd.io/_uploads/ryZDtZS5h.png)

![](https://hackmd.io/_uploads/rkKFKbHq2.png)

--
![](https://hackmd.io/_uploads/BJQptZB9n.png)

![](https://hackmd.io/_uploads/rkNhZfHch.png)

![](https://hackmd.io/_uploads/SJND-Mrqn.png)



---


# [Z <> Nero 實習進度](https://hackmd.io/@zinstitute/HktIQ3yH2)(Eda)

- [x] 看懂[Celestia](https://celestia.org/what-is-celestia/)&[OP Stack](https://stack.optimism.io/#the-op-stack-tomorrow)
      -[Note](https://hackmd.io/Vhhz3ACeR_GsL_ppAWDlKg)
- [x] 照著幣安鏈的框架弄一個 Nero 的 [gitbook](https://nero-3.gitbook.io/nero-chain-documentation/)頁面，參考資料[BNB Chain Documentation](https://docs.bnbchain.org/docs/binance/)
    - user guide 的概念，就是教其他用戶(開發者)該怎麼跟我們現在的測試鏈互動，思考如何撰寫文章說明 + 用法截圖。
     -[gitbook目前進度](https://app.gitbook.com/o/MwJBzVZ9EvXF7YrUaKAt/s/DqXJFhDm0P6PZWpl9ovG/overview/guides/develop)：有先完成部署和驗證合約教學    
    - [API](https://api.nerochain.io/api/v1/#/)寫一份簡單的 end to end 操作教學?
    - https://docs.bnbchain.org/docs/beaconchain/develop/api-reference/dex-api/block-service#txsvo
    - [製作表格](https://docs.google.com/spreadsheets/d/1lCNN2AWO9gTlkJjIdVm9Sn5ToAgWZvKVJyBo93bjEEs/edit#gid=0)


- [x] 重製[Leo](https://hackmd.io/@LeoLi/Nero-Internship)在測試網上部署一個簡易 ERC20 合約
- [ ]  API end to end 的 tutorial，分成不同 use case，學習資料[Handle GET and POST Request in Express](https://codeforgeek.com/handle-get-post-request-express-4/)
- [ ] https://github.com/nerochain

    - [x] use case 1 可以是「如何儲存字串訊息到鏈上到查看已推送的交易（使用到兩個 api）」
    - 第一個是領faucet 第二個是儲存字串到鏈上並且拿到transaction hash
    
    -  ~~use case 2 可以是「創建新用戶到能使用某種特定功能的過程」~~
    - [x] 照[這個](https://codeforgeek.com/handle-get-post-request-express-4/)做然後再用自己的話寫
    - [x] [白皮書](https://hackmd.io/ItDFDPMIQi2nud-Qc0CDSQ)
    

- [ ] dailyGoal建立 
    - [ ] CREATE ? https://www.nerochain.io/token-creation
    - [ ] STAKING
    - [ ] ACCESS


- [ ] https://github.com/yijunlindev/nero-api-demo 要放gitbook?要

    




---
### [保存區](https://hackmd.io/zsseDL30TjKnHoIkJO5vCA)





---
# 任務一

* 先去 安裝 Homebrew 是一種在 macOS 和 Linux 上安裝軟體的套件管理器。這裡是如何在 macOS 上安裝 Homebrew 的步驟：

輸入以下命令：

```
bash
Copy code
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

* 安裝套件

* [Docker setup](https://docs.blockscout.com/for-developers/information-and-settings/docker-integration-local-use-only)



* Run本地geth

```
geth --syncmode full --gcmode archive --http --http.vhosts='*' --http.addr '0.0.0.0' --http.port 8545 --http.api 'net,debug,eth,web3,txpool' --http.corsdomain '*' --ws --ws.addr '0.0.0.0' --ws.port 8546 --ws.api 'net,debug,eth,web3,txpool' --ws.origins '*'
```


![](https://hackmd.io/_uploads/H1PA3xRLn.png)

* 接著`cd /Users/linyijun/my-projects/blockscout`
```
docker-compose up --build
```


![](https://hackmd.io/_uploads/SJ2NjlRUh.png)

```
softwareupdate --install-rosett2
```



修改

   ![](https://hackmd.io/_uploads/BJwlY-CUh.png)


```
docker-compose up --build
```
z
在 docker-compose.yml 中添加這個設定
![Uploading file..._a3foakd5a]()

然後執行`docker image prune -a`
再執行`docker-compose up --build`



![](https://hackmd.io/_uploads/SJk4wHaOh.png)


＿＿＿

# 任務二

### [OP Stack and Celestia tutorial](https://docs.celestia.org/developers/optimism/)
    
1. #### Environment setup and Golang installation

Install wget and jq
```
brew install wget && brew install jq
```

Install Golang

```
ver="1.20.2" 
cd $HOME 
wget "https://golang.org/dl/go$ver.darwin-amd64.tar.gz" 
sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf "go$ver.darwin-amd64.tar.gz" 
rm "go$ver.darwin-amd64.tar.gz"     
```
    
Now we need to add the /usr/local/go/bin directory to $PATH:

```
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

確認安裝成功

```
go version
```


2. #### Clone repository

```
cd $HOME
git clone https://github.com/celestiaorg/optimism
cd optimism
git checkout celestia-develop
```
    
3. ### asdf
    
Open a new Terminal and input:
```
cd $HOME
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.2
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
```
  
    
Set the path:
    
```
export PATH=$PATH:~/.asdf/bin/
```
    
確認安裝
    
```
asdf
```

Install nodejs 16.16.0:

```
asdf plugin add nodejs
asdf install nodejs 16.16.0
asdf local nodejs 16.16.0
source ~/.bashrc

curl -L https://foundry.paradigm.xyz/ | bash
source /Users/linyijun/.zshenv
foundryup
```    

4. #### Build devnet
    
```
cd $HOME
cd optimism
make build-ts

export SEQUENCER_BATCH_INBOX_ADDRESS=0xff00000000000000000000000000000000000000
export L2OO_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8
```
    
5. ### Start devnet

```
make devnet-up 
```

    
出現錯誤訊息如下：
    
![](https://hackmd.io/_uploads/ByuwDgyv3.png)

    
根據提示把重複定義過的值（140-142行）隱蔽或刪除

![](https://hackmd.io/_uploads/BJxxYxJw2.png)

成功畫面
    
![](https://hackmd.io/_uploads/rkcGigJv2.png)

5. ### Stop devnet
    
```
make devnet-down 
make devnet-clean
```
  
![](https://hackmd.io/_uploads/HkeM8SJw3.png)

---
如果已安裝node.js但出現下面畫面：
![](https://hackmd.io/_uploads/SJguSYfw3.png)
降版本

`open -e ~/.zshrc`會跳出`.zshrc `文件，輸入：
```
export NVM_DIR=/Users/linyijun/.nvm
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

```
如下
![](https://hackmd.io/_uploads/Hk3c0JQw2.png)
run
```
source ~/.zshrc
nvm --version
node --version
```
降版本成功！
![](https://hackmd.io/_uploads/S1d0TJ7v3.png)


Run `npx hardhat` 創建出智能合約的架構，引入 ERC20 創建簡易的代幣合約

修改 hardhat.config.js & scripts/deploy.js 並使用 npx hardhat deploy 指令將合約部署到測試網 L1: http://139.162.97.228:8545, ChainID: 900 / L2: http://139.162.97.228:9545, ChainID: 901


`npx hardhat compile`一直`Nothing to compile`，後來`npx hardhat help compile`再compile一次就開始Downloading compiler能編譯成功了

```
L1_PROVIDER_URL=http://localhost:8545
L1_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
L2_PROVIDER_URL=http://localhost:9545
L2_PRIVATE_KEY=bf7604d9d3a1c7748642b1b7b05c2bd219c9faa91458b370f85e5a40f3b03af7

```

暫時先使用水龍頭帳戶進行部署 (LINK)



–
[hardhat plugin](https://docs.blockscout.com/for-users/verifying-a-smart-contract/hardhat-verification-plugin) 驗證
部署成功後，但未驗證前畫面

合約地址0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9


![](https://hackmd.io/_uploads/HkxqgyPNwh.png)


在 `hardhat.config.js` 中添加 `require("@nomiclabs/hardhat-etherscan");`


到`.env` 中加入 API key（etherscan 申請）同時加入hardhat.config.js 相關設定（拿文件範例改編）


使用 npx hardhat verify --list-networks 確認自定義的 network 添加成功
輸入指令開始驗證 npx hardhat verify --network <network-name> <deployed-contract-address>

----
![](https://hackmd.io/_uploads/BJ-pFv3u2.png)
![](https://hackmd.io/_uploads/r1LxVyDP2.png)
![](https://hackmd.io/_uploads/HkHURobY2.png)



