Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
236 changes: 229 additions & 7 deletions deployment/cvm-deployment/user-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,19 @@ timeout_sec = 60
[mpc_node_config.node.ckd]
timeout_sec = 60

# Foreign-chain RPC URLs below target testnet networks (Bitcoin testnet,
# Abstract testnet, Starknet Sepolia). For mainnet, swap each provider's
# rpc_url for the corresponding mainnet endpoint, and any
# expected_network_fingerprint for the mainnet value shown beside it.
# Foreign-chain RPC providers. The active sections below target testnet
# networks; the mainnet variant is the commented block at the end — for a
# mainnet node, replace the testnet sections with it.
#
# Replace the YOUR_* placeholders with your own API keys and YOUR-SLUG with
# your QuickNode endpoint name. See "Foreign chain RPC providers" in
# docs/running-an-mpc-node-in-tdx-external-guide.md for details, and verify
# with crates/foreign-chain-config-tester before deploying.

[mpc_node_config.node.foreign_chains.bitcoin]
timeout_sec = 30
max_retries = 3
# Genesis block hash, as block explorers render it.
# mainnet: "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
expected_network_fingerprint = "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"

[mpc_node_config.node.foreign_chains.bitcoin.providers.public]
Expand All @@ -142,15 +145,234 @@ rpc_url = "https://bitcoin-testnet-rpc.publicnode.com"
[mpc_node_config.node.foreign_chains.abstract]
timeout_sec = 30
max_retries = 3
expected_network_fingerprint = "11124" # Abstract testnet; mainnet: "2741"
expected_network_fingerprint = "11124"

[mpc_node_config.node.foreign_chains.abstract.providers.abstract-testnet]
rpc_url = "https://api.testnet.abs.xyz"

[mpc_node_config.node.foreign_chains.abstract.providers.alchemy]
rpc_url = "https://abstract-testnet.g.alchemy.com/v2/{API_KEY}"

[mpc_node_config.node.foreign_chains.abstract.providers.alchemy.auth]
kind = "path"
placeholder = "{API_KEY}"
token = { val = "YOUR_ALCHEMY_API_KEY" }

[mpc_node_config.node.foreign_chains.abstract.providers.quicknode]
rpc_url = "https://YOUR-SLUG.abstract-testnet.quiknode.pro/{api_key}"

[mpc_node_config.node.foreign_chains.abstract.providers.quicknode.auth]
kind = "path"
placeholder = "{api_key}"
token = { val = "YOUR_QUICKNODE_API_KEY" }

[mpc_node_config.node.foreign_chains.starknet]
timeout_sec = 30
max_retries = 3
expected_network_fingerprint = "0x534e5f5345504f4c4941" # SN_SEPOLIA; mainnet: "0x534e5f4d41494e"
expected_network_fingerprint = "0x534e5f5345504f4c4941" # SN_SEPOLIA

[mpc_node_config.node.foreign_chains.starknet.providers.publicnode]
rpc_url = "https://starknet-sepolia-rpc.publicnode.com"

[mpc_node_config.node.foreign_chains.starknet.providers.alchemy]
rpc_url = "https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_10/{API_KEY}"

[mpc_node_config.node.foreign_chains.starknet.providers.alchemy.auth]
kind = "path"
placeholder = "{API_KEY}"
token = { val = "YOUR_ALCHEMY_API_KEY" }

[mpc_node_config.node.foreign_chains.starknet.providers.quicknode]
rpc_url = "https://YOUR-SLUG.strk-sepolia.quiknode.pro/{api_key}"

[mpc_node_config.node.foreign_chains.starknet.providers.quicknode.auth]
kind = "path"
placeholder = "{api_key}"
token = { val = "YOUR_QUICKNODE_API_KEY" }

[mpc_node_config.node.foreign_chains.aptos]
timeout_sec = 30
max_retries = 3
expected_network_fingerprint = "2" # Aptos ledger chain id

