Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 36 additions & 15 deletions run-dev-node.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

NITRO_NODE_VERSION="v3.5.5-90ee45c" # <-- only update this when you need a new version
TARGET_IMAGE="offchainlabs/nitro-node:${NITRO_NODE_VERSION}"

RPC=http://127.0.0.1:8547
PRIVATE_KEY=0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659
CREATE2_FACTORY=0x4e59b44847b379578588920ca78fbf26c0b4956c
SALT=0x0000000000000000000000000000000000000000000000000000000000000000

# By default, use nitro docker image. If "--stylus" is passed, build the image with stylus dev dependencies
STYLUS_MODE="false"

Expand Down Expand Up @@ -33,20 +39,23 @@ fi
echo "Starting Nitro dev node..."
docker run --rm --name nitro-dev -p 8547:8547 "${TARGET_IMAGE}" --dev --http.addr 0.0.0.0 --http.api=net,web3,eth,debug &

# Kill background processes when exiting
trap 'kill $(jobs -p) 2>/dev/null' EXIT

# Wait for the node to initialize
echo "Waiting for the Nitro node to initialize..."

until [[ "$(curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}' \
http://127.0.0.1:8547)" == *"result"* ]]; do
$RPC)" == *"result"* ]]; do
sleep 0.1
done


# Check if node is running
curl_output=$(curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}' \
http://127.0.0.1:8547)
$RPC)

if [[ "$curl_output" == *"result"* ]]; then
echo "Nitro node is running!"
Expand All @@ -58,13 +67,26 @@ fi
# Make the caller a chain owner
echo "Setting chain owner to pre-funded dev account..."
cast send 0x00000000000000000000000000000000000000FF "becomeChainOwner()" \
--private-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 \
--rpc-url http://127.0.0.1:8547
--private-key $PRIVATE_KEY \
--rpc-url $RPC

# Set the L1 data fee to 0 so it doesn't impact the L2 Gas limit.
# This makes the gas estimates closer to Ethereum and allows the deployment of the CREATE2 factory
cast send -r $RPC --private-key $PRIVATE_KEY 0x0000000000000000000000000000000000000070 'setL1PricePerUnit(uint256)' 0x0

# Deploy CREATE2 factory
echo "Deploying the CREATE2 factory"
cast send --rpc-url $RPC --private-key $PRIVATE_KEY --value "1 ether" 0x3fab184622dc19b6109349b94811493bf2a45362
cast publish --rpc-url $RPC 0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222
if [ "$(cast code -r $RPC $CREATE2_FACTORY)" == "0x" ]; then
echo "Failed to deploy CREATE2 factory"
exit 1
fi

