Skip to content

Commit

Permalink
feat: chain-specs
Browse files Browse the repository at this point in the history
  • Loading branch information
Skylar Simoncelli committed Sep 20, 2024
1 parent bf3325f commit e276515
Show file tree
Hide file tree
Showing 12 changed files with 120 additions and 38 deletions.
2 changes: 1 addition & 1 deletion .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export CARDANO_CONFIG_DIR="$(pwd)/docker/config"
export KUPO_WORKDIR="$RUN_DIR/kupo-db"
mkdir -p $KUPO_WORKDIR

source devnet/.envrc
source envs/devnet/.envrc

if [[ -f "$PWD/.envrc.local" ]]; then
echo using local envrc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,5 @@ jobs:
name: chain-specs
path: |
./devnet_chain_spec.json
./staging_chain_spec.json
./staging_preview_chain_spec.json
./staging_preprod_chain_spec.json
15 changes: 6 additions & 9 deletions .github/workflows/modules/artifacts/generate-chain-specs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,19 @@ jobs:
- name: Generate Chain Specs
run: |
chmod +x ./partner-chains-node
source ./devnet/.envrc
source ./envs/devnet/.envrc
./partner-chains-node build-spec --chain local --disable-default-bootnode --raw > devnet_chain_spec.json
source ./staging/.envrc
./partner-chains-node build-spec --chain staging --disable-default-bootnode --raw > staging_chain_spec.json
source ./staging-preview/.envrc
./partner-chains-node build-spec --chain staging-preview --disable-default-bootnode --raw > staging_preview_chain_spec.json
source ./staging-preprod/.envrc
./partner-chains-node build-spec --chain staging-preprod --disable-default-bootnode --raw > staging_preprod_chain_spec.json
source ./envs/staging-preview/.envrc
./partner-chains-node build-spec --chain staging --disable-default-bootnode --raw > staging_preview_chain_spec.json
source ./envs/staging-preprod/.envrc
./partner-chains-node build-spec --chain staging --disable-default-bootnode --raw > staging_preprod_chain_spec.json
- name: Upload Chain Specs for both chains
- name: Upload Chain Specs
uses: actions/upload-artifact@v4
with:
name: chain-specs
path: |
devnet_chain_spec.json
staging_chain_spec.json
staging_preview_chain_spec.json
staging_preprod_chain_spec.json
Expand Down
10 changes: 0 additions & 10 deletions .github/workflows/modules/deploy/upload-chain-specs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,6 @@ jobs:
kubectl create secret generic "$SECRET_NAME" \
--from-file=devnet_chain_spec.json=./artifacts/devnet_chain_spec.json \
--namespace=sc

- name: Update Kubernetes secret for staging chain spec
run: |
SHA=${{ inputs.sha }}
SECRET_NAME="staging-chain-spec-${SHA}"
kubectl delete secret "$SECRET_NAME" --namespace=staging --ignore-not-found
kubectl create secret generic "$SECRET_NAME" \
--from-file=staging_chain_spec.json=./artifacts/staging_chain_spec.json \
--namespace=staging

- name: Update Kubernetes secret for staging-preview chain spec
run: |
Expand Down
24 changes: 15 additions & 9 deletions Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -142,14 +142,20 @@ INSTALL:
chainspecs:
FROM +setup
DO +INSTALL
COPY devnet/.envrc devnet/.envrc
COPY devnet/addresses.json devnet/addresses.json
COPY staging/.envrc staging/.envrc
COPY staging/addresses.json staging/addresses.json
# `.` (dot) is equivalent of `source` in /bin/sh
RUN . ./devnet/.envrc \
COPY envs/devnet/.envrc envs/devnet/.envrc
COPY envs/devnet/addresses.json envs/devnet/addresses.json
COPY envs/staging-preview/.envrc envs/staging-preview/.envrc
COPY envs/staging-preview/addresses.json envs/staging-preview/addresses.json
COPY envs/staging-preprod/.envrc envs/staging-preprod/.envrc
COPY envs/staging-preprod/addresses.json envs/staging-preprod/addresses.json
# `.` (dot) is equivalent to `source` in /bin/sh
RUN . ./envs/devnet/.envrc \
&& partner-chains-node build-spec --chain local --disable-default-bootnode --raw > devnet_chain_spec.json
RUN. ./staging/.envrc \
&& partner-chains-node build-spec --chain staging --disable-default-bootnode --raw > staging_chain_spec.json
RUN . ./envs/staging-preview/.envrc \
&& partner-chains-node build-spec --chain staging-preview --disable-default-bootnode --raw > staging_preview_chain_spec.json
RUN . ./envs/staging-preprod/.envrc \
&& partner-chains-node build-spec --chain staging-preprod --disable-default-bootnode --raw > staging_preprod_chain_spec.json
SAVE ARTIFACT devnet_chain_spec.json AS LOCAL devnet_chain_spec.json
SAVE ARTIFACT staging_chain_spec.json AS LOCAL staging_chain_spec.json
SAVE ARTIFACT staging_preview_chain_spec.json AS LOCAL staging_preview_chain_spec.json
SAVE ARTIFACT staging_preprod_chain_spec.json AS LOCAL staging_preprod_chain_spec.json

