donut-ide
v0.0.22
Published
提供基于蚂蚁区块链“智能合约”的开发、测试和发布管理等基本功能,同时输出区块链服务的能力,进而高效实现一个DApp。
Downloads
20
Readme
1. 简介
为了支持区块链应用的高效开发,测试和发布,蚂蚁区块链提供了结合支付宝小程序IDE集成开发合约的插件,同时插件可以在小程序中输出区块链服务能力,建立小程序和区块链服务之间的“桥梁”,实现区块链服务在小程序场景内的应用。
问题咨询
1.1 核心功能介绍
插件核心提供的功能如下:
- 配置简单:开发者只需要配置ak和sk,通过登录金融科技获取ak/sk,无需配置证书、无需创建合约链账户。
- 自动生成合约工程目录:插件可根据简单配置选项自动生成合约工程目录和合约样例代码,同时生成访问区块链服务的相关代码。
- 支持合约开发和测试:编译、部署和单元测试,同时在IDE中可以集成测试小程序调用合约,完成端到端的完整流程测试。
- 支持合约发布记录管理:查看已开发合约的发布记录,合约的字节码和abi信息,选中已发布合约加载到小程序前端代码中自动生成合约对象,直接调用合约方法。
- 小程序使用区块链相关服务:插件自动在工程中生成代码,实现在小程序中调用区块链服务,比如:直接调用使用“账户映射服务”为小程序用户创建区块链账户;插件将合约封装为
javascript
中合约对象,输出区块链智能合约能力,小程序端可以像调用本地对象方法一样调用区块链合约方法。此外,小程序还可以直接调用区块链“存证接口”进行存证。
1.2 获取插件
可以在支付宝小程序IDE的插件市场获取并安装插件:
2. 插件工作原理
小程序IDE插件是在“小程序”端和“区块链服务”之间建立连接的“桥梁”,实现区块链服务在小程序中应用。
3. 环境准备
在小程序中使用区块链服务,需要至少有一条蚂蚁区块链的访问权限,可登录蚂蚁区块链BaaS申请购买专属合约链,在实验测试阶段可以使用蚂蚁区块链BaaS提供的公共“合约体验链”。
登录金融科技获取开发需要的ak和sk,在使用插件时根据提示填入配置。注意:此ak和sk,将被配置到插件生成的小程序代码中,请根据实际情况的安全性要求进行调整(比如:使用“云函数”等应用服务管理ak和sk进而访问区块链服务)。
4. 合约开发
插件在使用过程中,可按照提供的功能标签顺序使用:
- 信息:创建合约工程,开发合约;
- 编译:编译合约;
- 部署更新:选择目标合约链环境(默认提供:合约体验链),编写部署脚本,部署并发布合约,或更新升级合约;
- 测试:编写单元测试用例,一键执行测试合约功能;
- 其中第1步,生成的合约工程目录结构如下:
其中第2步,编译合约的结果保存在
blockchain/contracts
目录下,每个json文件中都包含了对应合约编译的结果字节码和abi等详情。其中第3步,需要编写一个脚本来说明多合约部署的先后部署顺序、依赖关系等,样例部署脚本如下:
module.exports = function(client, contractMap, done) {
const Demo = contractMap.Demo
// 合约部署到生产环境
client.deploy('name'+Date.now(), Demo).then((data) => {
client.log('Demo success')
done()
}).catch((err) => {
client.log('Demo error')
client.errorLog(err)
done()
})
};
如果合约部署时,需要执行constructor
初始化方法,并且需要传递参数,则可以直接通过deploy
方法传递参数:['param1', 'param2', 'param3']
:
module.exports = function(client, contractMap, done) {
const Demo = contractMap.Demo
// 合约部署到生产环境
client.deploy('name'+Date.now(), Demo, ['param1', 'param2', 'param3']).then((data) => {
client.log('Demo success')
done()
}).catch((err) => {
client.log('Demo error')
client.errorLog(err)
done()
})
};
- 其中第4步骤中,编写单元测试,可以通过在
blockchain/test
目录中编写单元测试用例,插件主要提供了Mocha测试框架能力。
5. 合约发布记录
插件也可以查看合约的发布记录情况,同时发布记录与在线工具Cloud IDE的发布记录保持同步,在Cloud IDE发布的合约记录,在这里同样可以展示。
同时发布记录提供发布合约的字节码(bytecode)和接口说明(abi)的详细信息,方便使用。
6. 小程序中调用合约
6.1 准备工作
1.在小程序开发者中心添加服务器域名白名单,将网关域名prodapigw.cloud.alipay.com
加入白名单。
2.注意:如果提示域名添加失败,请在区块链BAAS中提交工单开通权限。
3.开通完成,添加服务器域名白名单,填写域名申请,选择对外服务系统
和不在一个集群
,其余根据自己的业务进行填写,审批之后即可在小程序中调用合约。
6.2 调用合约
如下图,在代码中需要引入Blockchian
对象调用合约,contractName
为用户发布的合约名称,get
为合约中的方法名称,如需给合约传递参数,则在第三个参数中传入数组[合约参数1, 合约参数2, ...]
。