1.3.99 • Published 1 year ago

walletconnect-sdk v1.3.99

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

至信链socket-sdk

安装

npm i walletconnect-sdk
npm i @tencent/walletconnect-sdk

使用方式

import {ZXChainWalletConnect,ZXChainUtils} from 'walletconnect-sdk';

ZXChainUtils:工具类方法

客户端

// 创建连接实例
const connector = new ZXChainWalletConnect({
  bridge: "go websocket 服务地址"
  clientMeta?:{...}
  storageId?:string;
});
// 判断连接状态
if (!connector.connected) {
  // 创建连接
  connector.createSession({"chainId":0}?:{"chainId":number});
  // 或
  connector.createSession();
}

钱包app端

const connector = new ZXChainWalletConnect({
    uri: '扫码得到 客户端生成的地址。组成:protocol:handshakeTopic@version?bridge=bridge&key=key', 
    clientMeta?:{...}
    session?:{...}
    storageId?:string;
});


clientMeta:{
  description: string;
  url: string;
  icons: string[];
  name: string;
}
session:{
  connected: boolean;
  accounts: string[];
  bridge: string;
  key: string;
  clientId: string;
  clientMeta: IClientMeta | null;
  peerId: string;
  peerMeta: IClientMeta | null;
  handshakeId: number;
  handshakeTopic: string;
  chainId:string;
}

当session存在,uri和clientMeta字段没用,优先读取session数据进行连接。

同意连接

connector.approveSession({
    accounts:[]; // 连接账户地址信息
    chainId:"0"
})

拒绝连接

connector.rejectSession(rejectMessage?:any)

或

connector.rejectSession();

更新会话连接

connector.updateSeesion({
    accounts:[], // 连接账户地址信息
    chainId:"0"
})

断开连接

connector.killSession(rejectMessage?:any)

或

connector.killSession();

发送自定义连接

connector.sendCustomRequest({ 
    method: string; 
    params: any[] 
}).then(data=>{
    //promise.then接受同意请求
}).catch(error=>{
    // 拒绝请求的内容。
})

同意请求

connector.approveRequest({
    id: number;
    result: any
})。

拒绝请求

connector.rejectRequest({
    id: number;
    result?: any
})。

签名信息

connector.signMessage({
    rawData:''
})

methods:zxc_sign

或

connector.sendCustomRequest({ 
    method: 'zxc_sign'; 
    params: {
        rawData:''
    }
})

验签

connector.verifySign({
  signed:string
  rawData:string
})

methods:zx_verifySign

或

connector.sendCustomRequest({ 
    method: 'zx_verifySign'; 
    params: {
      signed:string
      rawData:string
    }
})

查询合约

connector.queryContract({
  contractName: string;
  method: string;
  kvs: [
    {
      key: string;
      value: string | number | boolean;
    }
  ];
})

methods: zx_queryContract

或

connector.sendCustomRequest({ 
    method: 'zx_queryContract',
    params: {
      contractName: string;
      method: string;
      kvs: [
        {
          key: string;
          value: string | number | boolean;
        }
      ];
    }
})

部署合约

connector.deployContract({
  contractName: string;
  contractVersion: string;
  contractBytes: string | Uint8Array;
  runtimeType: string;
  kvs: [{
      key: string,
      value: string | number | boolean;
  }];
  limit: number;
})

methods: zx_deployContract

或

connector.sendCustomRequest({ 
    method: 'zx_deployContract',
    params: {
      contractName: string;
      contractVersion: string;
      contractBytes: string | Uint8Array;
      runtimeType: string;
      kvs: [{
          key: string,
          value: string | number | boolean;
      }];
      limit: number;
    }
})

调用合约

connector.invokeContract({
  contractName: string;
  method: string;
  kvs: [{
    key: string,
    value: string | number | boolean;
  }];
  limit: number;
})

methods: zx_invokeContract

或

connector.sendCustomRequest({ 
    method: 'zx_invokeContract'; 
    params: {
      contractName: string;
      method: string;
      kvs: [{
        key: string,
        value: string | number | boolean;
      }];
      limit: number;
    }
})

消息订阅

connector.subscribe({...},()=>{...})
connector.subscribe(params,callback).then((id)=>{})

methods: subscribe

或

connector.sendCustomRequest({ 
    method: 'subscribe'; 
    params: {...}
},callback)

根据订阅id执行订阅callback

connector.execSubCallbackById(id: number, result?: any)

取消消息订阅

connector.unsubscribe(id)

methods: unsubscribe

或

connector.sendCustomRequest({ 
    method: 'unsubscribe'; 
    params: id
},callback)

