蚂蚁开放联盟链搭建和使用方法
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或者网站查询相关情况,体现了区块链得溯源性