1_前端集成

Arbitrum适用的工具集能让以太坊web开发者的前后端集成无缝衔接。

Arbitrum节点支持以太坊 JSON-RPC API;因此,主流的与以太坊通信的以太坊库也都能用来和Arbitrum通信,几乎不需要任何修改。

对于以太坊/Arbitrum『桥接』功能,也就是L1以太坊链于L2Arbitrum链之间的通信功能(如充值或提款等),我们提供了自己的库。

Arbitrum集成

Ethers.js

Ether-js与Arbitrum链的通信是与在以太坊上完全一致的(见文档);只需要将其provider指向Arbitrum节点并初始化即可。

例如,通过已经通过自定义RPC URL连接到Arbitrum节点的Metamask:

  1. import * as ethers from 'ethers'
  2. const arbProvider = new ethers.providers.Web3Provider(window.ethereum)

或者通过Arbitrum节点URL直接初始化provider

  1. import * as ethers from 'ethers'
  2. const arbProvider = new ethers.providers.JsonRpcProvider(
  3. 'http://ArbNodeUrl.com'
  4. )

Web3.js

相似地,Web3 provider也可以直接通过Arbitrum节点url初始化: https://web3js.readthedocs.io/en/v1.2.11/index.html

  1. import * as Web3 from 'web3'
  2. var arbWeb3Provider = new Web3('http://ArbNodeUrl.com')

以太坊/Arbitrum桥接

可以通过arb-ts库中的方法实现桥接,或者也可以直接连接至相关的合约。

  1. arb-ts 安装:
    1. yarn add arb-ts ethers-js

使用(Ethers-js wallets/providers):

  1. import { providers, Wallet } from 'ethers'
  2. import { Bridge } from 'arb-ts'
  3. const l1Provider = new providers.JsonRpcProvider('http://EthNodeUrl.com')
  4. const l2Provider = new providers.JsonRpcProvider('http://ArbNodeUrl.com')
  5. const l1Signer = new Wallet('0xmyprivatekey!!', l1Provider)
  6. const l2Signer = new Wallet('0xmyprivatekey!!', l2Provider)
  7. const bridge = new Bridge(
  8. '0xL1EthErc20BridgeAddress',
  9. '0xl2ArbTokenBridgeAddress',
  10. l1Signer,
  11. l2Signer
  12. )

请参考library文档tests用例。 (请注意,老的arb-provider-ethers已经过期;推荐使用arb-ts)

  1. 替代方法:直接实例化合约 上述所有所有合约的模板链接口都在arb-ts中有,例如 ``` import { ArbSys__factory } from ‘arb-ts’

const arbSys = ArbSys__factory.connect(ARB_SYS_ADDRESS, l2Signer)

arbSys.withdrawEth(‘0xmyaddress’) ```

1_洞悉Arbitrum2_合约部署