Skip to content
Merged
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
30 changes: 16 additions & 14 deletions solana/devnet-alpha/2025-10-20-deploy-bridge/.env
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,26 @@ ANCHOR_VERSION=0.31.0

# Variables for cloning Bridge repo
BRIDGE_REPO=https://github.com/base/bridge.git
BRIDGE_COMMIT=e9b5fe27280ad2345d823d42668810432b0651aa
BRIDGE_COMMIT=24b6bcaec94eac34524bcd0774dd6ec14dc3bf21

# Variables for deploying and sending transactions
DEPLOY_ENV=testnet-alpha
DEPLOYER_KP=~/.config/solana/id.json

# Signature of the deployWithMaxDataLen txs (used to generate the deployment artifacts)
BRIDGE_DEPLOY_SIGNATURE=
BASE_RELAYER_DEPLOY_SIGNATURE=
GAS_FEE_RECEIVER=Dz7RiPP83jmH1XQFqp45p3SQJWhfWFWNgRBCMhFPmQNP

# Variables for initializing the Bridge Solana program
BRIDGE_PROGRAM_ID=
GUARDIAN=
SOL_REMOTE_TOKEN=
BRIDGE_PROGRAM_ID=6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm
GUARDIAN=2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ # MCM Authority
SOL_REMOTE_TOKEN=0x003512146Fd54b71f926C7Fd4B7bd20Fc84E22c5
BRIDGE_EIP1559_TARGET=5_000_000
BRIDGE_EIP1559_DENOMINATOR=2
BRIDGE_EIP1559_WINDOW_DURATION_SECONDS=1
BRIDGE_EIP1559_MINIMUM_BASE_FEE=1
BRIDGE_GAS_PER_CALL=125_000
BRIDGE_GAS_COST_SCALER=1_000_000
BRIDGE_GAS_COST_SCALER_DP=1_000_000
BRIDGE_GAS_FEE_RECEIVER=2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72 # Deployer address
BRIDGE_GAS_FEE_RECEIVER=$(GAS_FEE_RECEIVER)
BRIDGE_PROTOCOL_BLOCK_INTERVAL_REQUIREMENT=300
BRIDGE_BUFFER_MAX_CALL_BUFFER_SIZE=8192 # 8KB
BRIDGE_BASE_ORACLE_THRESHOLD=2
Expand All @@ -34,8 +32,8 @@ BRIDGE_BASE_ORACLE_SIGNERS=0x20BFBCCC8aBaD55c8aA383a75838348A646eDbA0,0xfc85de3f
BRIDGE_PARTNER_ORACLE_REQUIRED_THRESHOLD=0

# Variables for initializing the Base Relayer Solana program
BASE_RELAYER_PROGRAM_ID=
GUARDIAN=
BASE_RELAYER_PROGRAM_ID=ETsFnoWdJK8N7VJW6XXjiciyB2xeQfCXMQWNa85Zi9cn
GUARDIAN=2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ # MCM Authority
BASE_RELAYER_EIP1559_TARGET=5_000_000
BASE_RELAYER_EIP1559_DENOMINATOR=2
BASE_RELAYER_EIP1559_WINDOW_DURATION_SECONDS=1
Expand All @@ -44,9 +42,13 @@ BASE_RELAYER_MIN_GAS_LIMIT_PER_MESSAGE=100_000
BASE_RELAYER_MAX_GAS_LIMIT_PER_MESSAGE=5_000_000
BASE_RELAYER_GAS_COST_SCALER=1_000_000
BASE_RELAYER_GAS_COST_SCALER_DP=1_000_000
BASE_RELAYER_GAS_FEE_RECEIVER=2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72 # Deployer address
BASE_RELAYER_GAS_FEE_RECEIVER=$(GAS_FEE_RECEIVER)

# Variables for printing the SOL vault PDA
# Variables for funding the SOL vault and the gas fee receiver
AUTHORITY=$(DEPLOYER_KP)
SOL_RECIPIENT= # SOL vault PDA
SOL_AMOUNT=0.1
SOL_VAULT=6HmCU5ywhbmWtvA3LAuq4t1yMpmU6y4g3LpbjvCS5kmf
SOL_AMOUNT=0.1

