Skip to content

Commit 4ad3cb7

Browse files
committed
feat: noble custom genesis
- configure fiattokenfactory and tokenfactory - configure paramauthority - configure cctp - configure tariff
1 parent 04cfe45 commit 4ad3cb7

File tree

3 files changed

+325
-8
lines changed

3 files changed

+325
-8
lines changed

starship/charts/devnet/defaults.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,11 @@ defaultChains:
757757
hdPath: m/44'/118'/0'/0/0
758758
coinType: 118
759759
repo: https://github.com/noble-assets/noble
760+
scripts:
761+
createGenesis:
762+
file: scripts/noble/create-genesis.sh
763+
updateGenesis:
764+
file: scripts/noble/update-genesis.sh
760765
assets:
761766
- base: uusdc
762767
description: "USD Coin"

starship/charts/devnet/scripts/noble/create-genesis.sh

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,61 @@
22

33
set -eux
44

5-
DENOM="${DENOM:=uosmo}"
6-
COINS="${COINS:=100000000000000000uosmo}"
7-
CHAIN_ID="${CHAIN_ID:=osmosis}"
8-
CHAIN_BIN="${CHAIN_BIN:=osmosisd}"
9-
CHAIN_DIR="${CHAIN_DIR:=$HOME/.osmosisd}"
5+
DENOM="${DENOM:=uusdc}"
6+
COINS="${COINS:=100000000000000uusdc,100000000000000ustake}"
7+
CHAIN_ID="${CHAIN_ID:=noblelocal}"
8+
CHAIN_BIN="${CHAIN_BIN:=nobled}"
9+
CHAIN_DIR="${CHAIN_DIR:=$HOME/.nobled}"
1010
KEYS_CONFIG="${KEYS_CONFIG:=configs/keys.json}"
1111

1212
FAUCET_ENABLED="${FAUCET_ENABLED:=true}"
1313
NUM_VALIDATORS="${NUM_VALIDATORS:=1}"
1414
NUM_RELAYERS="${NUM_RELAYERS:=0}"
1515

