Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(conductor)!: implement v2 execution API #2006

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
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
32 changes: 32 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,37 @@ jobs:
run: |
TAG=sha-$(git rev-parse --short HEAD)
just run-smoke-test $TAG
smoke-test-evm-rollup-restart:
needs: [run_checker, composer, conductor, sequencer, sequencer-relayer, evm-bridge-withdrawer, cli]
if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'astriaorg/astria') && (github.event_name == 'merge_group' || needs.run_checker.outputs.run_docker == 'true')
runs-on: buildjet-8vcpu-ubuntu-2204
steps:
- uses: actions/checkout@v4
- name: Install just
uses: taiki-e/install-action@just
- name: Install kind
uses: helm/kind-action@v1
with:
install_only: true
- name: Log in to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Smoke Test Environment
timeout-minutes: 10
run: |
TAG=sha-$(git rev-parse --short HEAD)
just deploy cluster
kubectl create secret generic regcred --from-file=.dockerconfigjson=$HOME/.docker/config.json --type=kubernetes.io/dockerconfigjson
echo -e "\n\nDeploying with astria images tagged $TAG"
just deploy evm-rollup-restart-test $TAG
- name: Run Smoke test
timeout-minutes: 3
run: |
TAG=sha-$(git rev-parse --short HEAD)
just run-smoke-test $TAG

smoke-cli:
needs: [run_checker, composer, conductor, sequencer, sequencer-relayer, evm-bridge-withdrawer, cli]
Expand Down Expand Up @@ -317,3 +348,4 @@ jobs:
uses: ./.github/workflows/reusable-success.yml
with:
success: ${{ !contains(needs.*.result, 'failure') }}

20 changes: 20 additions & 0 deletions charts/deploy.just
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,26 @@ deploy-smoke-test tag=defaultTag:
--set evm-faucet.enabled=false > /dev/null
@just wait-for-rollup > /dev/null

deploy-evm-rollup-restart-test tag=defaultTag:
@echo "Deploying ingress controller..." && just deploy ingress-controller > /dev/null
@just wait-for-ingress-controller > /dev/null
@echo "Deploying local celestia instance..." && just deploy celestia-local > /dev/null
@helm dependency update charts/sequencer > /dev/null
@helm dependency update charts/evm-stack > /dev/null
@echo "Setting up single astria sequencer..." && helm install \
-n astria-validator-single single-sequencer-chart ./charts/sequencer \
-f dev/values/validators/all.yml \
-f dev/values/validators/single.yml \
{{ if tag != '' { replace('--set images.sequencer.devTag=# --set sequencer-relayer.images.sequencerRelayer.devTag=#', '#', tag) } else { '' } }} \
--create-namespace > /dev/null
@just wait-for-sequencer > /dev/null
@echo "Starting EVM rollup..." && helm install -n astria-dev-cluster astria-chain-chart ./charts/evm-stack -f dev/values/rollup/evm-restart-test.yaml \
{{ if tag != '' { replace('--set evm-rollup.images.conductor.devTag=# --set composer.images.composer.devTag=# --set evm-bridge-withdrawer.images.evmBridgeWithdrawer.devTag=#', '#', tag) } else { '' } }} \
--set blockscout-stack.enabled=false \
--set postgresql.enabled=false \
--set evm-faucet.enabled=false > /dev/null
@just wait-for-rollup > /dev/null

deploy-smoke-cli tag=defaultTag:
@echo "Deploying ingress controller..." && just deploy ingress-controller > /dev/null
@just wait-for-ingress-controller > /dev/null
Expand Down
4 changes: 2 additions & 2 deletions charts/evm-rollup/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.1.2
version: 1.1.3

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.0.0"
appVersion: "1.1.0"