# Deploy Cache Manager Contract
echo "Deploying Cache Manager contract..."
deploy_output=$(cast send --private-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 \
--rpc-url http://127.0.0.1:8547 \
deploy_output=$(cast send --private-key $PRIVATE_KEY \
--rpc-url $RPC \
--create 0x60a06040523060805234801561001457600080fd5b50608051611d1c61003060003960006105260152611d1c6000f3fe)

# Extract contract address using awk from plain text output
Expand All @@ -81,8 +103,8 @@ echo "Cache Manager contract deployed at address: $contract_address"

# Register the deployed Cache Manager contract
echo "Registering Cache Manager contract as a WASM cache manager..."
registration_output=$(cast send --private-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 \
--rpc-url http://127.0.0.1:8547 \
registration_output=$(cast send --private-key $PRIVATE_KEY \
--rpc-url $RPC \
0x0000000000000000000000000000000000000070 \
"addWasmCacheManager(address)" "$contract_address")

Expand All @@ -95,13 +117,12 @@ fi
echo "Cache Manager deployed and registered successfully"

# Deploy StylusDeployer
deployer_output=$(cast send --private-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 \
--rpc-url http://127.0.0.1:8547 \
--create $(cat ./stylus-deployer-bytecode.txt))
deployer_address=$(echo "$deployer_output" | awk '/contractAddress/ {print $2}')
if [[ -z "$deployer_address" ]]; then
echo "Error: Failed to deploy StylusDeployer contract. Full output:"
echo "$deployer_output"
deployer_code=$(cat ./stylus-deployer-bytecode.txt)
deployer_address=$(cast create2 --salt $SALT --init-code $deployer_code)
cast send --private-key $PRIVATE_KEY --rpc-url $RPC \
$CREATE2_FACTORY "$SALT$deployer_code"
if [ "$(cast code -r $RPC $deployer_address)" == "0x" ]; then
echo "Failed to deploy StylusDeployer"
exit 1
fi
echo "StylusDeployer deployed at address: $deployer_address"
Expand Down
2 changes: 1 addition & 1 deletion stylus-deployer-bytecode.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0x608060405234801561001057600080fd5b506108a8806100206000396000f3fe6080604052600436106100345760003560e01c8063835d1d4c146100395780639f40b3851461006e578063a9a8e4e91461009c575b600080fd5b34801561004557600080fd5b50610059610054366004610612565b6100d4565b60405190151581526020015b60405180910390f35b34801561007a57600080fd5b5061008e610089366004610691565b6101f0565b604051908152602001610065565b6100af6100aa3660046106dd565b610226565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fd70c0ca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82163f6004820152600090819060719063d70c0ca790602401602060405180830381865afa925050508015610161575060408051601f3d908101601f1916820190925261015e91810190610772565b60015b61016d57506000610170565b90505b607173ffffffffffffffffffffffffffffffffffffffff1663a996e0c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e09190610772565b61ffff9182169116141592915050565b600083838360405160200161020793929190610794565b6040516020818303038152906040528051906020012090509392505050565b6000811561023c576102398286866101f0565b91505b600061027f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610541915050565b9050600061028c826100d4565b90506000811561033c5760006102a287346107ae565b6040517f58c780c200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201529091506071906358c780c2908390602401604080518083038185885af1158015610312573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061033791906107e8565b925050505b861561040c5760008373ffffffffffffffffffffffffffffffffffffffff16878a8a60405161036c929190610814565b60006040518083038185875af1925050503d80600081146103a9576040519150601f19603f3d011682016040523d82523d6000602084013e6103ae565b606091505b5050905080610406576040517fb66f7a3600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b50610443565b8515610443576040517ecc797100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008661045083346107ae565b61045a91906107ae565b905080156104e957604051600090339083908381818185875af1925050503d80600081146104a4576040519150601f19603f3d011682016040523d82523d6000602084013e6104a9565b606091505b50509050806104e7576040517f3ea99169000000000000000000000000000000000000000000000000000000008152600481018390526024016103fd565b505b60405173ffffffffffffffffffffffffffffffffffffffff851681527f8ffcdc15a283d706d38281f500270d8b5a656918f555de0913d7455e3e6bc1bf9060200160405180910390a150919998505050505050505050565b6000825160000361057e576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821561059757828451602086016000f590506105a3565b8351602085016000f090505b3d1519811516156105ba576040513d6000823e3d81fd5b73ffffffffffffffffffffffffffffffffffffffff811661060957836040517f794c92ce0000000000000000000000000000000000000000000000000000000081526004016103fd9190610824565b90505b92915050565b60006020828403121561062457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461060957600080fd5b60008083601f84011261065a57600080fd5b50813567ffffffffffffffff81111561067257600080fd5b60208301915083602082850101111561068a57600080fd5b9250929050565b6000806000604084860312156106a657600080fd5b83359250602084013567ffffffffffffffff8111156106c457600080fd5b6106d086828701610648565b9497909650939450505050565b600080600080600080608087890312156106f657600080fd5b863567ffffffffffffffff8082111561070e57600080fd5b61071a8a838b01610648565b9098509650602089013591508082111561073357600080fd5b5061074089828a01610648565b979a9699509760408101359660609091013595509350505050565b805161ffff8116811461076d57600080fd5b919050565b60006020828403121561078457600080fd5b61078d8261075b565b9392505050565b838152818360208301376000910160200190815292915050565b8181038181111561060c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080604083850312156107fb57600080fd5b6108048361075b565b9150602083015190509250929050565b8183823760009101908152919050565b600060208083528351808285015260005b8181101561085157858101830151858201604001528201610835565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212204448eb93d09c22a334820f79d39cc9a956fda57bbb8faa630df7c3446577503064736f6c63430008110033
608060405234801561001057600080fd5b506108a8806100206000396000f3fe6080604052600436106100345760003560e01c8063835d1d4c146100395780639f40b3851461006e578063a9a8e4e91461009c575b600080fd5b34801561004557600080fd5b50610059610054366004610612565b6100d4565b60405190151581526020015b60405180910390f35b34801561007a57600080fd5b5061008e610089366004610691565b6101f0565b604051908152602001610065565b6100af6100aa3660046106dd565b610226565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fd70c0ca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82163f6004820152600090819060719063d70c0ca790602401602060405180830381865afa925050508015610161575060408051601f3d908101601f1916820190925261015e91810190610772565b60015b61016d57506000610170565b90505b607173ffffffffffffffffffffffffffffffffffffffff1663a996e0c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e09190610772565b61ffff9182169116141592915050565b600083838360405160200161020793929190610794565b6040516020818303038152906040528051906020012090509392505050565b6000811561023c576102398286866101f0565b91505b600061027f88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610541915050565b9050600061028c826100d4565b90506000811561033c5760006102a287346107ae565b6040517f58c780c200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201529091506071906358c780c2908390602401604080518083038185885af1158015610312573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061033791906107e8565b925050505b861561040c5760008373ffffffffffffffffffffffffffffffffffffffff16878a8a60405161036c929190610814565b60006040518083038185875af1925050503d80600081146103a9576040519150601f19603f3d011682016040523d82523d6000602084013e6103ae565b606091505b5050905080610406576040517fb66f7a3600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b50610443565b8515610443576040517ecc797100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008661045083346107ae565b61045a91906107ae565b905080156104e957604051600090339083908381818185875af1925050503d80600081146104a4576040519150601f19603f3d011682016040523d82523d6000602084013e6104a9565b606091505b50509050806104e7576040517f3ea99169000000000000000000000000000000000000000000000000000000008152600481018390526024016103fd565b505b60405173ffffffffffffffffffffffffffffffffffffffff851681527f8ffcdc15a283d706d38281f500270d8b5a656918f555de0913d7455e3e6bc1bf9060200160405180910390a150919998505050505050505050565b6000825160000361057e576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821561059757828451602086016000f590506105a3565b8351602085016000f090505b3d1519811516156105ba576040513d6000823e3d81fd5b73ffffffffffffffffffffffffffffffffffffffff811661060957836040517f794c92ce0000000000000000000000000000000000000000000000000000000081526004016103fd9190610824565b90505b92915050565b60006020828403121561062457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461060957600080fd5b60008083601f84011261065a57600080fd5b50813567ffffffffffffffff81111561067257600080fd5b60208301915083602082850101111561068a57600080fd5b9250929050565b6000806000604084860312156106a657600080fd5b83359250602084013567ffffffffffffffff8111156106c457600080fd5b6106d086828701610648565b9497909650939450505050565b600080600080600080608087890312156106f657600080fd5b863567ffffffffffffffff8082111561070e57600080fd5b61071a8a838b01610648565b9098509650602089013591508082111561073357600080fd5b5061074089828a01610648565b979a9699509760408101359660609091013595509350505050565b805161ffff8116811461076d57600080fd5b919050565b60006020828403121561078457600080fd5b61078d8261075b565b9392505050565b838152818360208301376000910160200190815292915050565b8181038181111561060c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080604083850312156107fb57600080fd5b6108048361075b565b9150602083015190509250929050565b8183823760009101908152919050565b600060208083528351808285015260005b8181101561085157858101830151858201604001528201610835565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212204448eb93d09c22a334820f79d39cc9a956fda57bbb8faa630df7c3446577503064736f6c63430008110033