蚂蚁区块链第5课 如何配置Cloud IDE证书并进行Solidity智能合约调试?

1, 摘要

本文假设读者已按照前面课程完成了标准合约链或者TEE隐私合约链的部署。本文主要讲解蚂蚁区块链的智能合约编译环境的使用。包括以下内容:
(1)蚂蚁区块链Cloud IDE 说明
(2)配置Cloud IDE证书
(3)Solidity智能合约编译/部署/运行

2,蚂蚁区块链Cloud IDE 说明

蚂蚁区块链Cloud IDE 合约开发环境(以下简称“IDE”)是 BaaS 合约平台提供的在线合约开发工具。此工具为智能合约开发提供简单、高效的集成环境,并提供以下核心功能:

  • 合约编辑与编译,展示编译结果字节码和接口说明(ABI)。
  • 合约的部署和调用;提供默认体验链环境和测试账户,用来部署和调用合约。
  • 解析合约方法的返回值、事件日志等,辅助调试合约;保存合约到 BaaS 合约管理。

Cloud IDE 暂不支持国密算法合约链。国密算法合约链仅供 蚂蚁区块链创新大赛 试用,尚未正式对外发布。

基本框架

IDE 是一个典型的去中心化应用(Dapp),可通过 JavaScript SDK 直接与区块链平台通信,进行合约部署和调用。这样设计的优势在于,通过 IDE 您可以连接任何目标的蚂蚁区块链平台环境,前提是您必须拥有目标环境签发的证书,因为 IDE 与区块链平台通过 HTTPs 进行通信。

3,配置Cloud IDE证书

3.1 证书文件说明

要与 BaaS 平台建立 HTTPs 连接,您需准备三个证书文件:CA 机构的根证书(ca.crt)、客户端的证书文件(client.crt)和客户端的私钥文件(client.key)。这三个文件的详细说明如下:

文件 说明 来源
ca.crt 合约平台的认证 CA 证书,客户端用来验证区块链平台服务。 从 BaaS 平台下载。
client.key RSA 密钥 使用 OpenSSL 工具生成。或者自动生成时下载得到
client.crt RSA 证书,与 client.key 是一对。 通过 client.key 生成证书请求文件,提交到 BaaS 平台申请证书,得到此证书文件。或者自动生成时下载得到。

3.2 生成MyPKCS12.p12个人证书文件

参考 OpenSSL 安装说明 配置 OpenSSL 工具。

使用 OpenSSL 工具将 client.crtclient.key 文件合并生成 MyPKCS12.p12 文件。

openssl pkcs12 -export -clcerts -inkey client.key -in client.crt -out MyPKCS12.p12 -name "Client1"

执行此命令的过程中,您需要输入一次 client.key 文件的解密密码(如果 client.key 文件是加密保存的),输入两次 MyPKCS12.p12 文件的使用密码,之后即可得到一个 MyPKCS12.p12 文件。

生成的“MyPKCS12.p12”文件备用:


听阿里孙善禄专家说,后面一个版本即将在自动生成密钥的选项时生成“MyPKCS12.p12”文件供用户下载。这样的话,就不需要在本地命令行组装了。

3.3 导入根证书文件

针对不同的操作系统,证书文件导入方式不同。辉哥根据自己的环境,只做WINDOWS环境的导入演练。针对苹果操作系统的参考官网说明。

3.3.1 下载根证书

https://baas.cloud.alipay.com/chain-manage/chain/union/lists?consortiumId=2105&tenantName=ZNAPCVKP下下载根证书


保存到本地目录备用。

3.3.2 导入根证书

通过 Chrome 浏览器打开 keychain 工具,选择 设置 > 高级 > 管理证书,然后在证书管理窗口中选择 受信任的根证书颁发机构 > 导入。

7.导入根证书
8.导入根证书1.png
9.导入根证书2.png
10.导入根证书3.png
11.完成根证书导入.png

点击告警确认后,导入根证书就成功了。

12.导入告警-成功.png

3.3.3 导入个人证书文件

在证书管理窗口中选择 个人 > 导入,然后选择 MyPKCS12.p12 文件,按引导完成导入。


13.导入个人证书1.png
14.导入个人证书-正确.png
15.个人证书导入生成私钥密码.png
16.证书导入存储目录.png
17.正在完成证书导入向导.png
18.个人证书导入成功.png

【提醒:】重启浏览器。在导入相关证书文件之后,需要重新启动 Chrome 浏览器,然后才能继续使用 Cloud IDE。

