How to use the hardhat.ethers.provider function in hardhat

To help you get started, we’ve selected a few hardhat examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github cosmos / gravity-bridge / solidity / tests_mainnet_fork / uniswap-logic.ts View on Github external
// Transfer out to Cosmos, locking coins
  // =====================================
  await usdc_eth_lp.functions.approve(gravity.address, lp_provider_balance);

  // Swap the signer of Gravity to the whale liqudity provider.
  let gravity_lp_signer = gravity.connect(lp_signer);

  await gravity_lp_signer.functions.sendToCosmos(
    usdc_eth_lp.address,
    ethers.utils.formatBytes32String("myCosmosAddress"),
    lp_balance_to_send *500
  );

  let post_gas_balance = await ethers.provider.getBalance(await lp_signer.getAddress());

  console.log(`Post_gas_balance ${post_gas_balance}`);


  // Prepare batch
  // ===============================
  // This code prepares the batch of transactions by encoding the arguments to the logicContract.
  // This batch contains 10 transactions which each:
  // - Transfer 5 coins to the logic contract
  // - Call transferTokens on the logic contract, transferring 2+2 coins to signer 20
  //
  // After the batch runs, signer 20 should have 40 coins, Gravity should have 940 coins,
  // and the logic contract should have 10 coins
  const numTxs = 3;
  const txPayloads = new Array(numTxs);