3 changes: 1 addition & 2 deletions docker/chain-spec/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ Cache cargo home for faster builds.
-e CARGO_HOME=/cargo-home \
```

Set an env variable to specify which chain to use. Currently, we only have "local" (devnet) and
"staging". These IDs are used in `build-spec` command and pattern matched in `command.rs`, `SubstrateCli impl` `load_spec` function.
Set an env variable to specify which chain to use. Currently, we only have "local" (devnet) and "staging". These IDs are used in `build-spec` command and pattern matched in `command.rs`, `SubstrateCli impl` `load_spec` function.
Omit, if `--chain` option should not be used for the build-spec command.
```
-e CHAIN=staging \
Expand Down
6 changes: 3 additions & 3 deletions devnet/.envrc → envs/devnet/.envrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ export SIDECHAIN_BLOCK_BENEFICIARY="0x000000000000000000000000000000000000000000

# below exports parse config/addresses.json file, which needs to regenerated for each new sidechain by running
# sidechain-main-cli addresses ... > config/addresses.json
export COMMITTEE_CANDIDATE_ADDRESS=$(jq -r '.addresses.CommitteeCandidateValidator' devnet/addresses.json)
export D_PARAMETER_POLICY_ID=$(jq -r '.mintingPolicies.DParameterPolicy' devnet/addresses.json)
export PERMISSIONED_CANDIDATES_POLICY_ID=$(jq -r '.mintingPolicies.PermissionedCandidatesPolicy' devnet/addresses.json)
export COMMITTEE_CANDIDATE_ADDRESS=$(jq -r '.addresses.CommitteeCandidateValidator' envs/devnet/addresses.json)
export D_PARAMETER_POLICY_ID=$(jq -r '.mintingPolicies.DParameterPolicy' envs/devnet/addresses.json)
export PERMISSIONED_CANDIDATES_POLICY_ID=$(jq -r '.mintingPolicies.PermissionedCandidatesPolicy' envs/devnet/addresses.json)

# native token observability
export NATIVE_TOKEN_POLICY_ID='ada83ddd029614381f00e28de0922ab0dec6983ea9dd29ae20eef9b4'
Expand Down
File renamed without changes.
6 changes: 3 additions & 3 deletions staging/.envrc → envs/staging-preprod/.envrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ export SIDECHAIN_BLOCK_BENEFICIARY="0x000000000000000000000000000000000000000000

# below exports parse config/addresses.json file, which needs to regenerated for each new sidechain by running
# sidechain-main-cli addresses ... > config/addresses.json
export COMMITTEE_CANDIDATE_ADDRESS=$(jq -r '.addresses.CommitteeCandidateValidator' staging/addresses.json)
export D_PARAMETER_POLICY_ID=$(jq -r '.mintingPolicies.DParameterPolicy' staging/addresses.json)
export PERMISSIONED_CANDIDATES_POLICY_ID=$(jq -r '.mintingPolicies.PermissionedCandidatesPolicy' staging/addresses.json)
export COMMITTEE_CANDIDATE_ADDRESS=$(jq -r '.addresses.CommitteeCandidateValidator' envs/staging-preprod/addresses.json)
export D_PARAMETER_POLICY_ID=$(jq -r '.mintingPolicies.DParameterPolicy' envs/staging-preprod/addresses.json)
export PERMISSIONED_CANDIDATES_POLICY_ID=$(jq -r '.mintingPolicies.PermissionedCandidatesPolicy' envs/staging-preprod/addresses.json)

# native token observability
export NATIVE_TOKEN_POLICY_ID='ada83ddd029614381f00e28de0922ab0dec6983ea9dd29ae20eef9b4'
Expand Down
File renamed without changes.
44 changes: 44 additions & 0 deletions envs/staging-preview/.envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
export CHAIN_ID=1
export THRESHOLD_NUMERATOR=2
export THRESHOLD_DENOMINATOR=3
export GENESIS_COMMITTEE_UTXO="4e65eddc6132c1b9891d43f9d67a4a0a7b6e614b648f59dc97538f3f23eb96bf#1"
# cardano-cli address key-hash --payment-verification-key-file <path to authority vkey>
export GOVERNANCE_AUTHORITY=1f0977bc0f57c67ca6d77296c1b575fe05a6dc2c5fa38056ba63c50c

# unique identifier of the beneficiary that will be credited
# producer rewards for blocks produced by this node
export SIDECHAIN_BLOCK_BENEFICIARY="0x0000000000000000000000000000000000000000000000000000000000000201"

# below exports parse config/addresses.json file, which needs to regenerated for each new sidechain by running
# sidechain-main-cli addresses ... > config/addresses.json
export COMMITTEE_CANDIDATE_ADDRESS=$(jq -r '.addresses.CommitteeCandidateValidator' envs/staging-preview/addresses.json)
export D_PARAMETER_POLICY_ID=$(jq -r '.mintingPolicies.DParameterPolicy' envs/staging-preview/addresses.json)
export PERMISSIONED_CANDIDATES_POLICY_ID=$(jq -r '.mintingPolicies.PermissionedCandidatesPolicy' envs/staging-preview/addresses.json)

# native token observability
export NATIVE_TOKEN_POLICY_ID='ada83ddd029614381f00e28de0922ab0dec6983ea9dd29ae20eef9b4'
export NATIVE_TOKEN_ASSET_NAME='5043546f6b656e44656d6f'
export ILLIQUID_SUPPLY_VALIDATOR_ADDRESS='addr_test1wrhvtvx3f0g9wv9rx8kfqc60jva3e07nqujk2cspekv4mqs9rjdvz'

# Preview parameters
export CARDANO_SECURITY_PARAMETER=432
export CARDANO_ACTIVE_SLOTS_COEFF=0.05
export DB_SYNC_POSTGRES_CONNECTION_STRING="postgres://postgres:password123@localhost/cexplorer"

# A minimum block distance from the most recent MC stable block.
# Used by block producers to select the stable block to include in the block header.
export BLOCK_STABILITY_MARGIN=0

# Timestamp for the MC_FIRST_EPOCH_NUMBER
# Genesis should not have a timestamp before this one, this should be divisible by both sidechain slot and epoch durations
export MC__FIRST_EPOCH_TIMESTAMP_MILLIS=1666656000000
# First Shelley epoch number on Cardano
export MC__FIRST_EPOCH_NUMBER=0
# Should be divisible by Sidechain epoch duration (which is SlotDuration * SlotsPerEpoch and those params can be found in runtime/src/lib.rs)
export MC__EPOCH_DURATION_MILLIS=86400000
# First Shelley slot number on Cardano
export MC__FIRST_SLOT_NUMBER=0

# When true, node will use the mock implementation of main chain follower. Overrides USE_INTERNAL_MAIN_CHAIN_FOLLOWER if true.
export USE_MAIN_CHAIN_FOLLOWER_MOCK=false
export MAIN_CHAIN_FOLLOWER_MOCK_REGISTRATIONS_FILE=res/bb-mock/default-registrations.json
47 changes: 47 additions & 0 deletions envs/staging-preview/addresses.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"endpoint": "GetAddrs",
"addresses": {
"CommitteeCandidateValidator": "addr_test1wqczxu6fnkg22mswwf36dgav02d7fqut2qmxqxe9waf3hzqet7k08",
"DsConfValidator": "addr_test1wrs3x229t9wvzshcrq2sadngnh2p8aaxnzl538ptm6kfy7s722s0h",
"DsInsertValidator": "addr_test1wpcck855nef0era6mkk7eqfjtajm0nwz8wjmlwtq5zsy7fsqht257",
"VersionOracleValidator": "addr_test1wpfw535nn36x896pjtl3fc7t3axphpvgzmwvvf5ydlgw2cqfr4gts",
"PermissionedCandidatesValidator": "addr_test1wzhqyt2qsq3p43y2qkp6w47at38k4059hj0n8rysfhm2dyc5grwmv",
"DParameterValidator": "addr_test1wpt60cg7n4hp2u6djszjm744fprh8fhm4w5rqsrr4ax4tgshxjylr",
"CommitteeHashValidator": "addr_test1wztj2gjtnmt8p5593q4w2tcd0548r6u3s2uc7sjkrq8qp8shre8s9",
"CheckpointValidator": "addr_test1wr973hn59t44nvn6dsn5uge6lh9955uplpgw8s2pu6p70hcuhvhmt",
"MerkleRootTokenValidator": "addr_test1wrt7mljzzmtjpttu0ffzqp20xf2ctalffreywe755fwg6nc8kl20c",
"ReserveValidator": "addr_test1wpgffwhq7470l5wvyt4p7lxrnktwdsqzmprul7hjtnrs4sqh4flz3",
"IlliquidCirculationSupplyValidator": "addr_test1wqn2pkvvmesmxtfa4tz7w8gh8vumr52lpkrhcs4dkg30uqq77h5z4"
},
"validatorHashes": {
"CommitteeCandidateValidator": "302373499d90a56e0e7263a6a3ac7a9be4838b5036601b2577531b88",
"DsConfValidator": "e1132945595cc142f818150eb6689dd413f7a698bf489c2bdeac927a",
"DsInsertValidator": "718b1e949e52fc8fbaddadec81325f65b7cdc23ba5bfb960a0a04f26",
"VersionOracleValidator": "52ea46939c7463974192ff14e3cb8f4c1b858816dcc626846fd0e560",
"PermissionedCandidatesValidator": "ae022d4080221ac48a0583a757dd5c4f6abe85bc9f338c904df6a693",
"DParameterValidator": "57a7e11e9d6e15734d94052dfab5484773a6fbaba8304063af4d55a2",
"CommitteeHashValidator": "9725224b9ed670d285882ae52f0d7d2a71eb9182b98f4256180e009e",
"CheckpointValidator": "cbe8de742aeb59b27a6c274e233afdca5a5381f850e3c141e683e7df",
"MerkleRootTokenValidator": "d7edfe4216d720ad7c7a5220054f325585f7e948f24767d4a25c8d4f",
"ReserveValidator": "5094bae0f57cffd1cc22ea1f7cc39d96e6c002d847cffaf25cc70ac0",
"IlliquidCirculationSupplyValidator": "26a0d98cde61b32d3daac5e71d173b39b1d15f0d877c42adb222fe00"
},
"mintingPolicies": {
"DsConfPolicy": "cb9876d9ec40cc69adb42eba509244d5142048ebbc7326bad3124efa",
"CheckpointPolicy": "5a1d5ee6f5bd2a3856fbe44b59586babdf10b9ee1396473ee895f18f",
"FUELProxyPolicy": "51c738b499f9214329e9ec655d49cb5bb3bb19c0842998cb31d1224f",
"VersionOraclePolicy": "03031996a95b3fd511c5bae760bb185606e73af756421fe1fe83a2d8",
"PermissionedCandidatesPolicy": "e44f6251de81f6e572d8bb324dd955962a96b10da09e7abe5a7995ce",
"DParameterPolicy": "aca33dbecba1698ceb122a5a213fa7fb3d12fc7efd932117943d9f58",
"InitTokenPolicy": "0b2f719ae2b706c468808af38d62c4eda0d948ec3d04d0f916659019",
"CommitteeCertificateVerificationPolicy": "1c29334562bfc2bde51af1b02a1cc9bc8c5e944c4070b283ab420504",
"CommitteeOraclePolicy": "c62fb4be7a7e8a33aab734acc4c8eec7c594a570f721617170a377e0",
"FUELMintingPolicy": "d113a51cc9d9c02a06cf8985cd0570d3082e32f0f905851bfea8b711",
"FUELBurningPolicy": "0d6e224f7d25c9ed97143112b198bd8a60a76811a489b2160e57ae97",
"DsKeyPolicy": "5b7f2ef0de5553d125fadf364f8809098b9586197f703aab1410cc5f",
"MerkleRootTokenPolicy": "eb9e5f48ab84ef79c57620cb0ad8fc11a4c8f0a16679a4e5fce03ce7",
"ReserveAuthPolicy": "64eb1d817d6ca2b2a77dbf95e32a8da9abdb53b18de7d4e1c801345c",
"GovernancePolicy": "1ace0495e5f8f15703af7627904aa0842bbe8429c348b6606b4e0d0d",
"CommitteePlainEcdsaSecp256k1ATMSPolicy": "1c29334562bfc2bde51af1b02a1cc9bc8c5e944c4070b283ab420504"
}
}

0 comments on commit e276515

Please sign in to comment.