From 24e677cfdb315ccb6e8947d822cc8319d59d64fa Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Wed, 2 Jun 2021 17:19:05 -0700 Subject: [PATCH 1/4] dtl: remove stringify from db logic --- .../src/db/transport-db.ts | 28 ++----------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/packages/data-transport-layer/src/db/transport-db.ts b/packages/data-transport-layer/src/db/transport-db.ts index 777ba4423dde..c1c50c4eac53 100644 --- a/packages/data-transport-layer/src/db/transport-db.ts +++ b/packages/data-transport-layer/src/db/transport-db.ts @@ -379,9 +379,7 @@ export class TransportDB { if (index === null) { return null } - let entry = await this.db.get(`${key}:index`, index) - entry = stringify(entry) - return entry + return this.db.get(`${key}:index`, index) } private async _getEntries( @@ -389,28 +387,6 @@ export class TransportDB { startIndex: number, endIndex: number ): Promise { - const entries = await this.db.range( - `${key}:index`, - startIndex, - endIndex - ) - const results = [] - for (const entry of entries) { - results.push(stringify(entry)) - } - return results - } -} - -function stringify(entry) { - if (entry === null || entry === undefined) { - return entry - } - if (entry.gasLimit) { - entry.gasLimit = BigNumber.from(entry.gasLimit).toString() - } - if (entry.decoded) { - entry.decoded.gasLimit = BigNumber.from(entry.decoded.gasLimit).toString() + return this.db.range(`${key}:index`, startIndex, endIndex) } - return entry } From cf760047ca07527fe85a58706f1fc3f8450af0ce Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Wed, 2 Jun 2021 17:32:46 -0700 Subject: [PATCH 2/4] l2geth: overflow protection --- l2geth/rollup/client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/l2geth/rollup/client.go b/l2geth/rollup/client.go index 5f8cd3edd12b..8a5e0530ed8d 100644 --- a/l2geth/rollup/client.go +++ b/l2geth/rollup/client.go @@ -104,8 +104,8 @@ type decoded struct { Signature signature `json:"sig"` Value hexutil.Uint64 `json:"value"` GasLimit uint64 `json:"gasLimit,string"` - GasPrice uint64 `json:"gasPrice"` - Nonce uint64 `json:"nonce"` + GasPrice uint64 `json:"gasPrice,string"` + Nonce uint64 `json:"nonce,string"` Target *common.Address `json:"target"` Data hexutil.Bytes `json:"data"` } From 2698fbacd6adcf1a99ca9bc0b1ad6d62917ed01f Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Wed, 2 Jun 2021 17:33:01 -0700 Subject: [PATCH 3/4] dtl: overflow protection --- .../l1-ingestion/handlers/sequencer-batch-appended.ts | 4 ++-- .../src/services/l2-ingestion/handlers/transaction.ts | 4 ++-- packages/data-transport-layer/src/types/database-types.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts b/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts index 0c90fa286277..877b452835c9 100644 --- a/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts +++ b/packages/data-transport-layer/src/services/l1-ingestion/handlers/sequencer-batch-appended.ts @@ -240,8 +240,8 @@ const maybeDecodeSequencerBatchTransaction = ( const decodedTx = ethers.utils.parseTransaction(transaction) return { - nonce: BigNumber.from(decodedTx.nonce).toNumber(), - gasPrice: BigNumber.from(decodedTx.gasPrice).toNumber(), + nonce: BigNumber.from(decodedTx.nonce).toString(), + gasPrice: BigNumber.from(decodedTx.gasPrice).toString(), gasLimit: BigNumber.from(decodedTx.gasLimit).toString(), value: toRpcHexString(decodedTx.value), target: toHexString(decodedTx.to), // Maybe null this out for creations? diff --git a/packages/data-transport-layer/src/services/l2-ingestion/handlers/transaction.ts b/packages/data-transport-layer/src/services/l2-ingestion/handlers/transaction.ts index be127cc2d0dd..0f4284533807 100644 --- a/packages/data-transport-layer/src/services/l2-ingestion/handlers/transaction.ts +++ b/packages/data-transport-layer/src/services/l2-ingestion/handlers/transaction.ts @@ -49,8 +49,8 @@ export const handleSequencerBlock = { }, value: transaction.value, gasLimit: BigNumber.from(transaction.gas).toString(), - gasPrice: BigNumber.from(transaction.gasPrice).toNumber(), // ? - nonce: BigNumber.from(transaction.nonce).toNumber(), + gasPrice: BigNumber.from(transaction.gasPrice).toString(), + nonce: BigNumber.from(transaction.nonce).toString(), target: transaction.to, data: transaction.input, } diff --git a/packages/data-transport-layer/src/types/database-types.ts b/packages/data-transport-layer/src/types/database-types.ts index 470b402c3590..3ad73da3e4f7 100644 --- a/packages/data-transport-layer/src/types/database-types.ts +++ b/packages/data-transport-layer/src/types/database-types.ts @@ -6,8 +6,8 @@ export interface DecodedSequencerBatchTransaction { } value: string gasLimit: string - gasPrice: number - nonce: number + gasPrice: string + nonce: string target: string data: string } From 6764344ff5902448ce17ffa0fa0d9ac79baa70d1 Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Wed, 2 Jun 2021 17:35:58 -0700 Subject: [PATCH 4/4] chore: add changeset --- .changeset/cold-ways-grow.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/cold-ways-grow.md diff --git a/.changeset/cold-ways-grow.md b/.changeset/cold-ways-grow.md new file mode 100644 index 000000000000..a79702ddfa1e --- /dev/null +++ b/.changeset/cold-ways-grow.md @@ -0,0 +1,6 @@ +--- +'@eth-optimism/l2geth': patch +'@eth-optimism/data-transport-layer': patch +--- + +Add extra overflow protection for the DTL types