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

本文介绍蚂蚁区块链CloudIDE的使用方法,涵盖环境配置、证书导入及智能合约的编译、部署与运行流程。通过实例演示,帮助开发者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.keyRSA 密钥使用 OpenSSL 工具生成。或者自动生成时下载得到
client.crtRSA 证书,与 client.key 是一对。通过 client.key 生成证书请求文件,提交到 BaaS 平台申请证书,得到此证书文件。或者自动生成时下载得到。

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

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

使用 OpenSSL 工具将 client.crt 和 client.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

参考资源接:[实战以太坊:从零开始的DApp开发之旅](https://wenku.youkuaiyun.com/doc/6vdwm9wxy4?utm_source=wenku_answer2doc_content) 在以太坊平台上开发一个区块链投票系统的智能合约涉及到Solidity编程语言以及Truffle框架的使用。首先,你需要编写一个Solidity智能合约,它应该包含以下基本功能:投票者注册、投票选项设置、投票执行、以及投票结果查询。 Solidity智能合约的关键部分可能包括: - 一个结构体来存储投票者信息和他们的投票选项。 - 一个数组来存储不同的投票选项。 - 一个事件来记录每次投票操作,便于追踪和验证。 - 函数来注册投票者、添加投票选项、执行投票以及查询结果。 例如,一个简单的合约可能包含以下代码片段(示例代码,此处略)。 编写完智能合约后,你需要使用Truffle框架来编译和部署合约。Truffle框架提供了一套完整的工具,用于自动化智能合约的编译、测试和部署流程。在部署之前,你需要编写一个迁移脚本,告诉Truffle如何部署你的合约到以太坊网络。 使用Truffle部署合约的步骤可能包括: - 设置一个Truffle项目,初始化配置文件。 - 配置`truffle-config.js`文件,添加用于部署的网络信息。 - 编写迁移脚本`migrations/2_deploy_contracts.js`,使用`deployer.deploy()`方法来部署合约。 - 执行`truffle migrate`命令,Truffle将自动编译合约,根据配置的网络部署到指定位置。 请注意,部署到主网络需要消耗实际的以太币作为燃料费用,因此在测试网络如Ropsten或Rinkeby上进行测试部署是推荐的做法,这些网络使用的是测试代币。 为了全面了解如何编写Solidity智能合约以及使用Truffle进行部署,强烈推荐《实战以太坊:从零开始的DApp开发之旅》这本书。它不仅包含智能合约的编写和部署,还涵盖了更多实际开发中的问题和解决方案,帮助你构建完整的区块链投票系统。 参考资源接:[实战以太坊:从零开始的DApp开发之旅](https://wenku.youkuaiyun.com/doc/6vdwm9wxy4?utm_source=wenku_answer2doc_content)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔名辉哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值