VECHAIN Docs
Search
⌃K

Connex1 升级到 Connex2

Connex1 升级到 Connex2

Connex2 是一个独立的 npm package,让 DApp 与 Sync2 变得更加独立。 Connex2 随着 Sync2 的上线一同发布。

Connex1 与 2 区别概述

  • Connex1 是内置于 Sync1 中的。基于 Connex1 的 DApp 强依赖于Sync1,需要在Sync1 中运行。DApp 使用 Connex1 的签名服务,且网络环境依赖于 Sync1。
  • Connex2 是独立的开发包,需要 Dapp 直接引入使用,且自行初始化网络环境;Connex2 非必须在 Sync 中运行。

兼容模式

基于 Connex2 编写的 Dapp 可以在 Sync1 中运行,但有如下的注意事项:
  • 若 DApp 所期待的网络环境(例如初始化为连接主网的Dapp)与Sync1的环境不一致(例如 Sync1 运行于测试网),则 Sync1 环境失效,DApp会启动召唤 Sync2的流程;
  • 若 DApp 所期待的网络环境(例如初始化为连接主网的Dapp)与Sync1的环境一致,则 DApp 运行在兼容模式下(Compat Mode),大部分API都可正常使用;
  • 兼容模式下,Connex2 独有的 API 将不能启用。

Connex2 相关变动

安装 Connex2

  • 使用标签引入 Connex2
<!-- install the latest v2 -->
<script src="https://unpkg.com/@vechain/[email protected]" />
  • npm 安装
npm i @vechain/connex

创建 Connex

在 Sync1 中 connex 是内置于 window 上的且网络环境确定,但是 Connex2 是需要手动创建的并指定节点及网络。
// connex v2
import Connex from '@vechain/connex'
// Create a Connex object connects to VeChain mainnet
const connex = new Connex({
node: 'https://mainnet.veblocks.net/', // veblocks public node, use your own if needed
network: 'main' // defaults to mainnet, so it can be omitted here
})
// Connect to testnet
const connex = new Connex({
node: 'https://testnet.veblocks.net/',
network: 'test'
})
// Or connect to private network
const connex = new Connex({
node: '<the API url of your node>',
// the genesis block of your private network
network: {
id: '0x...',
...
}
})

创建 Thor.Filter

Connex2 Thor.Filter 创建方式变化
const type: 'event' | 'transfer'
const criteria: Connex.Thor.Criteria<T extends 'event' | 'transfer'>
// Connex v1
- const filter = new connex.thor.filter(type)
- filter.criteria(criteria).apply(offset, limit)
// Connex v2
+ const filter = new connex.thor.filter(type, criteria)
+ filter.apply(offset, limit)

创建 SigningService

Connex2 SigningService 创建方式变化
const txMsg: Vendor.TxMessage
const certMsg: Vendor.CertMessage
// Connex v1
- const txSigningSvc = new connex.vendor.sign('tx')
- const certSigningSvc = new connex.vendor.sign('cert')
// Connex v2
+ const txSigningSvc = new connex.vendor.sign('tx', txMsg)
+ const certSigningSvc = new connex.vendor.sign('cert', certMsg)

TX SigningService.delegate 参数变化

const txMsg: Vendor.TxMessage
// Connex1
- const txSigningSvc = new connex.vendor.sign('tx')
- txSigningSvc.delegate( async (unsigned): Promise<string> => {})
// Connex2
+ const txSigningSvc = new connex.vendor.sign('tx', txMsg)
+ txSigningSvc.delegate(url, signer?)

Connex2 新增的 api

新增 API 仅在非 Compat mode 时起效
更多
const address: string
const abi: Object
const kind: 'event' | 'transfer'
const criteria: Thor.Filter<T extends 'event' | 'transfer'>.Criteria<T>[]
const clauses: Thor.Clause[]
thor.account(address).method(abi).gasPayer(address)
thor.account(address).method(abi).transact(...args) // ...args => abi inputs
thor.account(address).event(abi).cache()
thor.filter(kind, criteria).cache()
thor.explain(clauses).cache()
thor.explain(clauses).gasPayer(address)
vendor.sign.accepted(callback)