From 56614c2fe1a9759d5892e5e5ed401c1b13491ba8 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:09:10 -0700 Subject: [PATCH 1/7] Use the new official SPL release URL --- pkg/solana/genesis/assets/genesis.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index be988dc..b1a54ed 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -33,8 +33,8 @@ fetch-program() { ( set -x curl -s -S -L --retry 5 --retry-delay 2 --retry-connrefused \ - -o "$so" \ - "https://github.com/solana-labs/solana-program-library/releases/download/$name-v$version/$so_name" + -o "$so" \ + "https://github.com/solana-program/$name/releases/download/program@v$version/$so_name" ) mkdir -p ~/.cache/solana-spl From 1aacff5803728e8edd9761186f3e89f561dae496 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:09:54 -0700 Subject: [PATCH 2/7] Upgrade to SPL token-2022 v8.0.0 --- pkg/solana/genesis/assets/genesis.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index b1a54ed..7f93b78 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -63,7 +63,7 @@ step::010::install-dependencies() { step::020::fetch-all-programs() { fetch-program token 3.5.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111 - fetch-program token-2022 0.9.0 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111 + fetch-program token-2022 8.0.0 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111 fetch-program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111 fetch-program memo 3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111 fetch-program associated-token-account 1.1.2 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111 From 64ee4d9ee546f8a650d8786d2195dc0e6cabbb09 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:18:21 -0700 Subject: [PATCH 3/7] Make a distinction for SPL programs --- pkg/solana/genesis/assets/genesis.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index 7f93b78..1c74f14 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -7,7 +7,7 @@ upgradeableLoader=BPFLoaderUpgradeab1e11111111111111111111111 genesis_args=() -fetch-program() { +fetch-spl-program() { local name=$1 local version=$2 local address=$3 @@ -61,13 +61,13 @@ step::010::install-dependencies() { svmkit::apt::get install "${PACKAGE_LIST[@]}" } -step::020::fetch-all-programs() { - fetch-program token 3.5.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111 - fetch-program token-2022 8.0.0 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111 - fetch-program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111 - fetch-program memo 3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111 - fetch-program associated-token-account 1.1.2 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111 - fetch-program feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111 +step::020::fetch-spl-programs() { + fetch-spl-program token 3.5.0 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA BPFLoader2111111111111111111111111111111111 + fetch-spl-program token-2022 8.0.0 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb BPFLoaderUpgradeab1e11111111111111111111111 + fetch-spl-program memo 1.0.0 Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo BPFLoader1111111111111111111111111111111111 + fetch-spl-program memo 3.0.0 MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr BPFLoader2111111111111111111111111111111111 + fetch-spl-program associated-token-account 1.1.2 ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL BPFLoader2111111111111111111111111111111111 + fetch-spl-program feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111 } step::030::write-primordial-accounts-file() { From 1df22ebdcbd6dc9cce47a93e295c0cc8df8cfa01 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:28:02 -0700 Subject: [PATCH 4/7] Install new core BPF programs for Agave --- pkg/solana/genesis/assets/genesis.sh | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index 1c74f14..1c86c1c 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -42,6 +42,43 @@ fetch-spl-program() { fi } +fetch-core-program() { + local name=$1 + local version=$2 + local address=$3 + local loader=$4 + + local so=core-bpf-$name-$version.so + + if [[ $loader == "$upgradeableLoader" ]]; then + genesis_args+=(--upgradeable-program "$address" "$loader" "$so" none) + else + genesis_args+=(--bpf-program "$address" "$loader" "$so") + fi + + if [[ -r $so ]]; then + return + fi + + if [[ -r ~/.cache/solana-core-bpf/$so ]]; then + cp ~/.cache/solana-core-bpf/"$so" "$so" + else + echo "Downloading $name $version" + local so_name="solana_${name//-/_}_program.so" + ( + set -x + curl -s -S -L --retry 5 --retry-delay 2 --retry-connrefused \ + -o "$so" \ + "https://github.com/solana-program/$name/releases/download/program%40$version/$so_name" + ) + + mkdir -p ~/.cache/solana-core-bpf + cp "$so" ~/.cache/solana-core-bpf/"$so" + fi +} + + + step::000::wait-for-a-stable-environment() { cloud-init::wait-for-stable-environment } @@ -70,6 +107,13 @@ step::020::fetch-spl-programs() { fetch-spl-program feature-proposal 1.0.0 Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse BPFLoader2111111111111111111111111111111111 } +step::025::fetch-core-programs() { + fetch-core-program address-lookup-table 3.0.0 AddressLookupTab1e1111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 + fetch-core-program config 3.0.0 Config1111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 + fetch-core-program feature-gate 0.0.1 Feature111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 + fetch-core-program stake 1.0.0 Stake11111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 +} + step::030::write-primordial-accounts-file() { svmkit::sudo cp -f primordial.yaml /home/sol/primordial.yaml svmkit::sudo chown sol:sol /home/sol/primordial.yaml From 7ee1cd86dd0c33d2b2c3014138308e2d7a2f9be8 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:44:00 -0700 Subject: [PATCH 5/7] Refactor BPF program download --- pkg/solana/genesis/assets/genesis.sh | 79 ++++++++++++---------------- 1 file changed, 35 insertions(+), 44 deletions(-) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index 1c86c1c..5305886 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -7,13 +7,22 @@ upgradeableLoader=BPFLoaderUpgradeab1e11111111111111111111111 genesis_args=() -fetch-spl-program() { +fetch-program() { + local prefix=$1 + shift local name=$1 - local version=$2 - local address=$3 - local loader=$4 - - local so=spl_$name-$version.so + shift + local version=$1 + shift + local address=$1 + shift + local loader=$1 + shift + local url=$1 + shift + + local so=$prefix-$name-$version.so + local cachedir="$HOME/.cache/solana-$prefix" if [[ $loader == "$upgradeableLoader" ]]; then genesis_args+=(--upgradeable-program "$address" "$loader" "$so" none) @@ -25,59 +34,41 @@ fetch-spl-program() { return fi - if [[ -r ~/.cache/solana-spl/$so ]]; then - cp ~/.cache/solana-spl/"$so" "$so" + if [[ -r "$cachedir/$so" ]]; then + cp "$cachedir/$so" "$so" else echo "Downloading $name $version" - local so_name="spl_${name//-/_}.so" ( set -x curl -s -S -L --retry 5 --retry-delay 2 --retry-connrefused \ - -o "$so" \ - "https://github.com/solana-program/$name/releases/download/program@v$version/$so_name" + -o "$so" "$url" + ) - mkdir -p ~/.cache/solana-spl - cp "$so" ~/.cache/solana-spl/"$so" + mkdir -p "$cachedir" + cp "$so" "$cachedir/$so" fi } fetch-core-program() { - local name=$1 - local version=$2 - local address=$3 - local loader=$4 + local prefix="core-bpf" + local name="$1" + local version="$2" + local so_name="solana_${name//-/_}_program.so" + local url="https://github.com/solana-program/$name/releases/download/program%40$version/$so_name" - local so=core-bpf-$name-$version.so - - if [[ $loader == "$upgradeableLoader" ]]; then - genesis_args+=(--upgradeable-program "$address" "$loader" "$so" none) - else - genesis_args+=(--bpf-program "$address" "$loader" "$so") - fi - - if [[ -r $so ]]; then - return - fi - - if [[ -r ~/.cache/solana-core-bpf/$so ]]; then - cp ~/.cache/solana-core-bpf/"$so" "$so" - else - echo "Downloading $name $version" - local so_name="solana_${name//-/_}_program.so" - ( - set -x - curl -s -S -L --retry 5 --retry-delay 2 --retry-connrefused \ - -o "$so" \ - "https://github.com/solana-program/$name/releases/download/program%40$version/$so_name" - ) - - mkdir -p ~/.cache/solana-core-bpf - cp "$so" ~/.cache/solana-core-bpf/"$so" - fi + fetch-program "$prefix" "${@}" "$url" } +fetch-spl-program() { + local prefix="spl" + local name="$1" + local version="$2" + local so_name="${prefix}_${name//-/_}.so" + local url="https://github.com/solana-program/$name/releases/download/program@v$version/$so_name" + fetch-program "$prefix" "${@}" "$url" +} step::000::wait-for-a-stable-environment() { cloud-init::wait-for-stable-environment From 0f91b24dfc0f0f11c0103efa843382cb62469b93 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 23:06:07 -0700 Subject: [PATCH 6/7] Make sure we downloaded an eBPF program --- pkg/solana/genesis/assets/genesis.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index 5305886..7f539e1 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -48,6 +48,8 @@ fetch-program() { mkdir -p "$cachedir" cp "$so" "$cachedir/$so" fi + + file "$so" | grep eBPF >/dev/null || log::fatal "$so doesn't appear to contain an eBPF program" } fetch-core-program() { From 0b2bc6643d8b75d35cc8da600575d0ca2cb3d1a0 Mon Sep 17 00:00:00 2001 From: Alexander Guy Date: Sun, 21 Sep 2025 22:58:47 -0700 Subject: [PATCH 7/7] Fix inconsistent core-bpf release versions --- pkg/solana/genesis/assets/genesis.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/solana/genesis/assets/genesis.sh b/pkg/solana/genesis/assets/genesis.sh index 7f539e1..27cfc31 100644 --- a/pkg/solana/genesis/assets/genesis.sh +++ b/pkg/solana/genesis/assets/genesis.sh @@ -103,8 +103,8 @@ step::020::fetch-spl-programs() { step::025::fetch-core-programs() { fetch-core-program address-lookup-table 3.0.0 AddressLookupTab1e1111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 fetch-core-program config 3.0.0 Config1111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 - fetch-core-program feature-gate 0.0.1 Feature111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 - fetch-core-program stake 1.0.0 Stake11111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 + fetch-core-program feature-gate v0.0.1 Feature111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 + fetch-core-program stake v1.0.0 Stake11111111111111111111111111111111111111 BPFLoaderUpgradeab1e11111111111111111111111 } step::030::write-primordial-accounts-file() {