[mpc_node_config.node.foreign_chains.aptos.providers.public]
rpc_url = "https://fullnode.testnet.aptoslabs.com/v1"

[mpc_node_config.node.foreign_chains.aptos.providers.alchemy]
rpc_url = "https://aptos-testnet.g.alchemy.com/v2/{API_KEY}/v1"

[mpc_node_config.node.foreign_chains.aptos.providers.alchemy.auth]
kind = "path"
placeholder = "{API_KEY}"
token = { val = "YOUR_ALCHEMY_API_KEY" }

[mpc_node_config.node.foreign_chains.aptos.providers.quicknode]
rpc_url = "https://YOUR-SLUG.aptos-testnet.quiknode.pro/{api_key}/v1"

[mpc_node_config.node.foreign_chains.aptos.providers.quicknode.auth]
kind = "path"
placeholder = "{api_key}"
token = { val = "YOUR_QUICKNODE_API_KEY" }

[mpc_node_config.node.foreign_chains.aptos.providers.geomi]
rpc_url = "https://api.testnet.aptoslabs.com/v1"

[mpc_node_config.node.foreign_chains.aptos.providers.geomi.auth]
kind = "header"
name = "Authorization"
scheme = "Bearer"
token = { val = "YOUR_GEOMI_API_KEY" }

# Sui speaks gRPC: keys go in headers, never in the URL (path/query auth is
# not supported by the gRPC client).
[mpc_node_config.node.foreign_chains.sui]
timeout_sec = 30
max_retries = 3
# Genesis checkpoint digest.
expected_network_fingerprint = "69WiPg3DAQiwdxfncX6wYQ2siKwAe6L9BZthQea3JNMD"

[mpc_node_config.node.foreign_chains.sui.providers.public]
rpc_url = "https://archive.testnet.sui.io"

[mpc_node_config.node.foreign_chains.sui.providers.public.auth]
kind = "none"

[mpc_node_config.node.foreign_chains.sui.providers.alchemy]
rpc_url = "https://sui-testnet.g.alchemy.com"

[mpc_node_config.node.foreign_chains.sui.providers.alchemy.auth]
kind = "header"
name = "Authorization"
scheme = "Bearer"
token = { val = "YOUR_ALCHEMY_API_KEY" }

[mpc_node_config.node.foreign_chains.sui.providers.quicknode]
rpc_url = "https://YOUR-SLUG.sui-testnet.quiknode.pro:9000"

[mpc_node_config.node.foreign_chains.sui.providers.quicknode.auth]
kind = "header"
name = "x-token"
token = { val = "YOUR_QUICKNODE_API_KEY" }

# ─── Mainnet variant ─────────────────────────────────────────────────────────

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having separate sections is much better, thanks!

# For a mainnet node, replace the testnet foreign_chains sections above with:
#
# [mpc_node_config.node.foreign_chains.bitcoin]
# timeout_sec = 30
# max_retries = 3
# # Genesis block hash, as block explorers render it.
# expected_network_fingerprint = "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
#
# [mpc_node_config.node.foreign_chains.bitcoin.providers.public]
# rpc_url = "https://bitcoin-rpc.publicnode.com"
#
# [mpc_node_config.node.foreign_chains.abstract]
# timeout_sec = 30
# max_retries = 3
# expected_network_fingerprint = "2741"
#
# [mpc_node_config.node.foreign_chains.abstract.providers.abstract-mainnet]
# rpc_url = "https://api.mainnet.abs.xyz"
#
# [mpc_node_config.node.foreign_chains.abstract.providers.alchemy]
# rpc_url = "https://abstract-mainnet.g.alchemy.com/v2/{API_KEY}"
#
# [mpc_node_config.node.foreign_chains.abstract.providers.alchemy.auth]
# kind = "path"
# placeholder = "{API_KEY}"
# token = { val = "YOUR_ALCHEMY_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.abstract.providers.quicknode]
# rpc_url = "https://YOUR-SLUG.abstract-mainnet.quiknode.pro/{api_key}"
#
# [mpc_node_config.node.foreign_chains.abstract.providers.quicknode.auth]
# kind = "path"
# placeholder = "{api_key}"
# token = { val = "YOUR_QUICKNODE_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.starknet]
# timeout_sec = 30
# max_retries = 3
# expected_network_fingerprint = "0x534e5f4d41494e" # SN_MAIN
#
# [mpc_node_config.node.foreign_chains.starknet.providers.publicnode]
# rpc_url = "https://starknet-rpc.publicnode.com"
#
# [mpc_node_config.node.foreign_chains.starknet.providers.alchemy]
# rpc_url = "https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_10/{API_KEY}"
#
# [mpc_node_config.node.foreign_chains.starknet.providers.alchemy.auth]
# kind = "path"
# placeholder = "{API_KEY}"
# token = { val = "YOUR_ALCHEMY_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.starknet.providers.quicknode]
# rpc_url = "https://YOUR-SLUG.strk-mainnet.quiknode.pro/{api_key}"
#
# [mpc_node_config.node.foreign_chains.starknet.providers.quicknode.auth]
# kind = "path"
# placeholder = "{api_key}"
# token = { val = "YOUR_QUICKNODE_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.aptos]
# timeout_sec = 30
# max_retries = 3
# expected_network_fingerprint = "1" # Aptos ledger chain id
#
# [mpc_node_config.node.foreign_chains.aptos.providers.public]
# rpc_url = "https://fullnode.mainnet.aptoslabs.com/v1"
#
# [mpc_node_config.node.foreign_chains.aptos.providers.alchemy]
# rpc_url = "https://aptos-mainnet.g.alchemy.com/v2/{API_KEY}/v1"
#
# [mpc_node_config.node.foreign_chains.aptos.providers.alchemy.auth]
# kind = "path"
# placeholder = "{API_KEY}"
# token = { val = "YOUR_ALCHEMY_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.aptos.providers.quicknode]
# rpc_url = "https://YOUR-SLUG.aptos-mainnet.quiknode.pro/{api_key}/v1"
#
# [mpc_node_config.node.foreign_chains.aptos.providers.quicknode.auth]
# kind = "path"
# placeholder = "{api_key}"
# token = { val = "YOUR_QUICKNODE_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.aptos.providers.geomi]
# rpc_url = "https://api.mainnet.aptoslabs.com/v1"
#
# [mpc_node_config.node.foreign_chains.aptos.providers.geomi.auth]
# kind = "header"
# name = "Authorization"
# scheme = "Bearer"
# token = { val = "YOUR_GEOMI_API_KEY" }
#
# # Sui speaks gRPC: keys go in headers, never in the URL.
# [mpc_node_config.node.foreign_chains.sui]
# timeout_sec = 30
# max_retries = 3
# # Genesis checkpoint digest.
# expected_network_fingerprint = "4btiuiMPvEENsttpZC7CZ53DruC3MAgfznDbASZ7DR6S"
#
# [mpc_node_config.node.foreign_chains.sui.providers.public]
# rpc_url = "https://archive.mainnet.sui.io"
#
# [mpc_node_config.node.foreign_chains.sui.providers.public.auth]
# kind = "none"
#
# [mpc_node_config.node.foreign_chains.sui.providers.alchemy]
# rpc_url = "https://sui-mainnet.g.alchemy.com"
#
# [mpc_node_config.node.foreign_chains.sui.providers.alchemy.auth]
# kind = "header"
# name = "Authorization"
# scheme = "Bearer"
# token = { val = "YOUR_ALCHEMY_API_KEY" }
#
# [mpc_node_config.node.foreign_chains.sui.providers.quicknode]
# rpc_url = "https://YOUR-SLUG.sui-mainnet.quiknode.pro:9000"
#
# [mpc_node_config.node.foreign_chains.sui.providers.quicknode.auth]
# kind = "header"
# name = "x-token"
# token = { val = "YOUR_QUICKNODE_API_KEY" }
Loading