螞蟻開放聯盟鏈搭建和使用方法
1準備工作
1.1訪問螞蟻開放聯盟鏈,並使用支付寶賬號登錄
https://auth.cloud.alipay.com/#/cloudauth/login?goto=https:%2F%2Fopenchain.cloud.alipay.com%2F
1.2申請AccessKey和access-id
生成相應的文件access.key文件作爲私鑰,必須妥善保管
生成access-id: dQ5yMLO1OEBECIRY
****在 導航欄-證書及開發組件 中可查詢
1.3選擇開發語言(以GO語言爲例)
1.3.1創建鏈上用戶
輸入賬戶名稱:mikepony0820
生成租戶KmsKeyId:ma69jcz6OEBECIRY1592531431813
1.3.2給賬號分配“燃料”,在 導航欄-燃料管理 中可查詢
初始系統會贈送10,000,000汽油費,將十分之一分配給鏈上賬戶
2.GO工程Demo下載與配置
2.1下載GoSDK,文件保存爲restclient-go-sdk.zip
https://baas-market-repo-prod.oss-cn-shanghai.aliyuncs.com/openchain/restclient-go-sdk.zip
2.2配置sdk環境
將壓縮文件拷貝至$GOPATH/src/gitlab.alipay-inc.com/antchain文件夾下(如果沒有需要自己創建對應文件夾路徑),解壓restclient-go-sdk.zip
2.3下載GO Demo工程
https://baas-market-repo-prod.oss-cn-shanghai.aliyuncs.com/openchain/GoProject.zip
2.4GO Demo工程配置文件
2.4.1 將1.2中生成的access.key替換項目中access.key
2.4.2配置rest-config.json文件
{
"RestUrl": "https://rest.baas.alipay.com",
"AccessId": "dQ5yMLO1OEBECIRY",//採用1.2中生成的access-id
"AccessSecret": "./access.key",//使用私鑰的路徑,建議使用相對路徑
"MaxIdleConns": 10,
"IdleConnTimeout": 30,
"RetryMaxAttempts": 5,//合約調用時錯誤的重試次數
"BackOffPeriod": 1000
}
2.4.3配置demo.go中的全局變量
全局變量 | 全局變量意義 | 值的來源 |
---|---|---|
RestBizTestBizID | 鏈ID | 見智能合約3.3.1中的選擇鏈id |
RestBizTestAccount | 賬戶名 | 1.3.1賬戶名稱 |
RestBizTestKmsID | 賬戶id | 1.3.1生成租戶KmsKeyId |
RestBizTestTenantID | 租約ID | https://admin.cloud.alipay.com/?tenantName=OEBECIRY#/accountsinfo? 租戶信息-租戶id |
DeployBit | 部署合約內容 | 見智能合約3.3.2中字節碼 |
3.智能合約相關開發
3.1合約創建
創建合約工程後填寫“合約工程名”和“合約類型”(這裏選擇Solidity),並選擇空工程
3.2編寫合約,這裏使用已經編寫完成的合約做測試
pragma solidity >0.4.20 <0.5.0;
contract SimpleStorage{
uint64 myData;
function setData(uint64 newData) public{
myData = newData;
}
function getData() public view returns(uint64){
return myData;
}
function pureAdd(uint64 a,uint64 b)public pure returns(uint64,uint64){
return (a+b,a);
}
}
3.3選擇開放鏈並編譯
3.3.1選擇默認開放鏈
3.3.2編譯並記錄相應的字節碼
字節碼代替了智能合約的所有信息用於後期部署和調用
4.GO工程運行
demo中提供了5個功能https://tech.antfin.com/docs/2/160376#h3-u67E5u8BE2u56DEu6267
功能名 | 功能作用 |
---|---|
TestDeposit | 異步存證 |
TestDepositSyncWithTransaction | 同步存證 |
TestQueryTransaction | 查詢交易 |
TestQueryReceipt | 回執查詢 |
TestDeployContractAndCallContract | 部署和調用合約 |
4.1重點討論部署和調用合約幾個坑:
-
contractname必須保持唯一性,與已部署在開放鏈上的contractname可使用uuid配置對應名稱
-
orderid部署和調用時必須保持不一致
-
調用函數restclient.CallContract(…,methodSignature,inputparamlist,outTypes,…)
- methodSignature必須保持和3.2.1中智能合約的函數名稱一致例如:“pureAdd(uint64,uint64)”
- inputparamlist必須採用json列表的方式輸入,並且輸入必須爲string類型,json對象得輸入會造成500錯誤
- outTypes必須和3.2.1中智能合約返回值一致,例如:
5.補充
5.1在部署成功之後系統會反饋交易hash,可以利用支付寶app或者網站查詢相關情況,體現了區塊鏈得溯源性