How to use hardhat - 10 common examples

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
gravity,
    testERC20,
    checkpoint: deployCheckpoint,
  } = await deployContracts(gravityId, validators, powers, powerThreshold);

  // First we deploy the logic batch middleware contract. This makes it easy to call a logic
  // contract a bunch of times in a batch.
  const SimpleLogicBatchMiddleware = await ethers.getContractFactory(
    "SimpleLogicBatchMiddleware"
  );
  const logicBatch = (await SimpleLogicBatchMiddleware.deploy()) as SimpleLogicBatchMiddleware;
  // We set the ownership to gravity so that nobody else can call it.
  await logicBatch.transferOwnership(gravity.address);

  // Then we deploy the actual logic contract.
  const TestUniswapLiquidityContract = await ethers.getContractFactory(
    "TestUniswapLiquidity"
  );
  const logicContract = (await TestUniswapLiquidityContract.deploy(
    uniswap_router_address
  )) as TestUniswapLiquidity;
  // We set its owner to the batch contract.
  await logicContract.transferOwnership(logicBatch.address);


  let logic_contract_balance_start = await usdc_eth_lp.balanceOf(logicContract.address)


  console.log(`Logic Contract Balance ${logic_contract_balance_start}`);


  // Transfer out to Cosmos, locking coins
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 cosmos / gravity-bridge / solidity / tests_mainnet_fork / uniswap-logic.ts View on Github external
let lp_balance_to_send = 2_000_000_000_000;

  let eth_per_lp_unit = reserve1.div(total_lp_supply); 

  console.log(`Eth per lp token:${eth_per_lp_unit}`)

  // USDC ethereum address
  let usdc_address = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";

  let wrapped_eth_address ="0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";


  // Prep and deploy contract
  // ========================
  const signers = await ethers.getSigners();
  const gravityId = ethers.utils.formatBytes32String("foo");
  // This is the power distribution on the Cosmos hub as of 7/14/2020
  let powers = examplePowers();
  let validators = signers.slice(0, powers.length);
  const powerThreshold = 6666;
  const {
    gravity,
    testERC20,
    checkpoint: deployCheckpoint,
  } = await deployContracts(gravityId, validators, powers, powerThreshold);

  // First we deploy the logic batch middleware contract. This makes it easy to call a logic
  // contract a bunch of times in a batch.
  const SimpleLogicBatchMiddleware = await ethers.getContractFactory(
    "SimpleLogicBatchMiddleware"
  );
github cosmos / gravity-bridge / solidity / tests_mainnet_fork / uniswap-logic.ts View on Github external
let lp_balance_to_send = 2_000_000_000_000;

  let eth_per_lp_unit = reserve1.div(total_lp_supply); 

  console.log(`Eth per lp token:${eth_per_lp_unit}`)

  // USDC ethereum address
  let usdc_address = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";

  let wrapped_eth_address ="0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";


  // Prep and deploy contract
  // ========================
  const signers = await ethers.getSigners();
  const gravityId = ethers.utils.formatBytes32String("foo");
  // This is the power distribution on the Cosmos hub as of 7/14/2020
  let powers = examplePowers();
  let validators = signers.slice(0, powers.length);
  const powerThreshold = 6666;
  const {
    gravity,
    testERC20,
    checkpoint: deployCheckpoint,
  } = await deployContracts(gravityId, validators, powers, powerThreshold);

  // First we deploy the logic batch middleware contract. This makes it easy to call a logic
  // contract a bunch of times in a batch.
  const SimpleLogicBatchMiddleware = await ethers.getContractFactory(
    "SimpleLogicBatchMiddleware"
  );
  const logicBatch = (await SimpleLogicBatchMiddleware.deploy()) as SimpleLogicBatchMiddleware;
github cosmos / gravity-bridge / solidity / tests_mainnet_fork / uniswap-logic.ts View on Github external
// ========================
  const signers = await ethers.getSigners();
  const gravityId = ethers.utils.formatBytes32String("foo");
  // This is the power distribution on the Cosmos hub as of 7/14/2020
  let powers = examplePowers();
  let validators = signers.slice(0, powers.length);
  const powerThreshold = 6666;
  const {
    gravity,
    testERC20,
    checkpoint: deployCheckpoint,
  } = await deployContracts(gravityId, validators, powers, powerThreshold);

  // First we deploy the logic batch middleware contract. This makes it easy to call a logic
  // contract a bunch of times in a batch.
  const SimpleLogicBatchMiddleware = await ethers.getContractFactory(
    "SimpleLogicBatchMiddleware"
  );
  const logicBatch = (await SimpleLogicBatchMiddleware.deploy()) as SimpleLogicBatchMiddleware;
  // We set the ownership to gravity so that nobody else can call it.
  await logicBatch.transferOwnership(gravity.address);

  // Then we deploy the actual logic contract.
  const TestUniswapLiquidityContract = await ethers.getContractFactory(
    "TestUniswapLiquidity"
  );
  const logicContract = (await TestUniswapLiquidityContract.deploy(
    uniswap_router_address
  )) as TestUniswapLiquidity;
  // We set its owner to the batch contract.
  await logicContract.transferOwnership(logicBatch.address);
github OffchainLabs / arbitrum / packages / arb-bridge-peripherals / scripts / deploy_token_bridge_l2.ts View on Github external
const main = async () => {
  const accounts = await ethers.getSigners()
  const StandardArbERC20 = await ethers.getContractFactory('StandardArbERC20')
  const StandardArbERC777 = await ethers.getContractFactory('StandardArbERC777')

  const standardArbERC20Logic = await StandardArbERC20.deploy()
  await standardArbERC20Logic.deployed()
  console.log(`erc20 logic at ${standardArbERC20Logic.address}`)

  const standardArbERC777Logic = await StandardArbERC777.deploy()
  await standardArbERC777Logic.deployed()
  console.log(`erc777 logic at ${standardArbERC777Logic.address}`)

  // const ProxyAdmin = await ethers.getContractFactory('ProxyAdmin')
  // const proxyAdmin = await ProxyAdmin.deploy()
  // await proxyAdmin.deployed()
  // console.log("Admin proxy deployed to", proxyAdmin.address)

  const UpgradeableBeacon = await ethers.getContractFactory('UpgradeableBeacon')
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-peripherals / scripts / deploy_token_bridge_l2.ts View on Github external
const main = async () => {
  const accounts = await ethers.getSigners()
  const StandardArbERC20 = await ethers.getContractFactory('StandardArbERC20')
  const StandardArbERC777 = await ethers.getContractFactory('StandardArbERC777')

  const standardArbERC20Logic = await StandardArbERC20.deploy()
  await standardArbERC20Logic.deployed()
  console.log(`erc20 logic at ${standardArbERC20Logic.address}`)

  const standardArbERC777Logic = await StandardArbERC777.deploy()
  await standardArbERC777Logic.deployed()
  console.log(`erc777 logic at ${standardArbERC777Logic.address}`)

  // const ProxyAdmin = await ethers.getContractFactory('ProxyAdmin')
  // const proxyAdmin = await ProxyAdmin.deploy()
  // await proxyAdmin.deployed()
  // console.log("Admin proxy deployed to", proxyAdmin.address)
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 })
       console.log(`✓ Funded ${to} on L2 with ${amount} ETH`)
     }
   }
}