github OffchainLabs / arbitrum / packages / arb-bridge-peripherals / scripts / get_proof_l2.ts View on Github external
const withdrawalId = buddyDeployEvents[0].withdrawalId

  const logs = await BridgeHelper.getWithdrawalsInL2Transaction(
    l2TransactionReceipt,
    ethers.provider
  )
  const filteredLogs = logs.filter(log => log.uniqueId.eq(withdrawalId))

  if (filteredLogs.length !== 1)
    throw new Error('Should have exactly one matching unique id')
  const { batchNumber, indexInBatch } = filteredLogs[0]

  const proofData = await BridgeHelper.tryGetProof(
    batchNumber,
    indexInBatch,
    ethers.provider
  )
  console.log(JSON.stringify(proofData))
  //   return proofData;
}
github OffchainLabs / arbitrum / packages / arb-bridge-peripherals / scripts / deploy_token_bridge_l2.ts View on Github external
console.log(`erc20 proxy at ${standardArbERC20Proxy.address}`)

  const standardArbERC777Proxy = await UpgradeableBeacon.deploy(
    standardArbERC777Logic.address
  )
  await standardArbERC777Proxy.deployed()
  console.log(`erc777 proxy at ${standardArbERC777Proxy.address}`)

  const contracts = JSON.stringify({
    ...deployments,
    // standardArbERC20: standardArbERC20Logic.address,
    // standardArbERC777: standardArbERC777Logic.address,
    standardArbERC20: standardArbERC20Proxy.address,
    standardArbERC777: standardArbERC777Proxy.address,
    l2ChainId: ethers.BigNumber.from(
      ethers.provider.network.chainId
    ).toHexString(),
  })

  const path = './deployment.json'
  console.log(`Writing to JSON at ${path}`)

  // TODO: should append/check if previous entries
  writeFileSync(path, contracts)

  console.log('Almost done')
  await deploy1820Registry(accounts[0])
  console.log('Done')
}
github OffchainLabs / arbitrum / packages / arb-bridge-eth / scripts / upgrade.ts View on Github external
async function main() {
  const accounts = await ethers.getSigners()

  const rollupCreator = RollupCreator__factory.connect(
    prevAddresses.rollupCreator,
    ethers.provider
  )

  const rollupCreatorOwner = await rollupCreator.owner()
  if (accounts[0].address.toLowerCase() !== rollupCreatorOwner.toLowerCase()) {
    throw new Error('Current account must be rollup creator owner')
  }

  const linkedBridgeCreator = await rollupCreator.bridgeCreator()
  const linkedRollupTemplate = await rollupCreator.rollupTemplate()
  const linkedChallengeFactory = await rollupCreator.challengeFactory()
  const linkedNodeFactory = await rollupCreator.nodeFactory()

  // check if current linked templates match the supplied previous ones
  if (
    linkedBridgeCreator.toLowerCase() !==
    prevAddresses.bridgeCreator.toLowerCase()
github ethereum-optimism / optimism / packages / contracts / deploy / 018-fund-accounts.ts View on Github external
const deployFn: DeployFunction = async (hre) => {
  const { deployer } = await hre.getNamedAccounts()

   // Fund all default hardhat signers  with ETH if deploying on a local hardhat network
   const { chainId } = await ethers.provider.getNetwork()
   if (chainId === 31337) {
     const Proxy__OVM_L1ETHGateway = await getDeployedContract(
       hre,
       'Proxy__OVM_L1ETHGateway',
       {
         signerOrProvider: deployer,
         iface: 'OVM_L1ETHGateway',
       }
     )
     const signers = await ethers.getSigners()
     for (const signer of signers) {
       const to = await signer.getAddress()
       const l2gas = 8_000_000
       const amount = '100'
       const value = ethers.utils.parseEther(amount)
       await Proxy__OVM_L1ETHGateway.depositTo(to, l2gas, '0x', { value })
github OffchainLabs / arbitrum / packages / arb-bridge-eth / scripts / upgrade.ts View on Github external
throw new Error('Rollup was not created')
  }

  const rollupInstance = Rollup__factory.connect(
    prevAddresses.rollup,
    ethers.provider
  )
  const rollupOwner = await rollupInstance.owner()

  if (rollupOwner.toLowerCase() !== accounts[0].address.toLowerCase()) {
    throw new Error('Current account must be rollup owner')
  }

  const proxyAdmin = ProxyAdmin__factory.connect(
    adminProxy as string,
    ethers.provider
  )
  // TODO: we can check the direct storage slot as in 'packages/arb-bridge-peripherals/scripts/upgrade_bridge_logic.ts'
  const proxyAdminOwner = await proxyAdmin.owner()

  if (proxyAdminOwner.toLowerCase() !== accounts[0].address.toLowerCase()) {
    throw new Error('Current account must be admin proxy owner')
  }

  const latestConfirmedNode = await rollupInstance.latestConfirmed()
  const latestCreatedNode = await rollupInstance.latestNodeCreated()

  if (latestCreatedNode.gt(latestConfirmedNode)) {
    await promptUserToContinue()
  }
  // TODO: let user know if unresolved challenges
github cosmos / gravity-bridge / solidity / tests_mainnet_fork / uniswap-logic.ts View on Github external
async function runTest() {
  //Take over the largest liquidity provider for USDC

  await network.provider.request({
    method: "hardhat_impersonateAccount",
    params: ["0x0c731fb0d03211dd32a456370ad2ec3ffad46520"],
  });

  let lp_signer = await ethers.provider.getSigner(
    "0x0c731fb0d03211dd32a456370ad2ec3ffad46520"
  );

  let starting_lp_eth_balance = await ethers.provider.getBalance(await lp_signer.getAddress());

  console.log(`Starting LP eth balance ${starting_lp_eth_balance}`);

  let uniswap_router_address = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D";

  let uniswap_router_contact = await IUniswapV2Pair__factory.connect(uniswap_router_address,lp_signer);


  let usdc_eth_lp =await IUniswapV2Pair__factory.connect("0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc",lp_signer)
github ethereum-optimism / optimism / integration-tests / sync-tests / 2-sync-replica.spec.ts View on Github external
before(async () => {
      other = Wallet.createRandom().connect(ethers.provider)
      Factory__ERC20 = await ethers.getContractFactory('ERC20', wallet)
    })
github OffchainLabs / arbitrum / packages / arb-bridge-peripherals / scripts / utils.ts View on Github external
export const deploy1820Registry = async (signer: SignerWithAddress) => {
  const registry1820 = await ethers.provider.getCode(
    '0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24'
  )
  if (registry1820 === '0x') {
    console.log('Deploying registry')
    const balance = await ethers.provider.getBalance(signer.address)
    const requiredBalance = ethers.utils.parseEther('0.08')
    if (balance.gte(requiredBalance)) {
      await signer.sendTransaction({
        to: '0xa990077c3205cbDf861e17Fa532eeB069cE9fF96',
        value: requiredBalance,
      })
      await ethers.provider.sendTransaction(
        '0xf90a388085174876e800830c35008080b909e5608060405234801561001057600080fd5b506109c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063a41e7d5111610078578063a41e7d51146101d4578063aabbb8ca1461020a578063b705676514610236578063f712f3e814610280576100a5565b806329965a1d146100aa5780633d584063146100e25780635df8122f1461012457806365ba36c114610152575b600080fd5b6100e0600480360360608110156100c057600080fd5b50600160a060020a038135811691602081013591604090910135166102b6565b005b610108600480360360208110156100f857600080fd5b5035600160a060020a0316610570565b60408051600160a060020a039092168252519081900360200190f35b6100e06004803603604081101561013a57600080fd5b50600160a060020a03813581169160200135166105bc565b6101c26004803603602081101561016857600080fd5b81019060208101813564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b5090925090506106b3565b60408051918252519081900360200190f35b6100e0600480360360408110156101ea57600080fd5b508035600160a060020a03169060200135600160e060020a0319166106ee565b6101086004803603604081101561022057600080fd5b50600160a060020a038135169060200135610778565b61026c6004803603604081101561024c57600080fd5b508035600160a060020a03169060200135600160e060020a0319166107ef565b604080519115158252519081900360200190f35b61026c6004803603604081101561029657600080fd5b508035600160a060020a03169060200135600160e060020a0319166108aa565b6000600160a060020a038416156102cd57836102cf565b335b9050336102db82610570565b600160a060020a031614610339576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b6103428361092a565b15610397576040805160e560020a62461bcd02815260206004820152601a60248201527f4d757374206e6f7420626520616e204552433136352068617368000000000000604482015290519081900360640190fd5b600160a060020a038216158015906103b85750600160a060020a0382163314155b156104ff5760405160200180807f455243313832305f4143434550545f4d4147494300000000000000000000000081525060140190506040516020818303038152906040528051906020012082600160a060020a031663249cb3fa85846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600160a060020a0316600160a060020a031681526020019250505060206040518083038186803b15801561047e57600080fd5b505afa158015610492573d6000803e3d6000fd5b505050506040513d60208110156104a857600080fd5b5051146104ff576040805160e560020a62461bcd02815260206004820181905260248201527f446f6573206e6f7420696d706c656d656e742074686520696e74657266616365604482015290519081900360640190fd5b600160a060020a03818116600081815260208181526040808320888452909152808220805473ffffffffffffffffffffffffffffffffffffffff19169487169485179055518692917f93baa6efbd2244243bfee6ce4cfdd1d04fc4c0e9a786abd3a41313bd352db15391a450505050565b600160a060020a03818116600090815260016020526040812054909116151561059a5750806105b7565b50600160a060020a03808216600090815260016020526040902054165b919050565b336105c683610570565b600160a060020a031614610624576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a031681600160a060020a0316146106435780610646565b60005b600160a060020a03838116600081815260016020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169585169590951790945592519184169290917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a43509190a35050565b600082826040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090505b92915050565b6106f882826107ef565b610703576000610705565b815b600160a060020a03928316600081815260208181526040808320600160e060020a031996909616808452958252808320805473ffffffffffffffffffffffffffffffffffffffff19169590971694909417909555908152600284528181209281529190925220805460ff19166001179055565b600080600160a060020a038416156107905783610792565b335b905061079d8361092a565b156107c357826107ad82826108aa565b6107b85760006107ba565b815b925050506106e8565b600160a060020a0390811660009081526020818152604080832086845290915290205416905092915050565b6000808061081d857f01ffc9a70000000000000000000000000000000000000000000000000000000061094c565b909250905081158061082d575080155b1561083d576000925050506106e8565b61084f85600160e060020a031961094c565b909250905081158061086057508015155b15610870576000925050506106e8565b61087a858561094c565b909250905060018214801561088f5750806001145b1561089f576001925050506106e8565b506000949350505050565b600160a060020a0382166000908152600260209081526040808320600160e060020a03198516845290915281205460ff1615156108f2576108eb83836107ef565b90506106e8565b50600160a060020a03808316600081815260208181526040808320600160e060020a0319871684529091529020549091161492915050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161590565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000008082526004820183905260009182919060208160248189617530fa90519096909550935050505056fea165627a7a72305820377f4a2d4301ede9949f163f319021a6e9c687c292a5e2b2c4734c126b524e6c00291ba01820182018201820182018201820182018201820182018201820182018201820a01820182018201820182018201820182018201820182018201820182018201820'
      )
      console.log('Deployed registry')
    } else {
      throw new Error(
        `Current account ${await signer.getAddress()} can't prefund 1820 registry`
      )
    }
  } else {
github OffchainLabs / arbitrum / packages / arb-bridge-peripherals / scripts / get_proof_l2.ts View on Github external
const main = async () => {
  if (process.env.L2_TX_HASH && process.env.INBOX_SEQ_NUM)
    throw new Error('Either supply the L1 inbox seq num or l2 tx hash')
  const l2TxHash =
    process.env.L2_TX_HASH ||
    (await BridgeHelper.calculateL2RetryableTransactionHash(
      BigNumber.from(process.env.INBOX_SEQ_NUM),
      ethers.provider
    ))
  const l2TransactionReceipt = await BridgeHelper.getL2Transaction(
    l2TxHash,
    ethers.provider
  )

  const buddyDeployEvents = await BridgeHelper.getBuddyDeployInL2Transaction(
    l2TransactionReceipt
  )

  if (buddyDeployEvents.length !== 1)
    throw new Error('Buddy deploy event was not triggered one time!')
  const withdrawalId = buddyDeployEvents[0].withdrawalId

  const logs = await BridgeHelper.getWithdrawalsInL2Transaction(
    l2TransactionReceipt,