发起交易

connector.sendTransaction({
    ....
})

methods: zxc_send_transaction

或

connector.sendCustomRequest({ 
    method: 'zx_sendTransaction'; 
    params: {...}
})

保存凭证

connector.saveCredential({
    credential: ''
})

methods:zxc_save_credential

或

connector.sendCustomRequest({ 
    method: 'zxc_save_credential'; 
    params: {
        credential: ''
    }
})

获取凭证

connector.queryCredentials()

methods:zx_getCredentials

或

connector.sendCustomRequest({ 
    method: 'zx_getCredentials'; 
    params: null
})

获取公钥

connector.getPublicKey()

methods:zx_getPublicKey

或

connector.sendCustomRequest({ 
    method: 'zx_getPublicKey'; 
    params: null
})

监听数据

connector.on(eventName, (error,payload)=>{
    // error错误信息
    //payload返回信息
})

取消监听

connector.off(eventName)

事件

connect 连接成功后触发的事件

payload返回信息:

{
    "event": "connect",
    "params": [{
        "peerId": "b2a3a33e-6ae0-4b0f-997a-d07dec5c0770",
        "peerMeta": {
            "description": "描述",
            "url": "http://127.0.0.1:9999",
            "icons": [],
            "name": "Socket Demo"
        },
        "accounts": ["0x2608299b6E1d42f43390e685deDeb57B556E579B"],
        "chainId":0
    }]
}

peerId/peerMeta:对方的信息
account:连接的账户信息

disconnect 拒绝连接触发的事件

payload返回信息:

{
    "event": "disconnect",
    "params": "拒绝了~~~~~"
}

params:拒绝的信息

session_request 收到对方发的创建链接的请求。

payload返回信息:

{
    "id": 1653563439192359,
    "method": "session_request",
    "params": [{
        "peerId": "a7c32bf6-57c8-4d67-920e-475a3eaad963",
        "peerMeta": {
            "description": "",
            "url": "http://127.0.0.1:9999",
            "icons": [],
            "name": "Socket Demo"
        },
        "chainId":0
    }]
}

session_update 连接更新触发

payload返回信息:

{
    "event": "session_update",
    "params": [{
        "accounts": ["0x2608299b6E1d42f43390e685deDeb57B556E579B-shan"],
        "chainId":0
    }]
}

modal_closed 弹窗关闭

payload返回信息:

{
    "event": "modal_closed",
    "params": [{
        "code": "<svg>....</svg>"
    }]
}

触发条件:
 - 浏览器端:无返回值。(页面可直接创建fragment展示二维码)
 - uniapp/node:返回二维码svg标签。标签可直接展示渲染成二维码。

custom_request 监听自定义请求

payload返回信息:

{
    "id": 1337,
    "method": "shanCustom",
    "params": [{
        "from": "0xbc28Ea04101F03aA7a94C1379bc3AB32E65e62d3",
        "to": "0x89D24A7b4cCB1b6fAA2625Fe562bDd9A23260359",
        "data": "0x",
        "gasPrice": "0x02540be400",
        "gas": "0x9c40",
        "value": "0x00",
        "nonce": "0x0114"
    }]
}


监听同意请求发送的消息:
connector.approveRequest({
    "id":payload.id, // 监听返回的。上面的1337
    "result":"我同意了"
})

发送的自定义请求数据为:
const customRequest = {
  id: 1337,
  method: 'custom',
  params: [
    {
      from: '0xbc28Ea04101F03aA7a94C1379bc3AB32E65e62d3',
      to: '0x89D24A7b4cCB1b6fAA2625Fe562bDd9A23260359',
      data: '0x',
      gasPrice: '0x02540be400',
      gas: '0x9c40',
      value: '0x00',
      nonce: '0x0114',
    },
  ],
};

connector
  .sendCustomRequest(customRequest)
  .then((result) => {
    // Returns request result
    {
        "id":1337,
        "result":"我同意了"
    }
  })
  .catch((error) => {
    // Error returned when rejected
});

工具类方法

解析uri

调用方式:
ZXChainUtils.parseUrl(uri:string);

参数:uri地址,必填

返回值:
protocol, handshakeTopic, bridge, key,version

打包

  • npm run build
1.3.99

1 year ago

1.3.98

2 years ago

1.3.97

2 years ago

1.3.96

2 years ago

1.3.95

2 years ago

1.3.94

2 years ago

1.3.93

2 years ago

1.3.92

2 years ago

1.3.91

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.9

2 years ago

1.2.7

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.2.0

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago