---
# System prepended metadata

title: Solidity 入門 Remix編譯器、如何查看合約

---

# Solidity 入門 Remix編譯器、如何查看合約

# Solidity Remix介紹

![image](https://hackmd.io/_uploads/rkceBugXC.png)
>https://remix-project.org/

Remix IDE 是一個線上的以太坊(ETH)智能合約IDE(開發環境)，支援Solidity語言，這是以太坊區塊鏈上智能合約的主要語言。以下是Remix IDE的主要特點：

* 即時編輯器： Remix IDE內建一個即時編輯器，讓您可以輕鬆編寫和編輯Solidity智能合約。編輯器支援語法高亮和自動完成功能，提高了編碼效率。

* 智能合約測試： Remix IDE內建了測試工具，讓您可以快速且方便地測試智能合約的功能。這有助於確保您的合約在上鏈之前能夠正確運行。

* 交互式調試器： Remix IDE包括一個交互式的調試器，讓您可以逐步運行並檢查合約的執行過程。這有助於發現並解決潛在的錯誤。

* 內建的插件系統： Remix IDE支援豐富的插件，這使得開發人員能夠根據其需求自定義和擴展IDE的功能。

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


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

# 使用 Remix 的方式

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

* Remix 線上 IDE : [Remix Online IDE](https://remix.ethereum.org) 
* Remix 桌面版 IDE : [Remix Desktop IDE](https://github.com/ethereum/remix-desktop/releases) 
* VScode 擴充套件 : [Ethereum Remix](https://github.com/ethereum/remix-vscode) 
* Remix CLI Tool 令列工具: [Remixd ](https://github.com/ethereum/remix-project/tree/master/libs/remixd)


這邊我覺得最方便的是 Remix 線上 IDE，打開就能使用了，而且可以跟小狐狸連動透過小狐狸部屬

:::info

開發時要部屬合約為會需要使用到測試幣，所以建議先安裝MetaMask，並且到這個網站領取Rinkeby測試網的幣，https://faucets.chain.link/。

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

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


點進去Remix線上編譯器之後會顯示如下
![image](https://hackmd.io/_uploads/BJ8Xh_e7A.png)

# Remix 開發測試流程

## 建立 sol 智能合約檔案
點選 Create New File 創建 Sol 智能合約檔案

建立一個新的sol，例：test.sol
![image](https://hackmd.io/_uploads/rJPOnOeQC.png)

## 編譯程式

撰寫好後，最左邊選單點選 ![image](https://hackmd.io/_uploads/ry9UT_xmA.png)，進入如下圖

:::info
目前是用 tests/Ballot_test.sol 來展示
![image](https://hackmd.io/_uploads/H1Ub4KlmA.png)
:::

![image](https://hackmd.io/_uploads/rysfC_g70.png)
> 版本通常會根據你合約寫的內容自動調整版本，Auto compile可以勾起來，他就會自動編譯，有勾勾就是沒問題，也可以手動Compile所以自行選擇。


點擊![image](https://hackmd.io/_uploads/By2BA_xXC.png) 按鈕進行Compile 偵錯，可以用來檢查程式是否有哪些地方編譯會出錯先DeBug

## 部屬程式
點擊最左邊選單的![image](https://hackmd.io/_uploads/r1rNyFxQR.png)，進入如下圖，部署頁面

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


如果想要部屬在MetaMask上，ENVIRONMENT要選MetaMask(須先在Chrome安裝該擴充插件)
![image](https://hackmd.io/_uploads/B10UJYgXC.png)

點擊 ![image](https://hackmd.io/_uploads/BJl7Wtl7C.png)  部屬合約

![image](https://hackmd.io/_uploads/r1WgZtemA.png)
會跳出小狐狸確認，就是這邊會用到測試幣

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

這邊點選 view on etherscan 可以看到成功部屬的結果
![image](https://hackmd.io/_uploads/rJbxMtemC.png)
>To: 這個就是智能合約地址

## 測試智能合約

成功部屬後會在下方看到智能合約資訊並且可以點擊按鈕進行測試
![image](https://hackmd.io/_uploads/rkQdQFx7C.png)

>詳細的Solidity 用法可以參考以下官方教學簡體中文檔案
>參考資料 : [Solidity－Solidity develope文檔](https://solidity-cn.readthedocs.io/zh/develop/solidity-in-depth.html)


# 如何查看區塊鏈瀏覽器上的Contract？

有產生合約address 就能透過區塊鏈瀏覽器看到合約的程式碼，例如以下連結
>https://etherscan.io/address/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d#code

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

:::warning
要注意，通常不開源的合約風險都是比較高的，就不建議參與。
:::

# 區塊鏈如何可以確保不被竄改?

區塊鏈模擬器以簡單的方式展示了區塊鏈的不可竄改性。
> [BlockChain Demo](https://andersbrownworth.com/blockchain/blockchain)

在這個模擬器中，綠色代表合格的區塊，而紅色代表不合格的區塊。如果更改了前一個區塊的任何資料，後面的幾個區塊就會顯示為紅色，表示不合格。

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

每個區塊都包含了前一個區塊的雜湊（Prev），而第一個區塊是從全0開始。當第一個區塊的資料發生變化時，會影響到第二個區塊，因為第二個區塊的 Prev 就是第一個區塊的雜湊。這樣的連鎖效應會使得後面的區塊的雜湊都不匹配，從而讓這些區塊都變成不合格的紅色。

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

當前面任何一個區塊更動時，後面的Hash就會完全不符合，而顯示為不合格的紅色。

![image](https://hackmd.io/_uploads/HJl-6Kl7C.png)

如果想要更改其中一個區塊，就需要重新挖掘後面的所有區塊，因為每個區塊的雜湊都取決於前一個區塊的雜湊。這種特性確保了區塊鏈的不可竄改性，因為想要修改一個區塊，就必須同時修改它後面所有的區塊，而這需要龐大的計算資源和時間，從而讓修改變得極為困難和不划算。

因此，當你想要更改的區塊越前面，後面的區塊累積的越多，區塊鏈就變得更加安全。


# 參考文章
https://geekaz.net/solidity-beginner-tutorial-0/#t-1659281348325


