diff --git a/stack_orchestrator/data/compose/docker-compose-fixturenet-blast.yml b/stack_orchestrator/data/compose/docker-compose-fixturenet-blast.yml new file mode 100644 index 00000000..e6373796 --- /dev/null +++ b/stack_orchestrator/data/compose/docker-compose-fixturenet-blast.yml @@ -0,0 +1,80 @@ + +# From: https://raw.githubusercontent.com/blast-io/deployment/master/docker-compose.yml +services: + # generate jwt.txt if it's absent + generate-jwt: + image: blastio/openssl + volumes: + - blast-data:/blast:rw + command: > + sh -c "[ ! -f /blast/jwt.txt ] && openssl rand -hex 32 | tr -d '\n' > /blast/jwt.txt || exit 0" + # initialise geth db + geth-init: + image: blastio/blast-geth:${NETWORK:-testnet-sepolia} + volumes: + - blast-data:/blast:rw + - ../config/fixturenet-blast/genesis.json:/blast/genesis.json + entrypoint: /bin/sh + command: > + -c "[ ! -d /blast/${GETH_DATA_DIR:-blast-geth-data}/geth ] && /usr/local/bin/geth init --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data} /blast/genesis.json || exit 0" + depends_on: + generate-jwt: + condition: service_completed_successfully + env_file: + - ../config/fixturenet-blast/${NETWORK:-fixturenet}.config + blast-geth: + image: blastio/blast-geth:${NETWORK:-testnet-sepolia} + volumes: + - blast-data:/blast + ports: + - "9545" + - "9546" + command: > + --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data} + --http + --http.corsdomain="*" + --http.vhosts="*" + --http.addr=0.0.0.0 + --http.port=9545 + --http.api=web3,debug,eth,txpool,net,engine + --ws + --ws.addr=0.0.0.0 + --ws.port=9546 + --ws.origins="*" + --ws.api=debug,eth,txpool,net,engine + --authrpc.addr="0.0.0.0" + --authrpc.port="8551" + --authrpc.vhosts="*" + --authrpc.jwtsecret=/blast/jwt.txt + --syncmode=full + --gcmode=archive + --nodiscover + --maxpeers=0 + --rollup.disabletxpoolgossip=true + env_file: + - ../config/fixturenet-blast/${NETWORK:-fixturenet}.config + depends_on: + geth-init: + condition: service_completed_successfully + op-node: + image: blastio/blast-optimism:${NETWORK:-testnet-sepolia} + volumes: + - blast-data:/blast + - ../config/fixturenet-blast/rollup.json:/blast/rollup.json + ports: + - "9003" + command: > + op-node + --l1="${CERC_L1_RPC}" + --l1.rpckind="any" + --l1.trustrpc=true + --l2="http://blast-geth:8551" + --l2.jwt-secret=/blast/jwt.txt + --rollup.config="/blast/rollup.json" + depends_on: + - blast-geth + env_file: + - ../config/fixturenet-blast/${NETWORK:-fixturenet}.config + +volumes: + blast-data: diff --git a/stack_orchestrator/data/config/fixturenet-blast/fixturenet.config b/stack_orchestrator/data/config/fixturenet-blast/fixturenet.config new file mode 100644 index 00000000..bd891dbf --- /dev/null +++ b/stack_orchestrator/data/config/fixturenet-blast/fixturenet.config @@ -0,0 +1,2 @@ +GETH_ROLLUP_SEQUENCERHTTP=https://sequencer.s2.testblast.io +OP_NODE_P2P_BOOTNODES=enr:-J-4QM3GLUFfKMSJQuP1UvuKQe8DyovE7Eaiit0l6By4zjTodkR4V8NWXJxNmlg8t8rP-Q-wp3jVmeAOml8cjMj__ROGAYznzb_HgmlkgnY0gmlwhA-cZ_eHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAiuDqvB-AsVSRmnnWr6OHfjgY8YfNclFy9p02flKzXnOg3RjcIJ2YYN1ZHCCdmE,enr:-J-4QDCVpByqQ8nFqCS9aHicqwUfXgzFDslvpEyYz19lvkHLIdtcIGp2d4q5dxHdjRNTO6HXCsnIKxUeuZSPcEbyVQCGAYznzz0RgmlkgnY0gmlwhANiQfuHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAy3AtF2Jh_aPdOohg506Hjmtx-fQ1AKmu71C7PfkWAw9g3RjcIJ2YYN1ZHCCdmE \ No newline at end of file diff --git a/stack_orchestrator/data/config/fixturenet-blast/genesis.json b/stack_orchestrator/data/config/fixturenet-blast/genesis.json new file mode 100644 index 00000000..b33531a2 --- /dev/null +++ b/stack_orchestrator/data/config/fixturenet-blast/genesis.json @@ -0,0 +1,57 @@ +{ + "config": { + "chainId": 608943043, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "muirGlacierBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, + "mergeNetsplitBlock": 0, + "shanghaiTime": 0, + "bedrockBlock": 0, + "regolithTime": 0, + "canyonTime": 0, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true, + "optimism": { + "eip1559Elasticity": 6, + "eip1559Denominator": 50, + "eip1559DenominatorCanyon": 250 + } + }, + "alloc": { + "0000000000000000000000000000000000000000": { + "balance": "0x1" + }, + "4200000000000000000000000000000000000000": { + "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100ae5780638f283970146100db578063f851a440146100fb5761005d565b3661005d5761005b610110565b005b61005b610110565b34801561007157600080fd5b5061005b610080366004610521565b6101c8565b61009861009336600461053c565b61020e565b6040516100a591906105bf565b60405180910390f35b3480156100ba57600080fd5b506100c361033e565b6040516001600160a01b0390911681526020016100a5565b3480156100e757600080fd5b5061005b6100f6366004610521565b6103a9565b34801561010757600080fd5b506100c36103e4565b600061013a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b0381166101a55760405162461bcd60e51b815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e697469616044820152641b1a5e995960da1b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e806101c2573d6000fd5b503d6000f35b600080516020610625833981519152546001600160a01b0316336001600160a01b031614806101f5575033155b156102065761020381610432565b50565b610203610110565b60606102266000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610243575033155b1561032f5761025184610432565b600080856001600160a01b0316858560405161026e929190610614565b600060405180830381855af49150503d80600081146102a9576040519150601f19603f3d011682016040523d82523d6000602084013e6102ae565b606091505b5091509150816103265760405162461bcd60e51b815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c656400000000000000606482015260840161019c565b91506103379050565b610337610110565b9392505050565b60006103566000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610373575033155b1561039e57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6103a6610110565b90565b600080516020610625833981519152546001600160a01b0316336001600160a01b031614806103d6575033155b15610206576102038161048e565b60006103fc6000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610419575033155b1561039e57506000805160206106258339815191525490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8181556040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b60006104a66000805160206106258339815191525490565b600080516020610625833981519152838155604080516001600160a01b0380851682528616602082015292935090917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050565b80356001600160a01b038116811461051c57600080fd5b919050565b60006020828403121561053357600080fd5b61033782610505565b60008060006040848603121561055157600080fd5b61055a84610505565b9250602084013567ffffffffffffffff8082111561057757600080fd5b818601915086601f83011261058b57600080fd5b81358181111561059a57600080fd5b8760208285010111156105ac57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156105ec578581018301518582016040015282016105d0565b818111156105fe576000604083870101525b50601f01601f1916929092016040019392505050565b818382376000910190815291905056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a", + "storage": { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30000", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000004200000000000000000000000000000000000018" + }, + "balance": "0x0", + "flags": 1 + } + }, + "nonce": "0x0", + "timestamp": "0x659b7460", + "extraData": "0x424544524f434b", + "gasLimit": "0x1c9c380", + "difficulty": "0x0", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x4200000000000000000000000000000000000011", + "number": "0x0", + "gasUsed": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "baseFeePerGas": "0x3b9aca00", + "excessBlobGas": null, + "blobGasUsed": null +} diff --git a/stack_orchestrator/data/config/fixturenet-blast/rollup.json b/stack_orchestrator/data/config/fixturenet-blast/rollup.json new file mode 100644 index 00000000..62fdc185 --- /dev/null +++ b/stack_orchestrator/data/config/fixturenet-blast/rollup.json @@ -0,0 +1,31 @@ +{ + "genesis": { + "l1": { + "hash": "0x17728cf4d8e0b4f292d2390a869fd7c632d39e72efb00ca3462b4387c6aa2437", + "number": 5044255 + }, + "l2": { + "hash": "0x26a1c0faad7b041f34569a1bb383f00ab74b335883a44bed53e9f41ced5fd906", + "number": 0 + }, + "l2_time": 1704686688, + "system_config": { + "batcherAddr": "0xba26fee2fa917443e05e65de8d4350bcd2f59222", + "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", + "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", + "gasLimit": 30000000 + } + }, + "block_time": 2, + "max_sequencer_drift": 600, + "seq_window_size": 3600, + "channel_timeout": 300, + "l1_chain_id": 11155111, + "l2_chain_id": 608943043, + "regolith_time": 0, + "canyon_time": 0, + "batch_inbox_address": "0x1c3b85a2108784eab6a4bf56cdd6f722e415b331", + "deposit_contract_address": "0x2757e4430e694f27b73ec9c02257cab3a498c8c5", + "l1_system_config_address": "0x329faf078c364a316e08bf6a17b7eee6ae75a613", + "protocol_versions_address": "0x0000000000000000000000000000000000000000" +} diff --git a/stack_orchestrator/data/stacks/fixturenet-blast/README.md b/stack_orchestrator/data/stacks/fixturenet-blast/README.md new file mode 100644 index 00000000..81266fc7 --- /dev/null +++ b/stack_orchestrator/data/stacks/fixturenet-blast/README.md @@ -0,0 +1,26 @@ +# Blast stack + +## Clone required repositories +``` +$ laconic-so --stack fixturenet-blast setup-repositories +``` +## Build the stack's containers +``` +$ laconic-so --stack fixturenet-blast build-containers +``` +## Create a deployment of the stack +``` +$ laconic-so --stack fixturenet-blast deploy init --map-ports-to-host any-same --output blast-spec.yml +``` +[Insert details on how to configure the stack] +``` +$ laconic-so --stack fixturenet-blast deploy create --deployment-dir blast-deployment --spec-file blast-spec.yml +``` +## Start the stack +``` +$ laconic-so deployment --dir blast-deployment start +``` +Check logs: +``` +$ laconic-so deployment --dir blast-deployment logs +``` diff --git a/stack_orchestrator/data/stacks/fixturenet-blast/stack.yml b/stack_orchestrator/data/stacks/fixturenet-blast/stack.yml new file mode 100644 index 00000000..83806dff --- /dev/null +++ b/stack_orchestrator/data/stacks/fixturenet-blast/stack.yml @@ -0,0 +1,13 @@ +version: "1.0" +name: fixturenet-blast +description: "A blast devnet stack" +repos: + - github.com/blast-io/blast + - git.vdb.to/cerc-io/lighthouse +containers: + - cerc/webapp-base + - cerc/lighthouse + - cerc/lighthouse-cli +pods: + - fixturenet-blast +