Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
4af4b257
Commit
4af4b257
authored
Aug 07, 2023
by
Andreas Bigger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Port Challenger Scripts
parent
c0044a7d
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
219 additions
and
60 deletions
+219
-60
.gitignore
op-challenger/.gitignore
+1
-0
Makefile
op-challenger/Makefile
+16
-1
init_game.sh
op-challenger/init_game.sh
+0
-45
charlie.sh
op-challenger/scripts/alphabet/charlie.sh
+28
-0
init_game.sh
op-challenger/scripts/alphabet/init_game.sh
+101
-0
mallory.sh
op-challenger/scripts/alphabet/mallory.sh
+28
-0
parallel.sh
op-challenger/scripts/parallel.sh
+14
-0
visualize.sh
op-challenger/scripts/visualize.sh
+31
-0
visualize.sh
op-challenger/visualize.sh
+0
-14
No files found.
op-challenger/.gitignore
View file @
4af4b257
bin
bin
.fault-game-address
op-challenger/Makefile
View file @
4af4b257
...
@@ -19,8 +19,23 @@ test:
...
@@ -19,8 +19,23 @@ test:
lint
:
lint
:
golangci-lint run
-E
goimports,sqlclosecheck,bodyclose,asciicheck,misspell,errorlint
-e
"errors.As"
-e
"errors.Is"
golangci-lint run
-E
goimports,sqlclosecheck,bodyclose,asciicheck,misspell,errorlint
-e
"errors.As"
-e
"errors.Is"
visualize
:
./scripts/visualize.sh
alphabet
:
./scripts/alphabet/init_game.sh
make alphabet-actors
alphabet-actors
:
@
./scripts/parallel.sh
\
./scripts/alphabet/mallory.sh
'mallory'
\
./scripts/alphabet/charlie.sh
'charlie'
.PHONY
:
\
.PHONY
:
\
clean
\
clean
\
op-challenger
\
op-challenger
\
test
\
test
\
lint
lint
\
visualize
\
alphabet
\
alphabet-actors
op-challenger/init_game.sh
deleted
100755 → 0
View file @
c0044a7d
#!/bin/bash
set
-euo
pipefail
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
cd
"
$DIR
"
make
cd
..
make devnet-clean
make devnet-up-deploy
DEVNET_SPONSOR
=
"ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
DISPUTE_GAME_PROXY
=
"0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e"
CHARLIE_ADDRESS
=
"0xF45B7537828CB2fffBC69996B054c2Aaf36DC778"
CHARLIE_KEY
=
"74feb147d72bfae943e6b4e483410933d9e447d5dc47d52432dcc2c1454dabb7"
MALLORY_ADDRESS
=
"0x4641c704a6c743f73ee1f36C7568Fbf4b80681e4"
MALLORY_KEY
=
"28d7045146193f5f4eeb151c4843544b1b0d30a7ac1680c845a416fac65a7715"
echo
"----------------------------------------------------------------"
echo
" - Fetching balance of the sponsor"
echo
" - Balance:
$(
cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
)
"
echo
"----------------------------------------------------------------"
echo
"Funding Charlie"
cast send
$CHARLIE_ADDRESS
--value
5ether
--private-key
$DEVNET_SPONSOR
echo
"Funding Mallory"
cast send
$MALLORY_ADDRESS
--value
5ether
--private-key
$DEVNET_SPONSOR
# Fault game type = 0
GAME_TYPE
=
0
# Root claim commits to the entire trace.
# Alphabet game claim construction: keccak256(abi.encode(trace_index, trace[trace_index]))
ROOT_CLAIM
=
$(
cast keccak
$(
cast abi-encode
"f(uint256,uint256)"
15 122
))
# Extra data is a dynamic `bytes` type that contains the L2 Block Number of the output proposal that the root claim disagrees with
# Doesn't matter right now since we're not deleting outputs, so just set it to 1
EXTRA_DATA
=
$(
cast to-bytes32 1
)
echo
"Initializing the game"
cast call
--private-key
$MALLORY_KEY
$DISPUTE_GAME_PROXY
"create(uint8,bytes32,bytes)"
$GAME_TYPE
$ROOT_CLAIM
$EXTRA_DATA
cast send
--private-key
$MALLORY_KEY
$DISPUTE_GAME_PROXY
"create(uint8,bytes32,bytes)"
$GAME_TYPE
$ROOT_CLAIM
$EXTRA_DATA
op-challenger/charlie.sh
→
op-challenger/
scripts/alphabet/
charlie.sh
View file @
4af4b257
#!/bin/bash
#!/bin/bash
set
-euo
pipefail
set
-euo
pipefail
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
SOURCE_
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
cd
"
$DIR
"
CHALLENGER_DIR
=
$(
echo
${
SOURCE_DIR
%/*/*
}
)
DISPUTE_GAME_PROXY
=
"0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e"
# Check that the fault game address file exists
FAULT_GAME_ADDR_FILE
=
"
$CHALLENGER_DIR
/.fault-game-address"
if
[[
!
-f
"
$FAULT_GAME_ADDR_FILE
"
]]
;
then
echo
"Game not initialized, exiting..."
exit
1
fi
CHARLIE_ADDRESS
=
"0xF45B7537828CB2fffBC69996B054c2Aaf36DC778"
# Charlie's Address: 0xF45B7537828CB2fffBC69996B054c2Aaf36DC778
CHARLIE_KEY
=
"74feb147d72bfae943e6b4e483410933d9e447d5dc47d52432dcc2c1454dabb7"
CHARLIE_KEY
=
"74feb147d72bfae943e6b4e483410933d9e447d5dc47d52432dcc2c1454dabb7"
MALLORY_ADDRESS
=
"0x4641c704a6c743f73ee1f36C7568Fbf4b80681e4"
FAULT_GAME_ADDRESS
=
$(
cat
$FAULT_GAME_ADDR_FILE
)
MALLORY_KEY
=
"28d7045146193f5f4eeb151c4843544b1b0d30a7ac1680c845a416fac65a7715
"
echo
"Fault dispute game address:
$FAULT_GAME_ADDRESS
"
FAULT_GAME_ADDRESS
=
"0x8daf17a20c9dba35f005b6324f493785d239719d"
$CHALLENGER_DIR
/bin/op-challenger
\
PREIMAGE_ORACLE_ADDRESS
=
"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"
./bin/op-challenger
\
--l1-eth-rpc
http://localhost:8545
\
--l1-eth-rpc
http://localhost:8545
\
--trace-type
=
"alphabet"
\
--trace-type
=
"alphabet"
\
--alphabet
"abcdefgh"
\
--alphabet
"abcdefgh"
\
--game-address
$FAULT_GAME_ADDRESS
\
--game-address
$FAULT_GAME_ADDRESS
\
--preimage-oracle-address
$PREIMAGE_ORACLE_ADDRESS
\
--private-key
$CHARLIE_KEY
\
--private-key
$CHARLIE_KEY
\
--num-confirmations
1
\
--num-confirmations
1
\
--game-depth
4
\
--game-depth
4
\
...
...
op-challenger/scripts/alphabet/init_game.sh
0 → 100755
View file @
4af4b257
#!/bin/bash
set
-euo
pipefail
SOURCE_DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
CHALLENGER_DIR
=
$(
echo
${
SOURCE_DIR
%/*/*
}
)
MONOREPO_DIR
=
$(
echo
${
SOURCE_DIR
%/*/*/*
}
)
cd
$CHALLENGER_DIR
make
cd
$MONOREPO_DIR
make devnet-clean
make cannon-prestate
make devnet-up
DEVNET_SPONSOR
=
"ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
DISPUTE_GAME_PROXY
=
$(
jq
-r
.DisputeGameFactoryProxy
$MONOREPO_DIR
/.devnet/addresses.json
)
echo
"----------------------------------------------------------------"
echo
" Dispute Game Factory at
$DISPUTE_GAME_PROXY
"
echo
"----------------------------------------------------------------"
L2_OUTPUT_ORACLE_PROXY
=
$(
jq
-r
.L2OutputOracleProxy
$MONOREPO_DIR
/.devnet/addresses.json
)
echo
"----------------------------------------------------------------"
echo
" L2 Output Oracle Proxy at
$L2_OUTPUT_ORACLE_PROXY
"
echo
"----------------------------------------------------------------"
BLOCK_ORACLE_PROXY
=
$(
jq
-r
.BlockOracle
$MONOREPO_DIR
/.devnet/addresses.json
)
echo
"----------------------------------------------------------------"
echo
" Block Oracle Proxy at
$BLOCK_ORACLE_PROXY
"
echo
"----------------------------------------------------------------"
CHARLIE_ADDRESS
=
"0xF45B7537828CB2fffBC69996B054c2Aaf36DC778"
CHARLIE_KEY
=
"74feb147d72bfae943e6b4e483410933d9e447d5dc47d52432dcc2c1454dabb7"
MALLORY_ADDRESS
=
"0x4641c704a6c743f73ee1f36C7568Fbf4b80681e4"
MALLORY_KEY
=
"28d7045146193f5f4eeb151c4843544b1b0d30a7ac1680c845a416fac65a7715"
echo
"----------------------------------------------------------------"
echo
" - Fetching balance of the sponsor"
echo
" - Balance:
$(
cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
)
"
echo
"----------------------------------------------------------------"
echo
"Funding Charlie"
cast send
$CHARLIE_ADDRESS
--value
5ether
--private-key
$DEVNET_SPONSOR
echo
"Funding Mallory"
cast send
$MALLORY_ADDRESS
--value
5ether
--private-key
$DEVNET_SPONSOR
# Loop and wait until there are at least 2 outputs in the l2 output oracle
echo
"Waiting until 2 output proposals are in the l2 output oracle..."
echo
"NOTE: This may show errors if no output proposals are in the oracle yet."
while
[[
$(
cast call
$L2_OUTPUT_ORACLE_PROXY
"latestOutputIndex()"
| cast to-dec
)
-lt
2
]]
do
echo
"[BLOCK:
$(
cast block-number
)
] Waiting for output proposals..."
sleep
2
done
# Fetch the latest block number
L2_BLOCK_NUMBER
=
$(
cast call
$L2_OUTPUT_ORACLE_PROXY
"latestBlockNumber()"
)
echo
"Using the latest L2OO block number:
$L2_BLOCK_NUMBER
"
# We will use the l2 block number of 1 for the dispute game.
# We need to check that the block oracle contains the corresponding l1 block number.
echo
"Checkpointing the block oracle..."
L1_CHECKPOINT
=
$(
cast send
--private-key
$DEVNET_SPONSOR
$BLOCK_ORACLE_PROXY
"checkpoint()"
--json
| jq
-r
.blockNumber | cast to-dec
)
((
L1_CHECKPOINT
=
L1_CHECKPOINT-1
))
echo
"L1 Checkpoint:
$L1_CHECKPOINT
"
INDEX
=
$(
cast call
$L2_OUTPUT_ORACLE_PROXY
"getL2OutputIndexAfter(uint256)"
$L2_BLOCK_NUMBER
| cast to-dec
)
((
PRIOR_INDEX
=
INDEX-1
))
echo
"Getting the l2 output at index
$PRIOR_INDEX
"
cast call
$L2_OUTPUT_ORACLE_PROXY
"getL2Output(uint256)"
$PRIOR_INDEX
echo
"Getting the l2 output at index
$INDEX
"
cast call
$L2_OUTPUT_ORACLE_PROXY
"getL2Output(uint256)"
$INDEX
# (Alphabet) Fault game type = 0
GAME_TYPE
=
0
# Root claim commits to the entire trace.
# Alphabet game claim construction: keccak256(abi.encode(trace_index, trace[trace_index]))
ROOT_CLAIM
=
$(
cast keccak
$(
cast abi-encode
"f(uint256,uint256)"
15 122
))
# Fault dispute game extra data is calculated as follows.
# abi.encode(uint256(l2_block_number), uint256(l1 checkpoint))
EXTRA_DATA
=
$(
cast abi-encode
"f(uint256,uint256)"
$L2_BLOCK_NUMBER
$L1_CHECKPOINT
)
echo
"Initializing the game"
FAULT_GAME_ADDRESS
=
$(
cast call
--private-key
$MALLORY_KEY
$DISPUTE_GAME_PROXY
"create(uint8,bytes32,bytes)"
$GAME_TYPE
$ROOT_CLAIM
$EXTRA_DATA
)
echo
"Creating game at address
$FAULT_GAME_ADDRESS
"
cast send
--private-key
$MALLORY_KEY
$DISPUTE_GAME_PROXY
"create(uint8,bytes32,bytes)"
$GAME_TYPE
$ROOT_CLAIM
$EXTRA_DATA
FORMATTED_ADDRESS
=
$(
cast parse-bytes32-address
$FAULT_GAME_ADDRESS
)
echo
"Formatted Address:
$FORMATTED_ADDRESS
"
echo
$FORMATTED_ADDRESS
>
$CHALLENGER_DIR
/.fault-game-address
op-challenger/mallory.sh
→
op-challenger/
scripts/alphabet/
mallory.sh
View file @
4af4b257
#!/bin/bash
#!/bin/bash
set
-euo
pipefail
set
-euo
pipefail
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
SOURCE_
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
cd
"
$DIR
"
CHALLENGER_DIR
=
$(
echo
${
SOURCE_DIR
%/*/*
}
)
DISPUTE_GAME_PROXY
=
"0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e"
# Check that the fault game address file exists
FAULT_GAME_ADDR_FILE
=
"
$CHALLENGER_DIR
/.fault-game-address"
if
[[
!
-f
"
$FAULT_GAME_ADDR_FILE
"
]]
;
then
echo
"Game not initialized, exiting..."
exit
1
fi
CHARLIE_ADDRESS
=
"0xF45B7537828CB2fffBC69996B054c2Aaf36DC778"
# Mallory's Address: 0x4641c704a6c743f73ee1f36C7568Fbf4b80681e4
CHARLIE_KEY
=
"74feb147d72bfae943e6b4e483410933d9e447d5dc47d52432dcc2c1454dabb7"
MALLORY_ADDRESS
=
"0x4641c704a6c743f73ee1f36C7568Fbf4b80681e4"
MALLORY_KEY
=
"28d7045146193f5f4eeb151c4843544b1b0d30a7ac1680c845a416fac65a7715"
MALLORY_KEY
=
"28d7045146193f5f4eeb151c4843544b1b0d30a7ac1680c845a416fac65a7715"
FAULT_GAME_ADDRESS
=
"0x8daf17a20c9dba35f005b6324f493785d239719d"
FAULT_GAME_ADDRESS
=
$(
cat
$FAULT_GAME_ADDR_FILE
)
echo
"Fault dispute game address:
$FAULT_GAME_ADDRESS
"
PREIMAGE_ORACLE_ADDRESS
=
"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9"
.
/bin/op-challenger
\
$CHALLENGER_DIR
/bin/op-challenger
\
--l1-eth-rpc
http://localhost:8545
\
--l1-eth-rpc
http://localhost:8545
\
--trace-type
=
"alphabet"
\
--trace-type
=
"alphabet"
\
--alphabet
"abcdexyz"
\
--alphabet
"abcdexyz"
\
--game-address
$FAULT_GAME_ADDRESS
\
--game-address
$FAULT_GAME_ADDRESS
\
--preimage-oracle-address
$PREIMAGE_ORACLE_ADDRESS
\
--private-key
$MALLORY_KEY
\
--private-key
$MALLORY_KEY
\
--num-confirmations
1
\
--num-confirmations
1
\
--game-depth
4
\
--game-depth
4
\
...
...
op-challenger/scripts/parallel.sh
0 → 100755
View file @
4af4b257
#!/bin/bash
# set -x
trap
killgroup SIGINT
killgroup
(){
echo
killing...
kill
0
}
$1
|
sed
"s/^/[
$2
] /"
&
$3
|
sed
"s/^/[
$4
] /"
&
wait
op-challenger/scripts/visualize.sh
0 → 100644
View file @
4af4b257
#!/bin/bash
set
-euo
pipefail
if
[
$#
-eq
0
]
then
echo
"Missing Fault Dispute Game address argument"
fi
echo
""
echo
"Visualize the fault dispute game at https://dispute.clab.by/game?addr=
$1
"
echo
""
DISPUTE_GAME_PROXY
=
$(
jq .DisputeGameFactoryProxy .devnet/addresses.json
)
DISPUTE_GAME_PROXY
=
$(
echo
$DISPUTE_GAME_PROXY
|
tr
-d
'"'
)
echo
"----------------------------------------------------------------"
echo
" Dispute Game Factory at
$DISPUTE_GAME_PROXY
"
echo
"----------------------------------------------------------------"
FAULT_GAME_ADDRESS
=
$1
DIR
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
DIR
=
$(
echo
${
DIR
%/*/*
}
)
cd
$DIR
/packages/contracts-bedrock
forge script scripts/FaultDisputeGameViz.s.sol
\
--sig
"remote(address)"
$FAULT_GAME_ADDRESS
\
--fork-url
http://localhost:8545
mv
dispute_game.svg
"
$dir
"
op-challenger/visualize.sh
deleted
100755 → 0
View file @
c0044a7d
#!/bin/bash
set
-euo
pipefail
DISPUTE_GAME_PROXY
=
"0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e"
FAULT_GAME_ADDRESS
=
"0x8daf17a20c9dba35f005b6324f493785d239719d"
dir
=
$(
cd
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
&&
pwd
)
cd
"
$dir
"
cd
../packages/contracts-bedrock
forge script scripts/FaultDisputeGameViz.s.sol
--sig
"remote(address)"
$FAULT_GAME_ADDRESS
--fork-url
http://localhost:8545
mv
dispute_game.svg
"
$dir
"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment