Skip to content

Latest commit

 

History

History
86 lines (71 loc) · 2.39 KB

合约部署.md

File metadata and controls

86 lines (71 loc) · 2.39 KB

合约部署

Arbitrum支持标准的EVM合约部署。这意味着标准的Solidity合约能够使用既有的开发者工具就可部署在Arbitrum链上。

要部署合约,先将开发者工具指向Arbitrum链上。虽然这应该比较简单直接,我们还是为一些build系统提供了一些说明,后续还有更多。如果你使用的build系统没有列于此并对其配置有问题,请在Discord上向我们反馈。

Hardhat

要讲现有的hardhat配置直接移植,只需要在hardhat.config.ts中加入Arbitrum RPC url:

module.exports = {
  solidity: '0.7.3',
  networks: {
    arbitrum: {
      url: 'https://rinkeby.arbitrum.io/rpc',
      gasPrice: 0,
    },
  },
}

请参考宠物商店案例

Truffle

移植现有truffle配置:

  1. 首先在工程中添加arb-ethers-web3-bridge
	yarn add --dev arb-ethers-web3-bridge
  1. 编辑truffle-config.js中的内容:
  • arb-ethers-web3-bridge 中导入 wrapProvider,并在文件顶端设置mnemonic以及指向Arbitrum聚合器的节点。
const wrapProvider = require('arb-ethers-web3-bridge').wrapProvider
const HDWalletProvider = require('@truffle/hdwallet-provider')

const mnemonic =
  'jar deny prosper gasp flush glass core corn alarm treat leg smart'
const arbProviderUrl = 'http://localhost:8547/'
  • module.exports中添加arbitrum网络:
	module.exports = {
    arbitrum: {
      provider: function () {
          return new HDWalletProvider(mnemonic, arbProviderUrl)
        )
      },
      network_id: '*',
    },
  },
}

现在整个truffle工程已经设置完毕,运行migrate以部署合约:

truffle migrate --reset --network arbitrum

对于版本Truffle低于 0.5.x, 还需要一下操作:

  • 在truffle-config.js上从 arb-ethers-web3-bridge 导入 wraProvider

    const wrapProvider = require('arb-ethers-web3-bridge').wrapProvider
    
  • 返回 wrappedProver

    module.exports = {
      arbitrum: {
        provider: function () {
          // return wrapped provider:
          return wrapProvider(
            new HDWalletProvider(mnemonic, arbProviderUrl)
          )
        },
        network_id: '*',
      },
    },
    }
    

前端集成

有用的地址