maintainers:
- name: wafflesvonmaple
Expand Down
102 changes: 89 additions & 13 deletions charts/evm-rollup/files/genesis/geth-genesis.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,98 @@
{{- range $key, $value := .Values.genesis.extra }}
"{{ $key }}": {{ toPrettyJson $value | indent 8 | trim }},
{{- end }}
{{- if .Values.genesis.extraDataOverride }}
"astriaExtraDataOverride": "{{ .Values.genesis.extraDataOverride }}",
{{- end }}
"astriaOverrideGenesisExtraData": {{ .Values.genesis.overrideGenesisExtraData }},
"astriaSequencerInitialHeight": {{ toString .Values.genesis.sequencerInitialHeight | replace "\"" "" }},
"astriaRollupName": "{{ tpl .Values.genesis.rollupName . }}",
"astriaCelestiaInitialHeight": {{ toString .Values.genesis.celestiaInitialHeight | replace "\"" "" }},
"astriaCelestiaHeightVariance": {{ toString .Values.genesis.celestiaHeightVariance | replace "\"" "" }},
"astriaBridgeAddresses": {{ toPrettyJson .Values.genesis.bridgeAddresses | indent 8 | trim }},
"astriaFeeCollectors": {{ toPrettyJson .Values.genesis.feeCollectors | indent 8 | trim }},
"astriaEIP1559Params": {{ toPrettyJson .Values.genesis.eip1559Params | indent 8 | trim }},
"astriaSequencerAddressPrefix": "{{ .Values.genesis.sequencerAddressPrefix }}"
{{- if not .Values.global.dev }}
{{- else }}
{{- end }}
"astriaForks": {
{{- $forks := .Values.genesis.forks }}
{{- $index := 0 }}
{{- $lastIndex := sub (len $forks) 1 }}
{{- range $key, $value := .Values.genesis.forks }}
"{{ $key }}": {
{{- $fields := list }}
{{- with $value }}

{{- if .height }}
{{- $fields = append $fields (printf "\"height\": %s" (toString .height | replace "\"" "")) }}
{{- end }}

{{- if .halt }}
{{- $fields = append $fields (printf "\"halt\": %s" (toString .halt | replace "\"" "")) }}
{{- end }}

{{- if .snapshotChecksum }}
{{- $fields = append $fields (printf "\"snapshotChecksum\": %s" (toString .snapshotChecksum)) }}
{{- end }}

{{- if .extraDataOverride }}
{{- $fields = append $fields (printf "\"extraDataOverride\": %s" (toString .extraDataOverride)) }}
{{- end }}

{{- if .feeCollector }}
{{- $fields = append $fields (printf "\"feeCollector\": \"%s\"" (toString .feeCollector)) }}
{{- end }}

{{- if .eip1559Params }}
{{- $fields = append $fields (printf "\"eip1559Params\": %s" (toPrettyJson .eip1559Params | indent 8 | trim)) }}
{{- end }}

{{- if .sequencer }}
{{- $sequencerFields := list }}

{{- if .sequencer.chainId }}
{{- $sequencerFields = append $sequencerFields (printf "\"chainId\": \"%s\"" (tpl .sequencer.chainId .)) }}
{{- end }}

{{- if .sequencer.addressPrefix }}
{{- $sequencerFields = append $sequencerFields (printf "\"addressPrefix\": \"%s\"" .sequencer.addressPrefix) }}
{{- end }}

{{- if .sequencer.startHeight }}
{{- $sequencerFields = append $sequencerFields (printf "\"startHeight\": %s" (toString .sequencer.startHeight | replace "\"" "")) }}
{{- end }}

{{- if .sequencer.stopHeight }}
{{- $sequencerFields = append $sequencerFields (printf "\"stopHeight\": %s" (toString .sequencer.stopHeight | replace "\"" "")) }}
{{- end }}

{{- $fields = append $fields (printf "\"sequencer\": {\n%s\n}" (join ",\n" $sequencerFields | indent 4)) }}
{{- end }}

{{- if .celestia }}
{{- $celestiaFields := list }}

{{- if .celestia.chainId }}
{{- $celestiaFields = append $celestiaFields (printf "\"chainId\": \"%s\"" (tpl .celestia.chainId .)) }}
{{- end }}

{{- if .celestia.startHeight }}
{{- $celestiaFields = append $celestiaFields (printf "\"startHeight\": %s" (toString .celestia.startHeight | replace "\"" "")) }}
{{- end }}

{{- if .celestia.heightVariance }}
{{- $celestiaFields = append $celestiaFields (printf "\"heightVariance\": %s" (toString .celestia.heightVariance | replace "\"" "")) }}
{{- end }}

{{- if $celestiaFields | len }}
{{- $fields = append $fields (printf "\"celestia\": {\n%s\n}" (join ",\n" $celestiaFields | indent 4)) }}
{{- end }}
{{- end }}

{{- if .bridgeAddresses }}
{{- $fields = append $fields (printf "\"bridgeAddresses\": %s" (toPrettyJson .bridgeAddresses | indent 4 | trim)) }}
{{- end }}

{{- join ",\n" $fields | indent 16 }}
}
{{- if ne $index $lastIndex }},{{ end }}
{{- $index = add $index 1 }}
{{- end }}
{{- end }}
}
},
{{- if not .Values.global.dev }}
{{- else }}
{{- end }}
"difficulty": "0",
"gasLimit": "{{ toString .Values.genesis.gasLimit | replace "\"" "" }}",
"alloc": {
Expand Down
4 changes: 1 addition & 3 deletions charts/evm-rollup/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ metadata:
data:
ASTRIA_CONDUCTOR_LOG: "astria_conductor={{ .Values.config.logLevel }}"
ASTRIA_CONDUCTOR_CELESTIA_NODE_HTTP_URL: "{{ .Values.config.celestia.rpc }}"
ASTRIA_CONDUCTOR_EXPECTED_CELESTIA_CHAIN_ID: "{{ tpl .Values.config.conductor.celestiaChainId . }}"
ASTRIA_CONDUCTOR_CELESTIA_BEARER_TOKEN: "{{ .Values.config.celestia.token }}"
ASTRIA_CONDUCTOR_CELESTIA_BLOCK_TIME_MS: "{{ .Values.config.conductor.celestiaBlockTimeMs }}"
ASTRIA_CONDUCTOR_EXECUTION_RPC_URL: "http://127.0.0.1:{{ .Values.ports.executionGRPC }}"
ASTRIA_CONDUCTOR_EXECUTION_COMMIT_LEVEL: "{{ .Values.config.conductor.executionCommitLevel }}"
ASTRIA_CONDUCTOR_SEQUENCER_GRPC_URL: "{{ tpl .Values.config.conductor.sequencerGrpc . }}"
ASTRIA_CONDUCTOR_SEQUENCER_COMETBFT_URL: "{{ tpl .Values.config.conductor.sequencerRpc . }}"
ASTRIA_CONDUCTOR_EXPECTED_SEQUENCER_CHAIN_ID: "{{ tpl .Values.config.conductor.sequencerChainId . }}"
ASTRIA_CONDUCTOR_SEQUENCER_BLOCK_TIME_MS: "{{ .Values.config.conductor.sequencerBlockTimeMs }}"
ASTRIA_CONDUCTOR_NO_METRICS: "{{ not .Values.metrics.enabled }}"
ASTRIA_CONDUCTOR_METRICS_HTTP_LISTENER_ADDR: "0.0.0.0:{{ .Values.ports.conductorMetrics }}"
Expand Down Expand Up @@ -85,4 +83,4 @@ data:
{{- end }}
---
{{- end }}
{{- end }}
{{- end }}
92 changes: 48 additions & 44 deletions charts/evm-rollup/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ images:
repo: ghcr.io/astriaorg/astria-geth
pullPolicy: IfNotPresent
tag: 1.0.0
devTag: latest
devTag: pr-59
overrideTag: ""
conductor:
repo: ghcr.io/astriaorg/conductor
Expand All @@ -24,55 +24,63 @@ images:
tag: 1.69.0

genesis:
## These values are used to configure the genesis block of the rollup chain
## no defaults as they are unique to each chain

# The name of the rollup chain, used to generate the Rollup ID
rollupName: ""
# Block height to start syncing rollup from, lowest possible is 2
sequencerInitialHeight: ""
# The first Celestia height to utilize when looking for rollup data
celestiaInitialHeight: ""
# The variance in Celestia height to allow before halting the chain
celestiaHeightVariance: ""
# Will fill the extra data in each block, can be left empty
# can also fill with something unique for your chain.
extraDataOverride: ""

# The "forks" for upgrading the chain. Contains necessary information for starting
# and, if desired, restarting the chain at a given height. The necessary fields
# for the genesis fork are provided, and additional forks can be added as needed.
forks:
launch:
# The rollup number to start executing blocks at, lowest possible is 1
height: 1
# Whether to halt the rollup chain at the given height
halt: "false"
# Checksum of the snapshot to use upon restart
snapshotChecksum: ""
# Will fill the extra data in each block, can be left empty
# can also fill with something unique for your chain.
extraDataOverride: ""
# Configure the fee collector for the evm tx fees, activated at block heights.
# If not configured, all tx fees will be burned.
feeCollector: ""
# 1: "0xaC21B97d35Bf75A7dAb16f35b111a50e78A72F30"
# Configure EIP-1559 params, activated at block heights.
eip1559Params: {}
# 1:
# minBaseFee: 0
# elasticityMultiplier: 2
# baseFeeChangeDenominator: 8
sequencer:
# The chain id of the sequencer chain
chainId: ""
# The hrp for bech32m addresses, unlikely to be changed
addressPrefix: "astria"
# Block height to start syncing rollup from (inclusive), lowest possible is 2
startHeight: ""
celestia:
# The chain id of the celestia chain
chainId: ""
# The first Celestia height to utilize when looking for rollup data
startHeight: ""
# The variance in Celestia height to allow before halting the chain
heightVariance: ""
# Configure the sequencer bridge addresses and allowed assets if using
# the astria canonical bridge. Recommend removing alloc values if so.
bridgeAddresses: []
# - address: "684ae50c49a434199199c9c698115391152d7b3f"
# startHeight: 1
# assetDenom: "nria"
# senderAddress: "0x0000000000000000000000000000000000000000"
# assetPrecision: 9

## These are general configuration values with some recommended defaults

# Configure the gas Limit
gasLimit: "50000000"
# If set to true the genesis block will contain extra data
overrideGenesisExtraData: true
# The hrp for bech32m addresses, unlikely to be changed
sequencerAddressPrefix: "astria"

## These values are used to configure astria native bridging
## Many of the fields have commented out example fields

# Configure the sequencer bridge addresses and allowed assets if using
# the astria canonical bridge. Recommend removing alloc values if so.
bridgeAddresses: []
# - address: "684ae50c49a434199199c9c698115391152d7b3f"
# startHeight: 1
# assetDenom: "nria"
# senderAddress: "0x0000000000000000000000000000000000000000"
# assetPrecision: 9


## Fee configuration

# Configure the fee collector for the evm tx fees, activated at block heights.
# If not configured, all tx fees will be burned.
feeCollectors: {}
# 1: "0xaC21B97d35Bf75A7dAb16f35b111a50e78A72F30"
# Configure EIP-1559 params, activated at block heights
eip1559Params: {}
# 1:
# minBaseFee: 0
# elasticityMultiplier: 2
# baseFeeChangeDenominator: 8

## Standard Eth Genesis config values
# An EVM chain number id, different from the astria rollup name
Expand Down Expand Up @@ -191,8 +199,6 @@ config:
# - "FirmOnly" -> blocks are only pulled from DA
# - "SoftAndFirm" -> blocks are pulled from both the sequencer and DA
executionCommitLevel: 'SoftAndFirm'
# The chain id of the Astria sequencer chain conductor communicates with
sequencerChainId: ""
# The expected fastest block time possible from sequencer, determines polling
# rate.
sequencerBlockTimeMs: 2000
Expand All @@ -204,8 +210,6 @@ config:
sequencerGrpc: ""
# The maximum number of requests to make to the sequencer per second
sequencerRequestsPerSecond: 500
# The chain id of the celestia network the conductor communicates with
celestiaChainId: ""

celestia:
# if config.rollup.executionLevel is NOT 'SoftOnly' AND celestia-node is not enabled
Expand Down
6 changes: 3 additions & 3 deletions charts/evm-stack/Chart.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ dependencies:
version: 0.4.0
- name: evm-rollup
repository: file://../evm-rollup
version: 1.1.2
version: 1.1.3
- name: flame-rollup
repository: file://../flame-rollup
version: 0.0.2
Expand All @@ -26,5 +26,5 @@ dependencies:
- name: blockscout-stack
repository: https://blockscout.github.io/helm-charts
version: 1.6.8
digest: sha256:ec55e7e1427dd7af6b3764d7cedc7b5b168ec2443fa140cb3000c8ed68d711ac
generated: "2025-02-20T10:44:04.460576+02:00"
digest: sha256:85329bcb82e89b366cb2e9c64e7b74207c7f2b9fb0a479b8f1a6f3a3123b91b5
generated: "2025-02-27T15:06:50.890389-06:00"
4 changes: 2 additions & 2 deletions charts/evm-stack/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.12
version: 1.0.13
dependencies:
- name: celestia-node
version: 0.4.0
repository: "file://../celestia-node"
condition: celestia-node.enabled
- name: evm-rollup
version: 1.1.2
version: 1.1.3
repository: "file://../evm-rollup"
condition: evm-rollup.enabled
- name: flame-rollup
Expand Down
Loading
Loading