16+
# FiatTokenFactory roles
17+
FIATTF_OWNER_KEY="fiattf_owner"
18+
FIATTF_OWNER_MNEMONIC="gesture inject test cycle original hollow east ridge hen combine junk child bacon zero hope comfort vacuum milk pitch cage oppose unhappy lunar seat"
19+
20+
FIATTF_MASTER_MINTER_KEY="fiattf_master_minter"
21+
FIATTF_MASTER_MINTER_MNEMONIC="maximum display century economy unlock van census kite error heart snow filter midnight usage egg venture cash kick motor survey drastic edge muffin visual"
22+
23+
FIATTF_MINTER_CONTROLLER_KEY="fiattf_minter_controller"
24+
FIATTF_MINTER_CONTROLLER_MNEMONIC="keep liar demand upon shed essence tip undo eagle run people strong sense another salute double peasant egg royal hair report winner student diamond"
25+
26+
FIATTF_MINTER_CONTROLLER2_KEY="fiattf_minter_controller2"
27+
FIATTF_MINTER_CONTROLLER2_MNEMONIC="morning person bachelor illegal inner note learn problem cement river half sentence junk evidence mercy intact step nasty cotton elite real unveil business drum"
28+
29+
FIATTF_MINTER_KEY="fiattf_minter"
30+
FIATTF_MINTER_MNEMONIC="shed spike wish soda inside awake satoshi fish length whisper garlic sketch diary trumpet tree nose stove tobacco vague target announce brave alley priority"
31+
32+
FIATTF_BLACKLISTER_KEY="fiattf_blacklister"
33+
FIATTF_BLACKLISTER_MNEMONIC="planet reunion diet obscure curious swim suit kitchen fiscal creek jeans doll disorder color gown sweet have search repair exhaust clap assault dwarf design"
34+
35+
FIATTF_PAUSER_KEY="fiattf_pauser"
36+
FIATTF_PAUSER_MNEMONIC="guilt juice tone exhibit vault stairs mesh often expect face search quality paddle broccoli hundred another elder range horror beef session found loop mobile"
37+
38+
# TokenFactory roles
39+
TF_OWNER_KEY="tf_owner"
40+
TF_OWNER_MNEMONIC="poverty pride inject trumpet candy quiz mixed junk cricket food include involve uphold gasp wish gas save occur genius shoe slight occur sudden cute"
41+
42+
TF_MASTER_MINTER_KEY="tf_master_minter"
43+
TF_MASTER_MINTER_MNEMONIC="belt cream catalog absurd hen toast ethics summer addict kick hood february spatial inmate cycle business double keep gravity private nose obvious phrase birth"
44+
45+
TF_MINTER_CONTROLLER_KEY="tf_minter_controller"
46+
TF_MINTER_CONTROLLER_MNEMONIC="spider silk peasant tobacco cactus range draft merry fashion trick modify scale width omit admit face off property enact upper drink obvious off used"
47+
48+
TF_MINTER_CONTROLLER2_KEY="tf_minter_controller2"
49+
TF_MINTER_CONTROLLER2_MNEMONIC="swear blossom hybrid write crash seven then ship brush market moral renew plug oval focus stairs brisk inner blue main barely broken burden fancy"
50+
51+
TF_MINTER_KEY="tf_minter"
52+
TF_MINTER_MNEMONIC="muffin clog joy echo hello size reform mention patient pumpkin enough inside danger talk wire home doctor bone ensure bind arrest dizzy magnet arrest"
53+
54+
TF_BLACKLISTER_KEY="tf_blacklister"
55+
TF_BLACKLISTER_MNEMONIC="gravity domain nothing stomach cousin print rally door bone ghost tuition opera witness paper color oak mistake toward current coach industry thought acid breeze"
56+
57+
TF_PAUSER_KEY="tf_pauser"
58+
TF_PAUSER_MNEMONIC="sniff tail rotate pelican snap spawn champion thought recycle body caution grain brass armed hawk goat champion sunset soul answer panel present open room"
59+
1660
# check if the binary has genesis subcommand or not, if not, set CHAIN_GENESIS_CMD to empty
1761
CHAIN_GENESIS_CMD=$($CHAIN_BIN 2>&1 | grep -q "genesis-related subcommands" && echo "genesis" || echo "")
1862

@@ -38,6 +82,44 @@ echo "Adding key...." $(jq -r ".keys[0].name" $KEYS_CONFIG)
3882
jq -r ".keys[0].mnemonic" $KEYS_CONFIG | $CHAIN_BIN keys add $(jq -r ".keys[0].name" $KEYS_CONFIG) --recover --keyring-backend="test"
3983
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $(jq -r .keys[0].name $KEYS_CONFIG) --keyring-backend="test") $COINS --keyring-backend="test"
4084

