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
0b954225
Unverified
Commit
0b954225
authored
Aug 09, 2023
by
mergify[bot]
Committed by
GitHub
Aug 09, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into aj/goerli-rpckind
parents
21991253
cdfc1626
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 @
0b954225
bin
bin
.fault-game-address
op-challenger/Makefile
View file @
0b954225
...
@@ -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 @
21991253
#!/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 @
0b954225
#!/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 @
0b954225
#!/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 @
0b954225
#!/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 @
0b954225
#!/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 @
0b954225
#!/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 @
21991253
#!/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