# Signatures of the set-upgrade-authority txs (used to generate the set-upgrade-authority artifacts)
SET_BRIDGE_UPGRADE_AUTHORITY_SIGNATURE=4oYJZxVrE38e31mRwfwB7QjqcTfnvk7BW4ebFMXnuxDB18vMHrxb8EM84NHwSDefqNgDgTxjy5TLhcynKxvr8H8e
SET_BASE_RELAYER_UPGRADE_AUTHORITY_SIGNATURE=2aBvRfVuPFstjwvLxqbmXN7cgecmhRk15nJZmdA8Q3kr1tRyd1ipc9Fz77zbn74JW2bnY9kRhraNmwuxA3SyxRqM
33 changes: 29 additions & 4 deletions solana/devnet-alpha/2025-10-20-deploy-bridge/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,36 @@ step5-print-sol-vault:
@echo "==> Step 5: Printing SOL vault..."
cd bridge/scripts && \
bun cli sol bridge sol-vault \
--bridge-program $(BRIDGE_PROGRAM_ID) \
--remote-token $(SOL_REMOTE_TOKEN)
--bridge-program $(BRIDGE_PROGRAM_ID)

# Step 6: Print SOL vault and fund it
# Step 6: Fund SOL vault
.PHONY: step6-fund-sol-vault
step6-fund-sol-vault:
@echo "==> Step 6: Funding SOL vault..."
make sol-transfer output=artifacts/fund-sol-vault.json
make sol-transfer SOL_RECIPIENT=$(SOL_VAULT) output=artifacts/fund-sol-vault.json

# Step 7: Fund the gas fee receiver
.PHONY: step7-fund-gas-fee-receiver
step7-fund-gas-fee-receiver:
@echo "==> Step 7: Funding gas fee receiver..."
make sol-transfer SOL_RECIPIENT=$(GAS_FEE_RECEIVER) output=artifacts/fund-gas-fee-receiver.json

# Step 8: Transfer upgrade authorities of the bridge and base relayer programs
.PHONY: step8-transfer-upgrade-authorities
step8-transfer-upgrade-authorities:
@echo "==> Step 8: Transferring upgrade authorities of the bridge and base relayer programs..."
make sol-program-set-upgrade-authority \
SOL_PROGRAM_ID=$(BRIDGE_PROGRAM_ID) \
NEW_UPGRADE_AUTHORITY=$(GUARDIAN)
make sol-program-show SOL_PROGRAM_ID=$(BRIDGE_PROGRAM_ID)
make sol-program-set-upgrade-authority \
SOL_PROGRAM_ID=$(BASE_RELAYER_PROGRAM_ID) \
NEW_UPGRADE_AUTHORITY=$(GUARDIAN)
make sol-program-show SOL_PROGRAM_ID=$(BASE_RELAYER_PROGRAM_ID)

# Step 9: Generate set-upgrade-authority artifacts (use solana explorer to get the signature of the set-upgrade-authority tx)
.PHONY: step9-generate-set-upgrade-authorities-artifacts
step9-generate-set-upgrade-authorities-artifacts:
@echo "==> Step 8: Generating set-upgrade-authorities artifacts..."
make sol-confirm SIG=$(SET_BRIDGE_UPGRADE_AUTHORITY_SIGNATURE) output=artifacts/set-bridge-upgrade-authority-artifacts.json
make sol-confirm SIG=$(SET_BASE_RELAYER_UPGRADE_AUTHORITY_SIGNATURE) output=artifacts/set-base-relayer-upgrade-authority-artifacts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
{
"confirmationStatus": "confirmed",
"transaction": {
"signatures": [
"V24Ff153Np2U5CGVfPVGWtVY883G9wfAoyXRv7mQFz5AVA2mM8hmBVGBhPhNwcHUfLYiEmVTshPWJj8YPesiF7G",
"4kK2SkCrT38HuSbXifut8rzwJ5bVUPUfnxk6LqBbgqX24ZK5ar8h3xbPnJXC39k9emABRGy4p63npsQ5DxC8xppU"
],
"message": {
"header": {
"numRequiredSignatures": 2,
"numReadonlySignedAccounts": 0,
"numReadonlyUnsignedAccounts": 4
},
"accountKeys": [
"2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72",
"ETsFnoWdJK8N7VJW6XXjiciyB2xeQfCXMQWNa85Zi9cn",
"231cgmSHMsD86HZaQQYp9Y6Zgzzg46o2xYJw4J4ecaxt",
"GbPeyrpcZx1QPnrB1igMPvDK7h6VFEhHR8JVaYGiGXb2",
"11111111111111111111111111111111",
"BPFLoaderUpgradeab1e11111111111111111111111",
"SysvarC1ock11111111111111111111111111111111",
"SysvarRent111111111111111111111111111111111"
],
"recentBlockhash": "B3SSeTnqwUYQMXZmzSMoQt7KnjTnpqq7S7WLqCSvNEk1",
"instructions": [
{
"programIdIndex": 4,
"accounts": [
0,
1
],
"data": "111184NuZo7gmbjwda8fGAim94roEJcdbYKd7Gdtpi6CbBByeanCr8u4EAFXLjnY2U8bjD",
"stackHeight": null
},
{
"programIdIndex": 5,
"accounts": [
0,
3,
1,
2,
7,
6,
4,
0
],
"data": "3Bxs42J4x6iEtSZM",
"stackHeight": null
}
]
}
},
"meta": {
"err": null,
"status": {
"Ok": null
},
"fee": 10000,
"preBalances": [
205032763880,
0,
2098391280,
0,
1,
1,
1169280,
1009200
],
"postBalances": [
205031612440,
1141440,
0,
2098391280,
1,
1,
1169280,
1009200
],
"innerInstructions": [
{
"index": 1,
"instructions": [
{
"programIdIndex": 4,
"accounts": [
0,
3,
2
],
"data": "11119qYqhtqT5NHTm27UYqYVeF4Lm2dwfwCnPkVvZ6nWdk5kZP2tzGt1VBLLyRd9W8hoWf",
"stackHeight": 2
}
]
}
],
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success",
"Program BPFLoaderUpgradeab1e11111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 invoke [2]",
"Program 11111111111111111111111111111111 success",
"Deployed program ETsFnoWdJK8N7VJW6XXjiciyB2xeQfCXMQWNa85Zi9cn",
"Program BPFLoaderUpgradeab1e11111111111111111111111 success"
],
"preTokenBalances": [],
"postTokenBalances": [],
"rewards": [],
"loadedAddresses": {
"writable": [],
"readonly": []
},
"computeUnitsConsumed": 2670
},
"blockTime": 1761084647,
"slot": 416191475
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
{
"confirmationStatus": "confirmed",
"transaction": {
"signatures": [
"5uHCbr3GRZqywghfi7mW5iaGxqBdw3BkMEpXcyQeADgYDBY8R7aAoBEdvV5eYKJEXpZoq3V3EybD3HfGjkzro3YM",
"4vqLMGm6kmERsRDSfA3cEPYEC4RnMm2ZdbiS7yYG5zA7S9Yz4tfRHTavfQgCCARsJgr6Hick1pa9SJykvuATYHd9"
],
"message": {
"header": {
"numRequiredSignatures": 2,
"numReadonlySignedAccounts": 0,
"numReadonlyUnsignedAccounts": 4
},
"accountKeys": [
"2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72",
"6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm",
"EkPiugm4hAm5pMPSoM9aTtDNxUdDXLcaVgttUQvksqkj",
"GxwFaRt1gSfS7XnVrg1h7iPsL8aUGSeYKYFEMsKPCEmz",
"11111111111111111111111111111111",
"BPFLoaderUpgradeab1e11111111111111111111111",
"SysvarC1ock11111111111111111111111111111111",
"SysvarRent111111111111111111111111111111111"
],
"recentBlockhash": "G95Y4bgACv87Gb9ddcMYZnUxLKgFhKm1PAVKFQowjSHq",
"instructions": [
{
"programIdIndex": 4,
"accounts": [
0,
1
],
"data": "111184NuZo7gmbjwda8fGAim94roEJcdbYKd7Gdtpi6CbBByeanCr8u4EAFXLjnY2U8bjD",
"stackHeight": null
},
{
"programIdIndex": 5,
"accounts": [
0,
2,
1,
3,
7,
6,
4,
0
],
"data": "3Bxs4WN6jLMpcx3h",
"stackHeight": null
}
]
}
},
"meta": {
"err": null,
"status": {
"Ok": null
},
"fee": 10000,
"preBalances": [
207133806600,
0,
0,
6120992880,
1,
1,
1169280,
1009200
],
"postBalances": [
207132655160,
1141440,
6120992880,
0,
1,
1,
1169280,
1009200
],
"innerInstructions": [
{
"index": 1,
"instructions": [
{
"programIdIndex": 4,
"accounts": [
0,
2,
3
],
"data": "111159HsydaU3uzqG2hq9Sx6KfvrezAjfEmE3BdaWEuGA82n6u1foDH3rgMpomPUey4oS7",
"stackHeight": 2
}
]
}
],
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success",
"Program BPFLoaderUpgradeab1e11111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 invoke [2]",
"Program 11111111111111111111111111111111 success",
"Deployed program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm",
"Program BPFLoaderUpgradeab1e11111111111111111111111 success"
],
"preTokenBalances": [],
"postTokenBalances": [],
"rewards": [],
"loadedAddresses": {
"writable": [],
"readonly": []
},
"computeUnitsConsumed": 2670
},
"blockTime": 1761084637,
"slot": 416191448
}
Loading