85+
# Add FiatTokenFactory role keys
86+
echo "Adding FiatTokenFactory role keys..."
87+
echo "$FIATTF_OWNER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_OWNER_KEY --recover --keyring-backend="test"
88+
echo "$FIATTF_MASTER_MINTER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_MASTER_MINTER_KEY --recover --keyring-backend="test"
89+
echo "$FIATTF_MINTER_CONTROLLER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_MINTER_CONTROLLER_KEY --recover --keyring-backend="test"
90+
echo "$FIATTF_MINTER_CONTROLLER2_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_MINTER_CONTROLLER2_KEY --recover --keyring-backend="test"
91+
echo "$FIATTF_MINTER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_MINTER_KEY --recover --keyring-backend="test"
92+
echo "$FIATTF_BLACKLISTER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_BLACKLISTER_KEY --recover --keyring-backend="test"
93+
echo "$FIATTF_PAUSER_MNEMONIC" | $CHAIN_BIN keys add $FIATTF_PAUSER_KEY --recover --keyring-backend="test"
94+
95+
# Add TokenFactory role keys
96+
echo "Adding TokenFactory role keys..."
97+
echo "$TF_OWNER_MNEMONIC" | $CHAIN_BIN keys add $TF_OWNER_KEY --recover --keyring-backend="test"
98+
echo "$TF_MASTER_MINTER_MNEMONIC" | $CHAIN_BIN keys add $TF_MASTER_MINTER_KEY --recover --keyring-backend="test"
99+
echo "$TF_MINTER_CONTROLLER_MNEMONIC" | $CHAIN_BIN keys add $TF_MINTER_CONTROLLER_KEY --recover --keyring-backend="test"
100+
echo "$TF_MINTER_CONTROLLER2_MNEMONIC" | $CHAIN_BIN keys add $TF_MINTER_CONTROLLER2_KEY --recover --keyring-backend="test"
101+
echo "$TF_MINTER_MNEMONIC" | $CHAIN_BIN keys add $TF_MINTER_KEY --recover --keyring-backend="test"
102+
echo "$TF_BLACKLISTER_MNEMONIC" | $CHAIN_BIN keys add $TF_BLACKLISTER_KEY --recover --keyring-backend="test"
103+
echo "$TF_PAUSER_MNEMONIC" | $CHAIN_BIN keys add $TF_PAUSER_KEY --recover --keyring-backend="test"
104+
105+
# Add genesis accounts for FiatTokenFactory roles
106+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_OWNER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
107+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_MASTER_MINTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
108+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_MINTER_CONTROLLER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
109+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_MINTER_CONTROLLER2_KEY --keyring-backend="test") $COINS --keyring-backend="test"
110+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_MINTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
111+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_BLACKLISTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
112+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $FIATTF_PAUSER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
113+
114+
# Add genesis accounts for TokenFactory roles
115+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_OWNER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
116+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_MASTER_MINTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
117+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_MINTER_CONTROLLER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
118+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_MINTER_CONTROLLER2_KEY --keyring-backend="test") $COINS --keyring-backend="test"
119+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_MINTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
120+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_BLACKLISTER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
121+
$CHAIN_BIN $CHAIN_GENESIS_CMD add-genesis-account $($CHAIN_BIN keys show -a $TF_PAUSER_KEY --keyring-backend="test") $COINS --keyring-backend="test"
122+
41123
if [[ $FAUCET_ENABLED == "false" && $NUM_RELAYERS -gt "-1" ]];
42124
then
43125
## Add relayers keys and delegate tokens

starship/charts/devnet/scripts/noble/update-genesis.sh

Lines changed: 233 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,244 @@
11
#!/bin/bash
22

3-
DENOM="${DENOM:=uosmo}"
4-
CHAIN_BIN="${CHAIN_BIN:=osmosisd}"
5-
CHAIN_DIR="${CHAIN_DIR:=$HOME/.osmosisd}"
3+
DENOM="${DENOM:=uusdc}"
4+
CHAIN_BIN="${CHAIN_BIN:=nobled}"
5+
CHAIN_DIR="${CHAIN_DIR:=$HOME/.nobled}"
66

77
set -eux
88

99
ls $CHAIN_DIR/config
1010

1111
echo "Update genesis.json file with updated local params"
12+
13+
# Get genesis account to use as primary owner
14+
GENESIS_ADDR=$(jq -r '.app_state.auth.accounts[0].address' $CHAIN_DIR/config/genesis.json)
15+
if [ -z "$GENESIS_ADDR" ]; then
16+
echo "ERROR: No genesis account found"
17+
exit 1
18+
fi
19+
20+
# Get FiatTokenFactory role addresses
21+
FIATTF_OWNER_ADDR=$($CHAIN_BIN keys show -a fiattf_owner --keyring-backend="test")
22+
FIATTF_MASTER_MINTER_ADDR=$($CHAIN_BIN keys show -a fiattf_master_minter --keyring-backend="test")
23+
FIATTF_MINTER_CONTROLLER_ADDR=$($CHAIN_BIN keys show -a fiattf_minter_controller --keyring-backend="test")
24+
FIATTF_MINTER_CONTROLLER2_ADDR=$($CHAIN_BIN keys show -a fiattf_minter_controller2 --keyring-backend="test")
25+
FIATTF_MINTER_ADDR=$($CHAIN_BIN keys show -a fiattf_minter --keyring-backend="test")
26+
FIATTF_BLACKLISTER_ADDR=$($CHAIN_BIN keys show -a fiattf_blacklister --keyring-backend="test")
27+
FIATTF_PAUSER_ADDR=$($CHAIN_BIN keys show -a fiattf_pauser --keyring-backend="test")
28+
29+
# Get TokenFactory role addresses
30+
TF_OWNER_ADDR=$($CHAIN_BIN keys show -a tf_owner --keyring-backend="test")
31+
TF_MASTER_MINTER_ADDR=$($CHAIN_BIN keys show -a tf_master_minter --keyring-backend="test")
32+
TF_MINTER_CONTROLLER_ADDR=$($CHAIN_BIN keys show -a tf_minter_controller --keyring-backend="test")
33+
TF_MINTER_CONTROLLER2_ADDR=$($CHAIN_BIN keys show -a tf_minter_controller2 --keyring-backend="test")
34+
TF_MINTER_ADDR=$($CHAIN_BIN keys show -a tf_minter --keyring-backend="test")
35+
TF_BLACKLISTER_ADDR=$($CHAIN_BIN keys show -a tf_blacklister --keyring-backend="test")
36+
TF_PAUSER_ADDR=$($CHAIN_BIN keys show -a tf_pauser --keyring-backend="test")
37+
38+
echo "Configure fiat-tokenfactory module..."
39+
jq --arg owner "$FIATTF_OWNER_ADDR" \
40+
--arg master_minter "$FIATTF_MASTER_MINTER_ADDR" \
41+
--arg minter_controller "$FIATTF_MINTER_CONTROLLER_ADDR" \
42+
--arg minter_controller2 "$FIATTF_MINTER_CONTROLLER2_ADDR" \
43+
--arg minter "$FIATTF_MINTER_ADDR" \
44+
--arg blacklister "$FIATTF_BLACKLISTER_ADDR" \
45+
--arg pauser "$FIATTF_PAUSER_ADDR" \
46+
--arg denom "$DENOM" \
47+
'.app_state."fiat-tokenfactory" = {
48+
"mintingDenom": {
49+
"denom": $denom
50+
},
51+
"paused": {
52+
"paused": false
53+
},
54+
"blacklistedList": [],
55+
"blacklister": {
56+
"address": $blacklister
57+
},
58+
"masterMinter": {
59+
"address": $master_minter
60+
},
61+
"minterControllerList": [
62+
{
63+
"minter": $minter,
64+
"controller": $minter_controller
65+
},
66+
{
67+
"minter": $minter,
68+
"controller": $minter_controller2
69+
}
70+
],
71+
"mintersList": [
72+
{
73+
"address": $minter,
74+
"allowance": {
75+
"denom": $denom,
76+
"amount": "100000000000000"
77+
}
78+
}
79+
],
80+
"owner": {
81+
"address": $owner
82+
},
83+
"pauser": {
84+
"address": $pauser
85+
},
86+
"params": {}
87+
}' $CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
88+
89+
echo "Configure tokenfactory module..."
90+
jq --arg owner "$TF_OWNER_ADDR" \
91+
--arg master_minter "$TF_MASTER_MINTER_ADDR" \
92+
--arg minter_controller "$TF_MINTER_CONTROLLER_ADDR" \
93+
--arg minter_controller2 "$TF_MINTER_CONTROLLER2_ADDR" \
94+
--arg minter "$TF_MINTER_ADDR" \
95+
--arg blacklister "$TF_BLACKLISTER_ADDR" \
96+
--arg pauser "$TF_PAUSER_ADDR" \
97+
'.app_state.tokenfactory = {
98+
"mintingDenom": {
99+
"denom": "ufrienzies"
100+
},
101+
"paused": {
102+
"paused": false
103+
},
104+
"blacklistedList": [],
105+
"blacklister": {
106+
"address": $blacklister
107+
},
108+
"masterMinter": {
109+
"address": $master_minter
110+
},
111+
"minterControllerList": [
112+
{
113+
"minter": $minter,
114+
"controller": $minter_controller
115+
},
116+
{
117+
"minter": $minter,
118+
"controller": $minter_controller2
119+
}
120+
],
121+
"mintersList": [
122+
{
123+
"address": $minter,
124+
"allowance": {
125+
"denom": "ufrienzies",
126+
"amount": "100000000000000"
127+
}
128+
}
129+
],
130+
"owner": {
131+
"address": $owner
132+
},
133+
"pauser": {
134+
"address": $pauser
135+
},
136+
"params": {}
137+
}' $CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
138+
139+
# Add denomination metadata
140+
echo "Add denomination metadata..."
141+
USDC_METADATA='{
142+
"base": "uusdc",
143+
"display": "usdc",
144+
"name": "usdc",
145+
"symbol": "USDC",
146+
"denom_units": [
147+
{
148+
"denom": "uusdc",
149+
"aliases": ["microusdc"],
150+
"exponent": "0"
151+
},
152+
{
153+
"denom": "usdc",
154+
"exponent": "6"
155+
}
156+
]
157+
}'
158+
159+
FRNZ_METADATA='{
160+
"base": "ufrienzies",
161+
"display": "ufrienzies",
162+
"name": "frienzies",
163+
"symbol": "FRNZ",
164+
"denom_units": [
165+
{
166+
"denom": "ufrienzies",
167+
"aliases": ["microfrienzies"],
168+
"exponent": "0"
169+
},
170+
{
171+
"denom": "mfrienzies",
172+
"aliases": ["millifrienzies"],
173+
"exponent": "3"
174+
},
175+
{
176+
"denom": "frienzies",
177+
"exponent": "6"
178+
}
179+
]
180+
}'
181+
182+
jq --argjson usdc "$USDC_METADATA" --argjson frnz "$FRNZ_METADATA" \
183+
'.app_state.bank.denom_metadata += [$usdc, $frnz]' \
184+
$CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
185+
186+
# Configure parameter authority
187+
echo "Configure parameter authority..."
188+
jq --arg addr "$GENESIS_ADDR" '
189+
.app_state.params.params.authority = $addr |
190+
.app_state.upgrade.params.authority = $addr
191+
' $CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
192+
193+
# Configure CCTP module
194+
echo "Configure CCTP module..."
195+
jq --arg addr "$GENESIS_ADDR" '.app_state.cctp = {
196+
"owner": $addr,
197+
"attester_manager": $addr,
198+
"pauser": $addr,
199+
"token_controller": $addr,
200+
"attester_list": [],
201+
"per_message_burn_limit_list": [
202+
{
203+
"amount": "99999999",
204+
"denom": "uusdc"
205+
}
206+
],
207+
"burning_and_minting_paused": {
208+
"paused": false
209+
},
210+
"sending_and_receiving_messages_paused": {
211+
"paused": false
212+
},
213+
"max_message_body_size": {
214+
"amount": "8000"
215+
},
216+
"next_available_nonce": {
217+
"nonce": "0"
218+
},
219+
"signature_threshold": {
220+
"amount": "2"
221+
},
222+
"token_pair_list": [],
223+
"used_nonces_list": [],
224+
"token_messenger_list": []
225+
}' $CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
226+
227+
# Configure tariff module
228+
echo "Configure tariff module..."
229+
jq --arg addr "$GENESIS_ADDR" '.app_state.tariff.params = {
230+
"share": "0.8",
231+
"distribution_entities": [
232+
{
233+
"address": $addr,
234+
"share": "1.0"
235+
}
236+
],
237+
"transfer_fee_bps": "0",
238+
"transfer_fee_max": "0",
239+
"transfer_fee_denom": "uusdc"
240+
}' $CHAIN_DIR/config/genesis.json > /tmp/genesis.json && mv /tmp/genesis.json $CHAIN_DIR/config/genesis.json
241+
12242
sed -i -e "s/\"stake\"/\"$DENOM\"/g" $CHAIN_DIR/config/genesis.json
13243
sed -i "s/\"time_iota_ms\": \".*\"/\"time_iota_ms\": \"$TIME_IOTA_MS\"/" $CHAIN_DIR/config/genesis.json
14244

0 commit comments

Comments
 (0)