WaykiBridge

简介

WaykiBridge是维基链开发团队推出的DAPP开发钱包接口工具, 开发者可以在开发DAPP时集成WaykiBridge,即只需一套前端代码(H5)即可同时调用 WaykiMax 钱包和维基时代APP钱包进行签名和广播WaykiChain交易,从而用户可以在浏览器维基时代APP应用中心中同时使用DAPP。

工具下载

Web钱包插件 WaykiMax 下载

维基时代APP 开发者版本(Testnet)下载

请使用手机浏览器通过以下链接进行下载

IOS: https://www.pgyer.com/qjj9?sign=&auSign=&code= 密码: 1234

安卓: https://wicc-dev-mix.oss-cn-shenzhen.aliyuncs.com/%E7%BB%B4%E5%9F%BA%E6%97%B6%E4%BB%A3/dev/WaykiTimes_dev_testnet.apk

维基时代APP 主网版本(Mainnet)下载

https://www.waykichain.com/WaykiTimes.html

开发者如何使用维基时代APP添加测试链接

1、【打开维基时代】-> 【我的】->【设置】->【打开开发者模式】

2、【打开维基时代】-> 【应用】->【如下图操作】

WaykiBridge 调用示例

示例链接: https://waykibridge-testpage.wiccdev.org/

源码: https://gitlab.com/waykichain-public/wicc-dapps/wicc-appcenter-test#

WaykiBridge API说明

准备工作

引入如下js

<script src="https://sw91.net/devops/js/waykiBridge.js"></script>

Note: 引入文件后若是需要在页面加载时即调用接口请做延时处理:

(setTimeout(() => this.getAddressInfo(), 100);)


调用格式

waykiBridge.walletPlugin(接口名,接口参数,成功回调,失败回调)

waykiBridge.walletPlugin(name,query,function(res){},function(err){})

注1: query内属性均为string, 数组除外

注2: 入参金额单位为 sawi


API错误码说明

errorCode (Int) errorMsg (String) 含义
0 \ 操作成功
1000 Please install WaykiMax first. 没有安装钱包
2000 Please create or import wallet first. 没有创建或者导入钱包
7000 User denied transaction signature. 用户拒绝签名请求

注: 开发者只需根据 errorCode进行状态判断,errorMsg 只用于状态信息提示。


getAddressInfo(获取用户信息)

query参数

{} //无参数请传空对象

example

    waykiBridge.walletPlugin(
        "getAddressInfo",
        {},
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
    );

成功回调

{ 
    "result": {  
        "address": "WPqY8RJHN1u4Kzrnj2mHG9V8igJJVVcveb", //钱包地址,可根据地址开头'W':主网、'w':测试网 来判断网络类型
        "regid": "0-1"  //账户对应的regid,不存在时为空
    }, 
    "errorCode": 0 
}   

walletPluginUCoinTransfer(多币种转账)

query参数

{ 
   "destArr":[ 
    {
        "amount": "100000000",    //转账金额,类型:String, 单位:`sawi`
        "coinSymbol": "WICC",     //币种类型, 支持但不仅限于 WICC WUSD WGRT 
        "destAddr":"wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq" //收款地址
    }
],
    "memo":"test transfer"    //备注信息,上链
}

example

waykiBridge.walletPlugin(
        "walletPluginUCoinTransfer",
        {
            "destArr":[ 
                {
                "amount": "100000000", 
                "coinSymbol": "WICC",     
                "destAddr":"wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq" 
                }
            ],
            “memo”:”test transfer”    
        },
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
);

成功回调

{ 
    "result": {  
        "txid":"029c86a648030e2b28ccc64c5ed60c96a0c61de95a30cab82159a476ceeeaf3d"
      }, 
    "errorCode": 0  
}

walletPluginUContractInvoke(多币种合约调用)

query参数

{ 
      "amount": "100000000",    //调用合约时转入合约的金额,类型:String, 单位:`sawi`
      "coinSymbol": "WICC",     //币种类型,支持但不仅限于 WICC WUSD 
      "regId": "0-1",           //合约 regid
      "contract": "f001",       //合约字段
      "memo":"test transfer"    //备注, 不上链
}

example

waykiBridge.walletPlugin(
        "walletPluginUContractInvoke",
        {
          "amount": "100000000", 
          "coinSymbol": "WICC",    
         "regId": "0-1", 
         "contract": "f001", 
         "memo":"test transfer"    
        },
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
);

