美文网首页HiBlock区块链社区区块链入门
蚂蚁区块链第5课 如何配置Cloud IDE证书并进行Solid

蚂蚁区块链第5课 如何配置Cloud IDE证书并进行Solid

作者: 笔名辉哥 | 来源:发表于2019-03-27 14:35 被阅读5次

    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

    相关文章

      网友评论

        本文标题:蚂蚁区块链第5课 如何配置Cloud IDE证书并进行Solid

        本文链接:https://www.haomeiwen.com/subject/bwkzvqtx.html