進入Cloud IDE開發環境
可通過以下任一方式進入 Cloud IDE 合約開發環境:
在BaaS 平台BaaS 平台,單擊螞蟻區塊鏈 > 合約鏈,單擊目標鏈操作欄下的管理,單擊左側導覽列上的合約工程管理。在合約工程管理頁,您可以通過建立合約工程或編輯已有的合約,進入 Cloud IDE 合約開發環境。
您也可以單擊螞蟻區塊鏈 > 概覽頁面的合約體驗鏈卡片上的調試合約,進入Cloud IDE開發環境。
Cloud IDE 合約工程管理
可以通過Cloud IDE對合約工程內的檔案夾、檔案進行 建立、刪除、修改名字 操作。

序號 | 表徵圖 | 功能 |
① |
| 添加檔案、檔案夾 |
② |
| 刪除檔案、檔案夾 |
③ |
| 修改檔案、檔案夾 |
從合約工程管理頁面進入Cloud IDE, 預設即時儲存檔案。
當前Cloud IDE僅支援對Solidity合約進行編譯,新增合約檔案請以
.sol結尾,否則編譯失敗。
Cloud IDE 合約開發流程
使用 Cloud IDE 開發合約的過程主要分為以下 5 步:
選擇目標合約鏈
在 Cloud IDE 中,點擊 環境配置,選擇目標的合約鏈環境。
在 環境配置 中,您可以選擇自己已有的鏈配置環境。例如,您已申請體驗鏈,則可以選擇已有的公用 合約鏈,該體驗鏈會配備一個預設的測試賬戶,您可以直接用來部署、調用合約。如果此測試賬戶不能滿足需求,您也可以使用通過 SDK 建立的賬戶,但是需要填入私密金鑰(16 進位字串),因為在部署、調用合約時IDE都需要賬戶的私密金鑰對交易做簽名處理。
關於如何擷取 16 進位字串形式的私密金鑰,參見準備合約鏈的賬戶中的範例程式碼。
編譯合約
開發合約過程中,可以隨時對已完成的代碼進行編譯。
在 Cloud IDE 中,點擊 編譯,開始編譯代碼。
位元組碼即合約代碼的編譯結果,也是合約部署時使用的關鍵資料,通過 SDK 可以將合約位元組碼部署到目標的生產鏈上使用。
合約介面說明(ABI)應用程式二進位介面(Application Binary Interface,ABI)可以理解為合約的介面說明。當合約被編譯後,其對應的 ABI 也會一起產生。
ABI 類似於程式中的介面說明文檔,描述了屬性和方法簽名相關資訊,包括欄位名稱、欄位類型、方法名稱、參數名稱、參數類型、方法傳回值類型等。
ABI 參數說明:
參數 | 說明 |
name | 函數名稱 |
type | 方法類型,包括 function、constructor、fallback(預設方法),預設為 function。 |
constant | 布爾值,如果為 true,則表示方法不會修改合約欄位的狀態變數。 |
payable | 布爾值,表示方法是否可以接收系統轉賬。 |
stateMutability | 狀態類型,包括 pure(不讀取區塊鏈狀態)、view(和 constant 類型一樣,只能查看,不會修改合約欄位)、nonpayable(和 payable 含義一樣)、payable(和 payable 含義一樣)。 |
inputs | 數組,描述參數的名稱和類型。 |
name | 參數名稱 |
type | 參數類型 |
outputs | 和 inputs 一樣,如果沒有傳回值,預設是一個空數組。 |
更多 ABI 相關資訊,參見 Solidity ABI 官方介紹(英文)。
部署合約
在合約編譯通過,得到位元組碼和 ABI 後,在 Cloud IDE 中點擊 部署合約 將合約部署到目標體驗鏈進行測試。
在部署定義了 constructor 方法的合約時,需要給定 constructor 方法的參數。Cloud IDE 支援合約方法參數類型的提示和一些基礎資料型別 (Elementary Data Type)的初始化賦值,您可根據自身實際情況初始化合約。
部署成功後,可以看到合約的所有方法列表。
調用合約
合約部署成功後,IDE 會列出合約中所有的 public 方法以及 public 類型的狀態變數。點擊目標方法右側的 調用合約 進行調用。
其中,狀態變數對應的調用可以直接返回目前狀態變數的值。合約方法的調用可以返回如下幾個欄位:
參數 | 說明 |
input | 合約方法的輸入資料,通常為合約方法的參數。 |
output | 合約方法的傳回值,可能是多個值,根據傳回值具體類型轉碼顯示。 |
log | 如果在合約中使用了 Event 事件,並且事件被觸發,則會在 log 中展示。 |

錯誤說明
在使用 Cloud IDE 過程中,可能遇到一些錯誤提示。在調用合約時,如果合約執行過程中出錯,可能有多種原因,Cloud IDE 會將合約調用失敗的錯誤碼資訊返回,便於您分析原因。Cloud IDE 使用的錯誤碼資訊與 SDK 使用的錯誤碼保持一致,您可以查看 合約鏈錯誤碼找到對應的錯誤碼說明。
下面通過一個錯誤碼樣本來說明如何通過錯誤說明的提示分析合約內部錯誤的原因,您也可以通過添加 Event 事件的方式來調試合約。
錯誤碼樣本:
在上圖的錯誤碼樣本中,系統調用了 Cloud IDE 樣本合約的 voteForCandidate 方法,給定的候選人為Demi,返回的錯誤碼為10201,其含義為:
錯誤碼 | 錯誤碼值 | 描述 |
VM_REVERT | 10201 | 觸發 revert 指令導致的錯誤 |
根據錯誤碼提示,可以判斷調用合約失敗是因為觸發了 revert 語句,含義為某個 require() 方法判斷失敗。查看合約代碼,即可發現 voteForCandidate 方法中的相關條件檢查:
require(validCandidate(candidate));由此,可推斷出輸入的候選人 Demi 不合法,並不在實際投票的候選人列表 candidateList 中。事實也確實如此,合約部署過程中,constructor 參數僅指定了 Nick 和 Rose 兩個候選人蔘與競選。
調試合約
目前,您可以通過添加 Event 事件觸發日誌的方式實現邏輯分支的判斷和分析,進而對合約內部邏輯進行調試。
這裡選擇調用合約方法 validCandidate。

// This function will help to check whether target candidate is in the candidateList.
function validCandidate(bytes32 candidate) view public returns (bool) {
for (uint i = 0; i < candidateList.length; i++) {
if (candidateList[i] == candidate) {
emit VALID(true);
return true;
}
}
emit VALID(false);
return false;
}在 validCandidate 方法的實現中,不同的執行邏輯會根據情況觸發不同的 Event 事件,通過查看調用結果日誌資訊,即可分析出合約的執行路徑。在以上樣本中,執行邏輯相對簡單。在複雜的邏輯控制方法中,通過添加 Event 事件的方式可以很好的追蹤合約執行路徑,達到調試合約的目的。