常见错误:导入client.crt误认为是个人证书
14.导入个人证书2-选择CRT(错误).png

导入结束后在个人证书列表中没有导入的该证书显示的。要参考“ 3.2 生成MyPKCS12.p12个人证书文件”完成证书生成。

4,Solidity智能合约编译/部署/运行

4.1 编译

(1)点击“创建合约”按钮进入蚂蚁区块链CLoud IDE环境。
1.合约入口

IDE环境自动为用户生成了一个投票类的默认合约,供用户测试使用。

(2)点击“编译”按钮,完成智能合约编译。
2. 智能合约界面

选择前面章节导入的个人证书:

19.编译时选择证书

如果编译成功,则会有编译结果(成功或者告警信息),右边会生成合约的ABI信息和字节码流。


3.编译成功
  • 字节码
    字节码即合约代码的编译结果,也是合约部署时使用的关键数据,通过 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 介绍(英文)

默认环境说明和典型错误告警

环境配置按钮对应的是账号和私钥的配置说明,系统已经提供了默认值。

04.默认环境配置

其中的私钥并不是环境创建时下载的,这个私钥需要界面user.key之后解密user.key之后获取的16进制私钥。

辉哥手贱,没有理解清楚就用自己创建的账户配置了用户名和私钥(直接从user.key复制)

4.环境配置

这样会在编译环节有报错的。

5.部署合约,输入私钥不正确.png

"TEE加密配置"暂时不使用吧,其他文章再做详解。

4.2 部署

在合约编译通过,得到字节码和 ABI 后,在 Cloud IDE 中点击 部署合约 将合约部署到目标体验链进行测试。

20.部署成功.png

在部署定义了 constructor 方法的合约时,需要给定 constructor 方法的参数。Cloud IDE 支持合约方法参数类型的提示和一些基本数据类型的初始化赋值,辉哥使用了“alice”,“bob”,“duncan”这3个人名作为候选人。

部署合约

部署成功后,可以看到合约的所有方法列表。

20.部署成功.png

合约ID:0xcd5588db6fc6fb44dd76b006202f9efa2ba5d715272a1ae06fb3c805e6a25289
TX Hash:0x9c89f5f9d601fa394ed9bf6496c687f75557553deaa2343e7939f81b2333e107

4.3 运行合约(调用合约)

合约部署成功后,IDE 会列出合约中所有的 public 方法以及 public 类型的状态变量。点击目标方法右侧的 调用合约 进行调用。

其中,状态变量对应的调用可以直接返回当前状态变量的值。合约方法的调用可以返回如下几个字段:
参数 说明
input: 合约方法的输入数据,通常为合约方法的参数。
output: 合约方法的返回值,可能是多个值,根据返回值具体类型转码显示。
log:如果在合约中使用了 Event 事件,并且事件被触发,则会在 log 中展示。

举例来说,点击voteForCandidate函数的“调用合约”按钮,

21. 运行合约-投票给duncan

运行成功后,就可以看到结果为true,产生了HASH值。


22.运行合约-投票成功

记录交易hash值:0x11b2d34793ce280ebfb47de8080889605e48bd6d6e1bf5f2d2d525ce674355f4

此时查询查询投票次数函数 totalVotes,发现其结果为1了。


23. 运行合约-查询投票次数

4.4 浏览器查询交易结果

把上面获得的HASH值在区块链浏览器https://baas.cloud.alipay.com/chain/detail?bizid=ca545a5c&&tenantName=ZNAPCVKP上查询,都可以查的到执行记录。

24.浏览器查询交易记录

你也可以把以下信息输入到TEE硬件隐私合约链浏览器查询结果吧。

(1)合约创建信息

合约ID:0xcd5588db6fc6fb44dd76b006202f9efa2ba5d715272a1ae06fb3c805e6a25289
TX Hash:0x9c89f5f9d601fa394ed9bf6496c687f75557553deaa2343e7939f81b2333e107

(2)投票函数voteForCandidate - duncan

TX Hash:0x11b2d34793ce280ebfb47de8080889605e48bd6d6e1bf5f2d2d525ce674355f4

(3) 查询投票次数 totalVotes

TX Hash:0x1cd5da92a51b5ba686e348ca83bb799f97c4178286c7250c971292cd36a838d4

5,参考

(1)TEE合约联盟链浏览器
https://baas.cloud.alipay.com/chain/detail?bizid=ca545a5c&&tenantName=ZNAPCVKP
(2)配置 Cloud IDE 证书https://tech.antfin.com/docs/2/101796#Windows%20%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容