维基链开发(7)--web插件钱包WaykiMax功能、API介绍
维基链提供web钱包插件WaykiMax
WaykiMax
类似ETH
中的MetaMask
和EOS
中的Scatter
钱包插件,提供基本的钱包功能。
由于插件钱包本身有缓存私钥的功能,可对外Web应用提供签名接口。
1.安装方法
本文只介绍Chrome
浏览器的安装方法,如需要安装Firefox(火狐)浏览器
,可参考官方文档
1.1 下载 “WaykiMax-v0.1.0.zip” 文件到本地并在本地解压缩
1.2 下载Chrome浏览器,安装维基链Web钱包插件(中文对应:更多工具->拓展程序)
1.3 点开开发者模式,并导入该文件(中文对应:加载已解压的拓展程序)
1.4 导入后,安装该插件成功
2. 维基链Web钱包插件 WaykiMax API
Wallet会为每个网站的站点注入一个全局变量:WiccWallet
,目前提供 getDefaultAccount
、 callContract
、publishContract
、publishContract
。
2.1 getDefaultAccount
取得当前默认的账户,使用方法如下:
WiccWallet.getDefaultAccount().then((account) => {
console.log(account)
}, (error) => {
console.log(error)
})
如果钱包已经解锁,并且创建过账户,则会返回类似下面的结果:
{
"account": {
"address": "WTTqpSPZ9JHQJAPsmJQb1kXcMz5HvRWJLv",
"id": "eddd9578-8264-4f62-b215-da22a455152b",
"testnetAddress": "wQREsAsRAV1j133FHK4M5XQPPG3n4W23P1"
},
"network": "testnet",
"address": "wQREsAsRAV1j133FHK4M5XQPPG3n4W23P1"
}
network 为当前网络,address 为当前地址。如果需要获取正式环境的地址,使用 account.address;如果需要获取测试环境地址,使用 account.testnetAddress 。
2.2 callContract
打开调用合约窗口,目前支持四个参数:regId
contract
value
callback
。
方法定义为WiccWallet.callContract(regId, contract, value, callback)
,使用方式为:
WiccWallet.callContract('13103-1', 'f0', 0, (error, data) => console.log(error, data)).then(() => {
}, (error) => {
console.log(error)
})
如果钱包没有解锁,则调用此方法会报错。
对于 callback 参数,是用户在点击「确定」按钮之后的一个回调,第一个参数为 error,第二个参数为 data。如果 error 为 null,则可认为调用成功。 data 的数据结构类似下面这样(其中 txid 为这次交易的 hash):
{
amount: 0,
fee: 1000000,
contract: "f0",
txid: "55ec1c7abe38c492894a09f0c99e16d7c8d68608a2f1f6d334d0fd101b503e5b",
regId: "9109-1",
…
}
对于 value 参数,需要原始值乘以10的8次方。比如需要使用 0.1 WICC,则value
需要写 1000000。
2.3 publishContract
打开发布合约窗口,目前支持三个参数:script
scriptDesc
callback
。
WiccWallet.publishContract('mylib = require "mylib"', '33333', (error, data) => console.log(error, data)).then(() => {
}, (error) => {
console.log(error)
})
如果钱包没有解锁,则调用此方法会报错。
关于 callback,请参照 callContract 。
2.4 requestPay
打开调用转账窗口,目前支持四个参数:destAddress
value
desc
callback
。
WiccWallet.requestPay('wYXV7QzHZnb8LuWw7Xa24dfUTqmH2tNZBq', 0.01 * Math.pow(10, 8), 'desc', (error, data) => console.log(error, data)).then(() => {
}, (error) => {
console.log(error)
})
对于 value 参数,需要原始值乘以10的8次方。比如需要使用 0.1 WICC,则value
需要写 1000000。
如果钱包没有解锁,则调用此方法会报错。
关于 callback,请参照 callContract 。