> For the complete documentation index, see [llms.txt](https://docs.bearnetwork.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bearnetwork.net/developers/bearnetworkchain-bnes-remix-zheng-que-bu-shu-he-yue-jiao-xue.md).

# BearNetworkChain (BNES) — Remix 正確部署合約教學

### 正確操作步驟

#### 1. 連接錢包

* 進入 Remix 左側 **Deploy & Run Transactions**
* Environment 請選擇 **`Browser Extension`**
* 再選擇 **MetaMask**

> 不要選 `Injected Provider` 以外的選項，避免連線異常。

#### 2. 確認網路

* 打開 MetaMask
* 確認目前網路是 **BearNetworkChain**（Chain ID: `641230`）
* 如果沒有，請手動新增：

| 項目       | 數值                                      |
| -------- | --------------------------------------- |
| 網路名稱     | Bear Network Chain Mainnet              |
| RPC URL  | <https://brnkc-mainnet.bearnetwork.net> |
| Chain ID | 641230                                  |
| 符號       | BRNKC                                   |
| 瀏覽器      | <https://brnkscan.bearnetwork.net>      |

#### 3. 編譯設定（最重要）

進入左側 **Solidity Compiler**：

1. **Compiler** 選擇與合約 `pragma` 相同的版本（建議 `0.8.27`）
2. 點開 **Advanced Configurations**
3. **EVM Version** 必須選擇 **`london`**
4. Optimization 保持預設 `200` 即可
5. 點 **Compile** 編譯合約

> ⚠️ 如果不把 EVM Version 改成 `london`，編譯出來的 bytecode 會包含 `PUSH0` 指令，導致部署失敗。

#### 4. 部署合約

回到 **Deploy & Run Transactions**：

* Environment：`Browser Extension` → MetaMask
* 確認顯示的是 **Bear Network Chain**
* Value 保持 `0`
* Gas limit 可保持 `auto`
* 點 **Deploy**
* 在 MetaMask 確認交易

#### 5. 驗證部署是否成功

部署成功後，可用以下指令確認：

```powershell
$target = "你的合約地址"
$url = "https://brnkc-mainnet.bearnetwork.net"

$body = @{
    jsonrpc = "2.0"
    method  = "eth_getCode"
    params  = @($target, "latest")
    id      = 1
} | ConvertTo-Json

$res = Invoke-WebRequest -Uri $url -Method Post -ContentType "application/json" -Body $body -UseBasicParsing
$code = ($res.Content | ConvertFrom-Json).result
Write-Host "Code length: $($code.Length)"
```

如果 `Code length` 大於 2，代表部署成功。

***

### 常見錯誤對照

| 錯誤訊息                    | 原因                    | 解決方法                   |
| ----------------------- | --------------------- | ---------------------- |
| `invalid opcode: PUSH0` | EVM Version 不是 london | 改成 `london` 重新編譯       |
| Gas estimation failed   | 正常現象（舊設定時）            | 改用 london 後通常會自動算出 gas |
| Connection declined     | MetaMask 連線卡住         | 重新整理頁面或重連 MetaMask     |
| Switch Network 視窗       | Remix 不認識自訂鏈          | 直接關閉即可，不影響部署           |

***