成功回调

{ 
    "result": {  
        "txid":"029c86a648030e2b28ccc64c5ed60c96a0c61de95a30cab82159a476ceeeaf3d"
      }, 
    "errorCode": 0  
}

walletPluginContractIssue(合约发布)

query参数

{
    "contractContent": "", //合约内容
    "contractDesc": ""     //合约描述
}

example

    waykiBridge.walletPlugin(
        "walletPluginContractIssue",
        {
          contractContent: 'mylib = require "mylib"',
          contractDesc: "描述",
        },
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
    );

成功回调

{ 
    "result": {  
        "txid":"029c86a648030e2b28ccc64c5ed60c96a0c61de95a30cab82159a476ceeeaf3d"
      }, 
    "errorCode": 0  
}

walletPluginAssetIssue (发行WRC30代币资产)

需要支付 550 WICC作为发行费用

query参数

{
   "assetSymbol": "ABCDEFG", //资产符号 6~7个[A-Z]字符
   "assetName": "STOKEN", //资产名称  1~32个随意字符
   "assetSupply": "100000000000", //资产发行量,最大:900*10^8*10^8 单位`sawi`
   "assetOwnerId": "wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq", //资产拥有者地址
   "assetMintable": false //资产是否可以增发 `true`或 `false`
}

example

waykiBridge.walletPlugin(
        "walletPluginAssetIssue",
        {
      "assetSymbol": "ABCDEFG", //资产符号
      "assetName": "STOKEN", //资产名称
      "assetSupply": "100000000000", //资产发行量
      "assetOwnerId": "wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq", //资产拥有者地址
       "assetMintable": false //资产是否可以增发
    },
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
);

成功回调

{ 
    "result": {  
        "txid":"029c86a648030e2b28ccc64c5ed60c96a0c61de95a30cab82159a476ceeeaf3d"
      }, 
    "errorCode": 0  
}

walletPluginAssetUpdate(更新WRC30代币资产、暂未启用)

只允许更新资产的拥有者、资产名称、资产增发量,每次需要支付 110 WICC作为更新费用

query参数

{
    "assetSymbol": "ABCDEFG", //需要更新的资产符号
    "updateType": "1", //更新类型 "1":资产拥有者、 "2":资产名称、"3": 资产增发量
    "updateValue": "wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq"  //资产增发量最小为 100000000,单位为`sawi`
}

example

waykiBridge.walletPlugin(
     "walletPluginAssetUpdate",
        {
            "assetSymbol": "STOKEN", //资产符号
            "updateType": "1"
            "updateValue": "wbZTWpEnbYoYsedMm2knnP4q7KiSdS3yVq", //资产拥有者地址
         },
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
);

成功回调

{ 
    "result": {  
        "txid":"029c86a648030e2b28ccc64c5ed60c96a0c61de95a30cab82159a476ceeeaf3d"
      }, 
    "errorCode": 0  
}

signMessage(授权信息签名)

主要用于DAPP用户的账户登录

query参数

{
   "dappLogo": "http://b-ssl.duitang.com/uploads/item/201208/30/20120830173930_PBfJE.jpeg", // DAPP logo
   "dappName": "DAPP",// DAPP 名称
   "message": "msg"  // 需要签名的消息
}

example

waykiBridge.walletPlugin(
        "signMessage",
{
  "dappLogo": "http://b-ssl.duitang.com/uploads/item/201208/30/20120830173930_PBfJE.jpeg", 
  "dappName": "DAPP", 
  "message": "msg"  
},
        function(res) {
            console.log(res)
        },
        function(err) {
            console.log(err)
        }
);

成功回调

{
    "result": { 
        "PublicKey": "038661f52c74cc51ea375081bdb6e7c342fe7803a260e0121b9e6b1b9463b5f25e", // 签名者公钥
        "SignMessage": "3045022100f0bf875def06ffa8365c8784887f57544720c41c141d1589d99b5c23a01e1a3f022056edae9595099c1aa4de03f618b21e78c1d6f7a0f21a83c535b8e2f5369deaa5"          // 签名后的消息
     }, 
    "errorCode": 0 
}

用户登录DAPP的大致流程图如下(仅供参考)