Commit ab7f5402 authored by Mark Tyneway's avatar Mark Tyneway

contracts-bedrock: better logging in deposit task

This task is ran in CI and it started failing recently
for unknown reasons. This increases the logging so
that it is easier to understand what is going on
in the script. It detects the case where the deposit
goes through but is undetected by client side hash
computation. It also periodically logs the block number
and hash of the latest block so it can be known if there
has been a reorg.
parent d55b80a0
...@@ -66,6 +66,10 @@ task('deposit', 'Deposits funds onto L2.') ...@@ -66,6 +66,10 @@ task('deposit', 'Deposits funds onto L2.')
const amountWei = utils.parseEther(amountEth) const amountWei = utils.parseEther(amountEth)
const value = amountWei.add(utils.parseEther('0.01')) const value = amountWei.add(utils.parseEther('0.01'))
console.log(`Depositing ${amountEth} ETH to ${to}`) console.log(`Depositing ${amountEth} ETH to ${to}`)
const preL2Balance = await l2Provider.getBalance(to)
console.log(`${to} has ${utils.formatEther(preL2Balance)} ETH on L2`)
// Below adds 0.01 ETH to account for gas. // Below adds 0.01 ETH to account for gas.
const tx = await OptimismPortal.depositTransaction( const tx = await OptimismPortal.depositTransaction(
to, to,
...@@ -77,26 +81,39 @@ task('deposit', 'Deposits funds onto L2.') ...@@ -77,26 +81,39 @@ task('deposit', 'Deposits funds onto L2.')
) )
console.log(`Got TX hash ${tx.hash}. Waiting...`) console.log(`Got TX hash ${tx.hash}. Waiting...`)
const receipt = await tx.wait() const receipt = await tx.wait()
console.log( console.log(`Included in block ${receipt.blockHash}`)
`Included in block ${receipt.blockHash} with index ${receipt.logIndex}`
)
// find the transaction deposited event and derive // find the transaction deposited event and derive
// the deposit transaction from it // the deposit transaction from it
const event = receipt.events.find( const event = receipt.events.find(
(e: Event) => e.event === 'TransactionDeposited' (e: Event) => e.event === 'TransactionDeposited'
) )
const l2tx = DepositTx.fromL1Event(event)
console.log(`Deposit has log index ${event.logIndex}`) console.log(`Deposit has log index ${event.logIndex}`)
const l2tx = DepositTx.fromL1Event(event)
const hash = l2tx.hash() const hash = l2tx.hash()
console.log(`Waiting for L2 TX hash ${hash}`) console.log(`Waiting for L2 TX hash ${hash}`)
let i = 0
while (true) { while (true) {
const expected = await l2Provider.send('eth_getTransactionByHash', [hash]) const expected = await l2Provider.send('eth_getTransactionByHash', [hash])
if (expected) { if (expected) {
console.log('Deposit success') console.log('Deposit success')
console.log(JSON.stringify(expected, null, 2))
break break
} }
const postL2Balance = await l2Provider.getBalance(to)
if (postL2Balance.gt(preL2Balance)) {
console.log(
`Unexpected balance increase without detecting deposit transaction`
)
}
if (i % 100 === 0) {
const block = await l2Provider.getBlock('latest')
console.log(`latest block ${block.number}:${block.hash}`)
}
await sleep(500) await sleep(500)
i++
} }
}) })
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment