hop/contracts/scripts/other/sendMessageOverHopBridge.ts
2022-12-09 18:11:04 +08:00

78 lines
2.2 KiB
TypeScript

require('dotenv').config()
import { ethers } from 'hardhat'
import { BigNumber, Signer, Contract, ContractFactory } from 'ethers'
import { CHAIN_IDS, ZERO_ADDRESS } from '../../config/constants'
import {
getContractFactories
} from '../shared/utils'
import {
executeCanonicalMessengerSendMessage,
getSetL1BridgeConnectorMessage,
getAddBonderMessage,
} from '../../test/shared/contractFunctionWrappers'
// Send an arbitrary message over the Hop Bridge. Useful for updating L2 Bridge state
// Example usage:
// $ npx hardhat run scripts/other/sendMessageOverHopBridge.ts --network kovan
async function main () {
// Addresses
const l1_messengerAddress: string = '0xFe446bEF1DbF7AFE24E81e05BC8B271C1BA9a560'
const l1_messengerWrapperAddress: string = ZERO_ADDRESS
const l1_bridgeAddress: string = '0xe31a40e28888BbFF75a7f433f25863F9893a7cd4'
const l2_bridgeAddress: string = '0x0116f7Cc707486def830e8B5FbEEE13A237D2A08'
// Chain Ids
const l2_chainId: BigNumber = CHAIN_IDS.XDAI.SOKOL
// Contracts and Factories
let L1_Bridge: ContractFactory
let L1_Messenger: ContractFactory
let L1_MessengerWrapper: ContractFactory
let L2_Bridge: ContractFactory
let l1_bridge: Contract
let l1_messenger: Contract
let l1_messengerWrapper: Contract
let l2_bridge: Contract
// Signers
const signers: Signer[] = await ethers.getSigners()
const deployer: Signer = signers[0]
const governance: Signer = signers[1]
;({
L1_Bridge,
L1_Messenger,
L1_MessengerWrapper,
L2_Bridge
} = await getContractFactories(l2_chainId, deployer, ethers))
// Attach already deployed contracts
l1_bridge = L1_Bridge.attach(l1_bridgeAddress)
l1_messenger = L1_Messenger.attach(l1_messengerAddress)
l1_messengerWrapper = L1_MessengerWrapper.attach(l1_messengerAddress)
l2_bridge = L2_Bridge.attach(l2_bridgeAddress)
let message: string = getAddBonderMessage(
'0x50f1EB94F221122d524DCAAc303a2a6082525967'
)
await executeCanonicalMessengerSendMessage(
l1_messenger,
l1_messengerWrapper,
l2_bridge,
ZERO_ADDRESS,
governance,
message,
l2_chainId
)
}
main()
.catch(error => {
console.error(error)
})
.finally(() => process.exit(0))