Repository: solana-labs/solana-program-library
Pull request #6182 (2024-01-25 21:35:03)

Update solana dependency version to allow 2.0.0
There are transitive dependencies from the [solana monorepo](TODO) that lead to split dependencies when the monorepo version number is bumped to 2.0. For example:
```
solana-account-decoder v2.0.0 
├── solana-config-program v2.0.0 
│   ├── solana-program-runtime v2.0.0 
│   │   ├── solana-measure v2.0.0 
│   │   │   └── solana-sdk v2.0.0 
│   │   │       ├── solana-program v2.0.0       <--------
├── spl-token v4.0.0
│   ├── solana-program v1.17.14                 <--------
```

This leads to type incompatibilities. 


Patch:
diff --git a/account-compression/programs/noop/Cargo.toml b/account-compression/programs/noop/Cargo.toml
index 545ac6c7c..ea630c32c 100644
--- a/account-compression/programs/noop/Cargo.toml
+++ b/account-compression/programs/noop/Cargo.toml
@@ -16,4 +16,4 @@ cpi = ["no-entrypoint"]
 default = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
diff --git a/associated-token-account/program/Cargo.toml b/associated-token-account/program/Cargo.toml
index bab7c8370..ee8be510b 100644
--- a/associated-token-account/program/Cargo.toml
+++ b/associated-token-account/program/Cargo.toml
@@ -16,7 +16,7 @@ assert_matches = "1.5.0"
 borsh = "0.10"
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
 thiserror = "1.0"
diff --git a/binary-option/program/Cargo.toml b/binary-option/program/Cargo.toml
index 6da509517..6405432d0 100644
--- a/binary-option/program/Cargo.toml
+++ b/binary-option/program/Cargo.toml
@@ -9,7 +9,7 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 thiserror = "1.0"
 spl-token = {version = "4.0", path = "../../token/program", features = ["no-entrypoint"]}
 arrayref = "0.3.7"
diff --git a/binary-oracle-pair/program/Cargo.toml b/binary-oracle-pair/program/Cargo.toml
index 9f74978e6..389ce7f66 100644
--- a/binary-oracle-pair/program/Cargo.toml
+++ b/binary-oracle-pair/program/Cargo.toml
@@ -13,15 +13,15 @@ test-sbf = []
 [dependencies]
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [ "no-entrypoint" ] }
 thiserror = "1.0"
 uint = "0.9"
 borsh = "0.10"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/ci/solana-version.sh b/ci/solana-version.sh
index dbb7383cb..a3cd1ef06 100755
--- a/ci/solana-version.sh
+++ b/ci/solana-version.sh
@@ -14,6 +14,9 @@
 if [[ -n $SOLANA_VERSION ]]; then
   solana_version="$SOLANA_VERSION"
 else
+  # This file is now out of sync with the versions in Cargo.toml.
+  # https://github.com/solana-labs/solana-program-library/pull/6182
+  # This will require some manual cleanup the next time the version is updated.
   solana_version=v1.17.13
 fi
 
diff --git a/examples/rust/cross-program-invocation/Cargo.toml b/examples/rust/cross-program-invocation/Cargo.toml
index 7c3c56800..e8e3a8df1 100644
--- a/examples/rust/cross-program-invocation/Cargo.toml
+++ b/examples/rust/cross-program-invocation/Cargo.toml
@@ -13,11 +13,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/examples/rust/custom-heap/Cargo.toml b/examples/rust/custom-heap/Cargo.toml
index 69cb9fcc5..31a9d070e 100644
--- a/examples/rust/custom-heap/Cargo.toml
+++ b/examples/rust/custom-heap/Cargo.toml
@@ -15,11 +15,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/examples/rust/logging/Cargo.toml b/examples/rust/logging/Cargo.toml
index e3cf0b844..eeaf48eff 100644
--- a/examples/rust/logging/Cargo.toml
+++ b/examples/rust/logging/Cargo.toml
@@ -13,11 +13,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/examples/rust/sysvar/Cargo.toml b/examples/rust/sysvar/Cargo.toml
index ab68a5179..0de7095af 100644
--- a/examples/rust/sysvar/Cargo.toml
+++ b/examples/rust/sysvar/Cargo.toml
@@ -13,11 +13,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/examples/rust/transfer-lamports/Cargo.toml b/examples/rust/transfer-lamports/Cargo.toml
index 0303b531e..103b9f789 100644
--- a/examples/rust/transfer-lamports/Cargo.toml
+++ b/examples/rust/transfer-lamports/Cargo.toml
@@ -12,11 +12,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/examples/rust/transfer-tokens/Cargo.toml b/examples/rust/transfer-tokens/Cargo.toml
index 3717a3874..c16c26cad 100644
--- a/examples/rust/transfer-tokens/Cargo.toml
+++ b/examples/rust/transfer-tokens/Cargo.toml
@@ -12,12 +12,12 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../../token/program", features = [ "no-entrypoint" ] }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/feature-gate/program/Cargo.toml b/feature-gate/program/Cargo.toml
index 0e8ea6a4b..3bcaaa7a6 100644
--- a/feature-gate/program/Cargo.toml
+++ b/feature-gate/program/Cargo.toml
@@ -13,12 +13,12 @@ test-sbf = []
 
 [dependencies]
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-program-error = { version = "0.3.0", path = "../../libraries/program-error" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/feature-proposal/cli/Cargo.toml b/feature-proposal/cli/Cargo.toml
index 1d356e81a..065bf62da 100644
--- a/feature-proposal/cli/Cargo.toml
+++ b/feature-proposal/cli/Cargo.toml
@@ -10,11 +10,11 @@ edition = "2021"
 [dependencies]
 chrono = "0.4.32"
 clap = "2.33.3"
-solana-clap-utils = "1.17.13"
-solana-cli-config = "1.17.13"
-solana-client = "1.17.13"
-solana-logger = "1.17.13"
-solana-sdk = "1.17.13"
+solana-clap-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-feature-proposal = { version = "1.0", path = "../program", features = ["no-entrypoint"] }
 
 [[bin]]
diff --git a/feature-proposal/program/Cargo.toml b/feature-proposal/program/Cargo.toml
index 46d9ad7e5..59b6cbdec 100644
--- a/feature-proposal/program/Cargo.toml
+++ b/feature-proposal/program/Cargo.toml
@@ -13,12 +13,12 @@ test-sbf = []
 
 [dependencies]
 borsh = "0.10"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/governance/addin-api/Cargo.toml b/governance/addin-api/Cargo.toml
index 6d8ffa964..23db0a882 100644
--- a/governance/addin-api/Cargo.toml
+++ b/governance/addin-api/Cargo.toml
@@ -10,4 +10,4 @@ edition = "2021"
 [dependencies]
 borsh = "0.10"
 spl-governance-tools = { version = "0.1.4", path = "../tools" }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
diff --git a/governance/addin-mock/program/Cargo.toml b/governance/addin-mock/program/Cargo.toml
index af1d4636c..9f3d279f5 100644
--- a/governance/addin-mock/program/Cargo.toml
+++ b/governance/addin-mock/program/Cargo.toml
@@ -19,7 +19,7 @@ num-derive = "0.4"
 num-traits = "0.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../../token/program", features = [
     "no-entrypoint",
 ] }
@@ -31,8 +31,8 @@ thiserror = "1.0"
 [dev-dependencies]
 assert_matches = "1.5.0"
 proptest = "1.4"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-governance-test-sdk = { version = "0.1.4", path = "../../test-sdk" }
 
 
diff --git a/governance/chat/program/Cargo.toml b/governance/chat/program/Cargo.toml
index 7408915fa..573267f38 100644
--- a/governance/chat/program/Cargo.toml
+++ b/governance/chat/program/Cargo.toml
@@ -19,7 +19,7 @@ num-derive = "0.4"
 num-traits = "0.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../../token/program", features = [
     "no-entrypoint",
 ] }
@@ -34,8 +34,8 @@ thiserror = "1.0"
 [dev-dependencies]
 assert_matches = "1.5.0"
 proptest = "1.4"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-governance-test-sdk = { version = "0.1.4", path = "../../test-sdk" }
 spl-governance-addin-mock = { version = "0.1.4", path = "../../addin-mock/program" }
 
diff --git a/governance/program/Cargo.toml b/governance/program/Cargo.toml
index c5abd60a9..71ff48c83 100644
--- a/governance/program/Cargo.toml
+++ b/governance/program/Cargo.toml
@@ -19,7 +19,7 @@ num-derive = "0.4"
 num-traits = "0.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [
     "no-entrypoint",
 ] }
@@ -31,8 +31,8 @@ thiserror = "1.0"
 assert_matches = "1.5.0"
 base64 = "0.21"
 proptest = "1.4"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-governance-test-sdk = { version = "0.1.4", path = "../test-sdk" }
 spl-governance-addin-mock = { version = "0.1.4", path = "../addin-mock/program" }
 
diff --git a/governance/tools/Cargo.toml b/governance/tools/Cargo.toml
index 9d7393617..9c1306ac2 100644
--- a/governance/tools/Cargo.toml
+++ b/governance/tools/Cargo.toml
@@ -15,7 +15,7 @@ num-derive = "0.4"
 num-traits = "0.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [
     "no-entrypoint",
 ] }
diff --git a/instruction-padding/program/Cargo.toml b/instruction-padding/program/Cargo.toml
index 1565a66d6..7c0e42897 100644
--- a/instruction-padding/program/Cargo.toml
+++ b/instruction-padding/program/Cargo.toml
@@ -14,11 +14,11 @@ test-sbf = []
 
 [dependencies]
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/libraries/discriminator/Cargo.toml b/libraries/discriminator/Cargo.toml
index 2e06652a1..bdb12e70e 100644
--- a/libraries/discriminator/Cargo.toml
+++ b/libraries/discriminator/Cargo.toml
@@ -13,7 +13,7 @@ borsh = ["dep:borsh"]
 [dependencies]
 borsh = { version = "0.10", optional = true }
 bytemuck = { version = "1.14.1", features = ["derive"] }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator-derive = { version = "0.1.0", path = "./derive" }
 
 [lib]
diff --git a/libraries/math/Cargo.toml b/libraries/math/Cargo.toml
index a63c936c8..9344c9cd3 100644
--- a/libraries/math/Cargo.toml
+++ b/libraries/math/Cargo.toml
@@ -15,14 +15,14 @@ test-sbf = []
 borsh = "0.10"
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 thiserror = "1.0"
 uint = "0.9"
 
 [dev-dependencies]
 proptest = "1.4.0"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 libm = "0.2.8"
 
 [lib]
diff --git a/libraries/pod/Cargo.toml b/libraries/pod/Cargo.toml
index d85a86632..b5223002b 100644
--- a/libraries/pod/Cargo.toml
+++ b/libraries/pod/Cargo.toml
@@ -16,8 +16,8 @@ base64 = { version = "0.21.7", optional = true }
 borsh = { version = "0.10", optional = true }
 bytemuck = { version = "1.14.1" }
 serde = { version = "1.0.195", optional = true }
-solana-program = "1.17.13"
-solana-zk-token-sdk = "1.17.13"
+solana-program = ">=1.17.13,<=2"
+solana-zk-token-sdk = ">=1.17.13,<=2"
 spl-program-error = { version = "0.3", path = "../program-error" }
 
 [dev-dependencies]
diff --git a/libraries/program-error/Cargo.toml b/libraries/program-error/Cargo.toml
index 08140831e..636d7b496 100644
--- a/libraries/program-error/Cargo.toml
+++ b/libraries/program-error/Cargo.toml
@@ -10,14 +10,14 @@ edition = "2021"
 [dependencies]
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-program-error-derive = { version = "0.3.1", path = "./derive" }
 thiserror = "1.0"
 
 [dev-dependencies]
 lazy_static = "1.4"
 serial_test = "3.0"
-solana-sdk = "1.17.13"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/libraries/tlv-account-resolution/Cargo.toml b/libraries/tlv-account-resolution/Cargo.toml
index 89b39b22a..fad2f81e5 100644
--- a/libraries/tlv-account-resolution/Cargo.toml
+++ b/libraries/tlv-account-resolution/Cargo.toml
@@ -14,7 +14,7 @@ test-sbf = []
 [dependencies]
 bytemuck = { version = "1.14.1", features = ["derive"] }
 serde = { version = "1.0.195", optional = true }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1", path = "../discriminator" }
 spl-program-error = { version = "0.3", path = "../program-error" }
 spl-type-length-value = { version = "0.3", path = "../type-length-value" }
@@ -23,9 +23,9 @@ spl-pod = { version = "0.1", path = "../pod" }
 [dev-dependencies]
 futures = "0.3.30"
 futures-util = "0.3"
-solana-client = "1.17.13"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-client = ">=1.17.13,<=2"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1", path = "../discriminator" }
 
 [lib]
diff --git a/libraries/type-length-value/Cargo.toml b/libraries/type-length-value/Cargo.toml
index 632f0f900..05a57de3c 100644
--- a/libraries/type-length-value/Cargo.toml
+++ b/libraries/type-length-value/Cargo.toml
@@ -13,7 +13,7 @@ derive = ["dep:spl-type-length-value-derive"]
 
 [dependencies]
 bytemuck = { version = "1.14.1", features = ["derive"] }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1", path = "../discriminator" }
 spl-program-error = { version = "0.3", path = "../program-error" }
 spl-type-length-value-derive = { version = "0.1", path = "./derive", optional = true }
diff --git a/managed-token/program/Cargo.toml b/managed-token/program/Cargo.toml
index e74220e68..95805e132 100644
--- a/managed-token/program/Cargo.toml
+++ b/managed-token/program/Cargo.toml
@@ -24,11 +24,11 @@ test = []
 [dependencies]
 borsh = "0.10"
 shank = "^0.2.1"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program", features = [ "no-entrypoint", ] }
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 thiserror = "^1.0.56"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
diff --git a/memo/program/Cargo.toml b/memo/program/Cargo.toml
index da01c4b9d..bf73a41cc 100644
--- a/memo/program/Cargo.toml
+++ b/memo/program/Cargo.toml
@@ -12,11 +12,11 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/name-service/program/Cargo.toml b/name-service/program/Cargo.toml
index 878b182c8..f66305a69 100644
--- a/name-service/program/Cargo.toml
+++ b/name-service/program/Cargo.toml
@@ -17,15 +17,15 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 num-traits = "0.2"
 borsh = "0.10"
 num-derive = "0.4.1"
 thiserror = "1.0.56"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/record/program/Cargo.toml b/record/program/Cargo.toml
index 95a7b7600..3da636e16 100644
--- a/record/program/Cargo.toml
+++ b/record/program/Cargo.toml
@@ -15,13 +15,13 @@ test-sbf = []
 bytemuck = { version = "1.14.1", features = ["derive"] }
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 thiserror = "1.0"
 spl-pod = { version = "0.1", path = "../../libraries/pod" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/shared-memory/program/Cargo.toml b/shared-memory/program/Cargo.toml
index dd02f2402..309f95b29 100644
--- a/shared-memory/program/Cargo.toml
+++ b/shared-memory/program/Cargo.toml
@@ -12,11 +12,11 @@ test-sbf = []
 
 [dependencies]
 arrayref = "0.3.7"
-solana-program = "=1.17.13"
+solana-program = ">=1.17.13,<=2"
 
 [dev-dependencies]
-solana-program-test = "=1.17.13"
-solana-sdk = "=1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/single-pool/cli/Cargo.toml b/single-pool/cli/Cargo.toml
index 4d5870732..3736e9321 100644
--- a/single-pool/cli/Cargo.toml
+++ b/single-pool/cli/Cargo.toml
@@ -17,23 +17,23 @@ serde = "1.0.195"
 serde_derive = "1.0.103"
 serde_json = "1.0.111"
 serde_with = "3.5.1"
-solana-account-decoder = "=1.17.13"
-solana-clap-v3-utils = "=1.17.13"
-solana-cli-config = "=1.17.13"
-solana-cli-output = "=1.17.13"
-solana-client = "=1.17.13"
-solana-logger = "=1.17.13"
-solana-remote-wallet = "=1.17.13"
-solana-sdk = "=1.17.13"
-solana-transaction-status = "=1.17.13"
-solana-vote-program = "=1.17.13"
+solana-account-decoder = ">=1.17.13,<=2"
+solana-clap-v3-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-cli-output = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-remote-wallet = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
+solana-transaction-status = ">=1.17.13,<=2"
+solana-vote-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path="../../token/program", features = [ "no-entrypoint" ] }
 spl-token-client = { version = "0.8", path="../../token/client" }
 spl-associated-token-account = { version = "2.0", path="../../associated-token-account/program", features = [ "no-entrypoint" ] }
 spl-single-pool = { version = "1.0.0", path="../program", features = [ "no-entrypoint" ] }
 
 [dev-dependencies]
-solana-test-validator = "=1.17.13"
+solana-test-validator = ">=1.17.13,<=2"
 serial_test = "3.0.0"
 test-case = "3.3"
 tempfile = "3.9.0"
diff --git a/single-pool/program/Cargo.toml b/single-pool/program/Cargo.toml
index daac9724e..9384a9f0f 100644
--- a/single-pool/program/Cargo.toml
+++ b/single-pool/program/Cargo.toml
@@ -17,16 +17,16 @@ borsh = "0.10"
 num-derive = "0.4"
 num-traits = "0.2"
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 solana-security-txt = "1.1.1"
 spl-token = { version = "4.0", path = "../../token/program", features = [ "no-entrypoint" ] }
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program", features = [ "no-entrypoint" ] }
 thiserror = "1.0"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
-solana-vote-program = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
+solana-vote-program = ">=1.17.13,<=2"
 test-case = "3.3"
 bincode = "1.3.1"
 rand = "0.8.5"
diff --git a/stake-pool/cli/Cargo.toml b/stake-pool/cli/Cargo.toml
index 74f321c5c..4e4f7aca5 100644
--- a/stake-pool/cli/Cargo.toml
+++ b/stake-pool/cli/Cargo.toml
@@ -14,15 +14,15 @@ clap = "2.33.3"
 serde = "1.0.195"
 serde_derive = "1.0.130"
 serde_json = "1.0.111"
-solana-account-decoder = "=1.17.13"
-solana-clap-utils = "=1.17.13"
-solana-cli-config = "=1.17.13"
-solana-cli-output = "=1.17.13"
-solana-client = "=1.17.13"
-solana-logger = "=1.17.13"
-solana-program = "=1.17.13"
-solana-remote-wallet = "=1.17.13"
-solana-sdk = "=1.17.13"
+solana-account-decoder = ">=1.17.13,<=2"
+solana-clap-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-cli-output = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-program = ">=1.17.13,<=2"
+solana-remote-wallet = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "=2.3", path="../../associated-token-account/program", features = [ "no-entrypoint" ] }
 spl-stake-pool = { version = "=1.0.0", path="../program", features = [ "no-entrypoint" ] }
 spl-token = { version = "=4.0", path="../../token/program", features = [ "no-entrypoint" ]  }
diff --git a/stake-pool/program/Cargo.toml b/stake-pool/program/Cargo.toml
index f5e869057..27af4783a 100644
--- a/stake-pool/program/Cargo.toml
+++ b/stake-pool/program/Cargo.toml
@@ -20,7 +20,7 @@ num-traits = "0.2"
 num_enum = "0.7.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 solana-security-txt = "1.1.1"
 spl-math = { version = "0.2", path = "../../libraries/math", features = [ "no-entrypoint" ] }
 spl-pod = { version = "0.1", path = "../../libraries/pod", features = ["borsh"] }
@@ -31,9 +31,9 @@ bincode = "1.3.1"
 [dev-dependencies]
 assert_matches = "1.5.0"
 proptest = "1.4"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
-solana-vote-program = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
+solana-vote-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [ "no-entrypoint" ] }
 test-case = "3.3"
 
diff --git a/stateless-asks/program/Cargo.toml b/stateless-asks/program/Cargo.toml
index 50c37a201..fb3f80f72 100644
--- a/stateless-asks/program/Cargo.toml
+++ b/stateless-asks/program/Cargo.toml
@@ -12,14 +12,14 @@ test-sbf = []
 
 [dependencies]
 borsh = "0.10"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-associated-token-account = {version = "2.0", path = "../../associated-token-account/program", features = ["no-entrypoint"]}
 thiserror = "1.0"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/token-collection/program/Cargo.toml b/token-collection/program/Cargo.toml
index e929c8c7f..b6a9f9253 100644
--- a/token-collection/program/Cargo.toml
+++ b/token-collection/program/Cargo.toml
@@ -12,7 +12,7 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-pod = { version = "0.1.0", path = "../../libraries/pod" }
 spl-program-error = { version = "0.3.0" , path = "../../libraries/program-error" }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
@@ -22,8 +22,8 @@ spl-token-metadata-interface = { version = "0.2", path = "../../token-metadata/i
 spl-type-length-value = { version = "0.3.0", path = "../../libraries/type-length-value" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1.0", path = "../../libraries/discriminator" }
 spl-token-client = { version = "0.8", path = "../../token/client" }
 
diff --git a/token-group/example/Cargo.toml b/token-group/example/Cargo.toml
index c3fe78b50..aa7754dfd 100644
--- a/token-group/example/Cargo.toml
+++ b/token-group/example/Cargo.toml
@@ -12,15 +12,15 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-pod = { version = "0.1.0", path = "../../libraries/pod" }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
 spl-token-group-interface = { version = "0.1.0", path = "../interface" }
 spl-type-length-value = { version = "0.3.0", path = "../../libraries/type-length-value" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1.0", path = "../../libraries/discriminator" }
 spl-token-client = { version = "0.8", path = "../../token/client" }
 spl-token-metadata-interface = { version = "0.2", path = "../../token-metadata/interface" }
diff --git a/token-group/interface/Cargo.toml b/token-group/interface/Cargo.toml
index 470a22735..4fc2f0a7f 100644
--- a/token-group/interface/Cargo.toml
+++ b/token-group/interface/Cargo.toml
@@ -9,7 +9,7 @@ edition = "2021"
 
 [dependencies]
 bytemuck = "1.14.1"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1.0" , path = "../../libraries/discriminator" }
 spl-pod = { version = "0.1.0" , path = "../../libraries/pod", features = ["borsh"] }
 spl-program-error = { version = "0.3.0" , path = "../../libraries/program-error" }
diff --git a/token-lending/cli/Cargo.toml b/token-lending/cli/Cargo.toml
index ad721d98c..825db4a21 100644
--- a/token-lending/cli/Cargo.toml
+++ b/token-lending/cli/Cargo.toml
@@ -10,12 +10,12 @@ version = "0.2.0"
 
 [dependencies]
 clap = "2.33.3"
-solana-clap-utils = "=1.17.13"
-solana-cli-config = "=1.17.13"
-solana-client = "=1.17.13"
-solana-logger = "=1.17.13"
-solana-sdk = "=1.17.13"
-solana-program = "=1.17.13"
+solana-clap-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
+solana-program = ">=1.17.13,<=2"
 spl-token-lending = { version = "0.2", path="../program", features = [ "no-entrypoint" ] }
 spl-token = { version = "4.0", path="../../token/program", features = [ "no-entrypoint" ]  }
 
diff --git a/token-lending/flash_loan_receiver/Cargo.toml b/token-lending/flash_loan_receiver/Cargo.toml
index e92041078..b85efdbe8 100644
--- a/token-lending/flash_loan_receiver/Cargo.toml
+++ b/token-lending/flash_loan_receiver/Cargo.toml
@@ -5,7 +5,7 @@ edition = "2021"
 
 [dependencies]
 arrayref = "0.3.7"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features=["no-entrypoint"] }
 
 [lib]
diff --git a/token-lending/program/Cargo.toml b/token-lending/program/Cargo.toml
index 407a5736c..6c5d61e4a 100644
--- a/token-lending/program/Cargo.toml
+++ b/token-lending/program/Cargo.toml
@@ -16,7 +16,7 @@ arrayref = "0.3.7"
 bytemuck = "1.14.1"
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [ "no-entrypoint" ] }
 thiserror = "1.0"
 uint = "0.9"
@@ -24,8 +24,8 @@ uint = "0.9"
 [dev-dependencies]
 assert_matches = "1.5.0"
 proptest = "1.4"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/token-metadata/example/Cargo.toml b/token-metadata/example/Cargo.toml
index 36660799d..c689e8894 100644
--- a/token-metadata/example/Cargo.toml
+++ b/token-metadata/example/Cargo.toml
@@ -12,15 +12,15 @@ no-entrypoint = []
 test-sbf = []
 
 [dependencies]
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
 spl-token-metadata-interface = { version = "0.2.0", path = "../interface" }
 spl-type-length-value = { version = "0.3.0" , path = "../../libraries/type-length-value" }
 spl-pod = { version = "0.1.0", path = "../../libraries/pod" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-token-client = { version = "0.8", path = "../../token/client" }
 test-case = "3.3"
 
diff --git a/token-metadata/interface/Cargo.toml b/token-metadata/interface/Cargo.toml
index 6c3a695cd..d0fe6e128 100644
--- a/token-metadata/interface/Cargo.toml
+++ b/token-metadata/interface/Cargo.toml
@@ -13,7 +13,7 @@ serde-traits = ["dep:serde", "spl-pod/serde-traits"]
 [dependencies]
 borsh = "0.10"
 serde = { version = "1.0.195", optional = true }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1" , path = "../../libraries/discriminator" }
 spl-program-error = { version = "0.3" , path = "../../libraries/program-error" }
 spl-type-length-value = { version = "0.3", path = "../../libraries/type-length-value" }
diff --git a/token-swap/program/Cargo.toml b/token-swap/program/Cargo.toml
index 3e2f024c0..908abf2c9 100644
--- a/token-swap/program/Cargo.toml
+++ b/token-swap/program/Cargo.toml
@@ -17,7 +17,7 @@ arrayref = "0.3.7"
 enum_dispatch = "0.3.12"
 num-derive = "0.4"
 num-traits = "0.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-math = { version = "0.2", path = "../../libraries/math", features = [ "no-entrypoint" ] }
 spl-token = { version = "4.0", path = "../../token/program", features = [ "no-entrypoint" ] }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = [ "no-entrypoint" ] }
@@ -28,7 +28,7 @@ roots = { version = "0.0.8", optional = true }
 [dev-dependencies]
 proptest = "1.4"
 roots = "0.0.8"
-solana-sdk = "1.17.13"
+solana-sdk = ">=1.17.13,<=2"
 test-case = "3.3"
 
 [lib]
diff --git a/token-swap/program/fuzz/Cargo.toml b/token-swap/program/fuzz/Cargo.toml
index 6b5fa93f5..d6a2bdb61 100644
--- a/token-swap/program/fuzz/Cargo.toml
+++ b/token-swap/program/fuzz/Cargo.toml
@@ -11,7 +11,7 @@ publish = false
 [dependencies]
 honggfuzz = { version = "0.5.55" }
 arbitrary = { version = "1.3", features = ["derive"] }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-math = { version = "0.2", path = "../../../libraries/math", features = [ "no-entrypoint" ] }
 spl-token = { version = "4.0", path = "../../../token/program", features = [ "no-entrypoint" ] }
 spl-token-swap = { path = "..", features = ["fuzz", "no-entrypoint"] }
diff --git a/token-upgrade/cli/Cargo.toml b/token-upgrade/cli/Cargo.toml
index a4cfa87ce..fc6f6cc53 100644
--- a/token-upgrade/cli/Cargo.toml
+++ b/token-upgrade/cli/Cargo.toml
@@ -13,12 +13,12 @@ walkdir = "2"
 [dependencies]
 clap = { version = "3", features = ["cargo"] }
 futures-util = "0.3.30"
-solana-clap-v3-utils = "1.17.13"
-solana-cli-config = "1.17.13"
-solana-client = "1.17.13"
-solana-logger = "1.17.13"
-solana-remote-wallet = "1.17.13"
-solana-sdk = "1.17.13"
+solana-clap-v3-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-remote-wallet = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program", features = ["no-entrypoint"] }
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
@@ -27,7 +27,7 @@ spl-token-upgrade = { version = "0.1", path = "../program", features = ["no-entr
 tokio = { version = "1", features = ["full"] }
 
 [dev-dependencies]
-solana-test-validator = "1.17.13"
+solana-test-validator = ">=1.17.13,<=2"
 
 [[bin]]
 name = "spl-token-upgrade"
diff --git a/token-upgrade/program/Cargo.toml b/token-upgrade/program/Cargo.toml
index 3763f9a5b..26e3f1e63 100644
--- a/token-upgrade/program/Cargo.toml
+++ b/token-upgrade/program/Cargo.toml
@@ -15,13 +15,13 @@ test-sbf = []
 num-derive = "0.4"
 num-traits = "0.2"
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
 thiserror = "1.0"
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-token-client = { version = "0.8", path = "../../token/client" }
 test-case = "3.3"
diff --git a/token-wrap/program/Cargo.toml b/token-wrap/program/Cargo.toml
index 1224e721b..8f6a6587f 100644
--- a/token-wrap/program/Cargo.toml
+++ b/token-wrap/program/Cargo.toml
@@ -14,7 +14,7 @@ test-sbf = []
 [dependencies]
 bytemuck = { version = "1.14.1", features = ["derive"] }
 num_enum = "0.7"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program", features = ["no-entrypoint"] }
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
diff --git a/token/cli/Cargo.toml b/token/cli/Cargo.toml
index 20a0fc552..9ed987344 100644
--- a/token/cli/Cargo.toml
+++ b/token/cli/Cargo.toml
@@ -19,15 +19,15 @@ futures = "0.3"
 serde = "1.0.195"
 serde_derive = "1.0.103"
 serde_json = "1.0.111"
-solana-account-decoder = "=1.17.13"
-solana-clap-utils = "=1.17.13"
-solana-cli-config = "=1.17.13"
-solana-cli-output = "=1.17.13"
-solana-client = "=1.17.13"
-solana-logger = "=1.17.13"
-solana-remote-wallet = "=1.17.13"
-solana-sdk = "=1.17.13"
-solana-transaction-status = "=1.17.13"
+solana-account-decoder = ">=1.17.13,<=2"
+solana-clap-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-cli-output = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-remote-wallet = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
+solana-transaction-status = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../program", features = [
   "no-entrypoint",
 ] }
@@ -48,7 +48,7 @@ strum_macros = "0.25"
 tokio = "1.35"
 
 [dev-dependencies]
-solana-test-validator = "=1.17.13"
+solana-test-validator = ">=1.17.13,<=2"
 assert_cmd = "2.0.13"
 libtest-mimic = "0.7"
 serial_test = "3.0.0"
diff --git a/token/client/Cargo.toml b/token/client/Cargo.toml
index 330c59c84..1cd9653cf 100644
--- a/token/client/Cargo.toml
+++ b/token/client/Cargo.toml
@@ -12,12 +12,12 @@ async-trait = "0.1"
 curve25519-dalek = "3.2.1"
 futures = "0.3.30"
 futures-util = "0.3"
-solana-banks-interface = "1.17.13"
-solana-cli-output = { version = "1.17.13", optional = true }
-solana-program-test = "1.17.13"
-solana-rpc-client = "1.17.13"
-solana-rpc-client-api = "1.17.13"
-solana-sdk = "1.17.13"
+solana-banks-interface = ">=1.17.13,<=2"
+solana-cli-output = { version = ">=1.17.13,<=2", optional = true }
+solana-program-test = ">=1.17.13,<=2"
+solana-rpc-client = ">=1.17.13,<=2"
+solana-rpc-client-api = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 # We never want the entrypoint for ATA, but we want the entrypoint for token when
 # testing token
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program", features = ["no-entrypoint"] }
diff --git a/token/program-2022/Cargo.toml b/token/program-2022/Cargo.toml
index 808660308..e2e9342f1 100644
--- a/token/program-2022/Cargo.toml
+++ b/token/program-2022/Cargo.toml
@@ -26,9 +26,9 @@ bytemuck = { version = "1.14.1", features = ["derive"] }
 num-derive = "0.4"
 num-traits = "0.2"
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 solana-security-txt = "1.1.1"
-solana-zk-token-sdk = "1.17.13"
+solana-zk-token-sdk = ">=1.17.13,<=2"
 spl-memo = { version = "4.0.0", path = "../../memo/program", features = [ "no-entrypoint" ] }
 spl-token = { version = "4.0",  path = "../program", features = ["no-entrypoint"] }
 spl-token-group-interface = { version = "0.1.0", path = "../../token-group/interface" }
@@ -45,8 +45,8 @@ base64 = { version = "0.21.7", optional = true }
 lazy_static = "1.4.0"
 proptest = "1.4"
 serial_test = "3.0.0"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-tlv-account-resolution = { version = "0.5.0", path = "../../libraries/tlv-account-resolution" }
 serde_json = "1.0.111"
 
diff --git a/token/program/Cargo.toml b/token/program/Cargo.toml
index c72c9a080..7c5c43d72 100644
--- a/token/program/Cargo.toml
+++ b/token/program/Cargo.toml
@@ -18,15 +18,15 @@ bytemuck = "1.14.1"
 num-derive = "0.4"
 num-traits = "0.2"
 num_enum = "0.7.2"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 thiserror = "1.0"
 
 [dev-dependencies]
 lazy_static = "1.4.0"
 proptest = "1.4"
 serial_test = "3.0.0"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/token/transfer-hook/cli/Cargo.toml b/token/transfer-hook/cli/Cargo.toml
index ed76df043..fb236712f 100644
--- a/token/transfer-hook/cli/Cargo.toml
+++ b/token/transfer-hook/cli/Cargo.toml
@@ -11,12 +11,12 @@ version = "0.1.1"
 [dependencies]
 clap = { version = "3", features = ["cargo"] }
 futures-util = "0.3.30"
-solana-clap-v3-utils = "=1.17.13"
-solana-cli-config = "=1.17.13"
-solana-client = "=1.17.13"
-solana-logger = "=1.17.13"
-solana-remote-wallet = "=1.17.13"
-solana-sdk = "=1.17.13"
+solana-clap-v3-utils = ">=1.17.13,<=2"
+solana-cli-config = ">=1.17.13,<=2"
+solana-client = ">=1.17.13,<=2"
+solana-logger = ">=1.17.13,<=2"
+solana-remote-wallet = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-transfer-hook-interface = { version = "0.5", path = "../interface" }
 spl-tlv-account-resolution = { version = "0.5.1" , path = "../../../libraries/tlv-account-resolution", features = ["serde-traits"] }
 strum = "0.25"
@@ -27,7 +27,7 @@ serde_json = "1.0.108"
 serde_yaml = "0.9.30"
 
 [dev-dependencies]
-solana-test-validator = "=1.17.13"
+solana-test-validator = ">=1.17.13,<=2"
 spl-token-2022 = { version = "1.0", path = "../../program-2022", features = ["no-entrypoint"] }
 spl-token-client = { version = "0.8", path = "../../client" }
 
diff --git a/token/transfer-hook/example/Cargo.toml b/token/transfer-hook/example/Cargo.toml
index 84d3ff9e1..d52b89a65 100644
--- a/token/transfer-hook/example/Cargo.toml
+++ b/token/transfer-hook/example/Cargo.toml
@@ -13,15 +13,15 @@ test-sbf = []
 
 [dependencies]
 arrayref = "0.3.7"
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-tlv-account-resolution = { version = "0.5" , path = "../../../libraries/tlv-account-resolution" }
 spl-token-2022 = { version = "1.0",  path = "../../program-2022", features = ["no-entrypoint"] }
 spl-transfer-hook-interface = { version = "0.5" , path = "../interface" }
 spl-type-length-value = { version = "0.3" , path = "../../../libraries/type-length-value" }
 
 [dev-dependencies]
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 
 [lib]
 crate-type = ["cdylib", "lib"]
diff --git a/token/transfer-hook/interface/Cargo.toml b/token/transfer-hook/interface/Cargo.toml
index 706de0adc..f2f7b0f27 100644
--- a/token/transfer-hook/interface/Cargo.toml
+++ b/token/transfer-hook/interface/Cargo.toml
@@ -10,7 +10,7 @@ edition = "2021"
 [dependencies]
 arrayref = "0.3.7"
 bytemuck = { version = "1.14.1", features = ["derive"] }
-solana-program = "1.17.13"
+solana-program = ">=1.17.13,<=2"
 spl-discriminator = { version = "0.1" , path = "../../../libraries/discriminator" }
 spl-program-error = { version = "0.3" , path = "../../../libraries/program-error" }
 spl-tlv-account-resolution = { version = "0.5" , path = "../../../libraries/tlv-account-resolution" }


Test patch:
diff --git a/associated-token-account/program-test/Cargo.toml b/associated-token-account/program-test/Cargo.toml
index 48af756a0..99deced71 100644
--- a/associated-token-account/program-test/Cargo.toml
+++ b/associated-token-account/program-test/Cargo.toml
@@ -11,9 +11,9 @@ version = "0.0.1"
 test-sbf = []
 
 [dev-dependencies]
-solana-program = "1.17.13"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program = ">=1.17.13,<=2"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "2", path = "../program", features = ["no-entrypoint"] }
 spl-token = { version = "4.0", path = "../../token/program", features = ["no-entrypoint"] }
 spl-token-2022 = { version = "1.0", path = "../../token/program-2022", features = ["no-entrypoint"] }
diff --git a/governance/test-sdk/Cargo.toml b/governance/test-sdk/Cargo.toml
index bdbd543a0..d76fe9c4b 100644
--- a/governance/test-sdk/Cargo.toml
+++ b/governance/test-sdk/Cargo.toml
@@ -16,9 +16,9 @@ num-derive = "0.4"
 num-traits = "0.2"
 serde = "1.0.195"
 serde_derive = "1.0.103"
-solana-program = "1.17.13"
-solana-program-test = "1.17.13"
-solana-sdk = "1.17.13"
+solana-program = ">=1.17.13,<=2"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-token = { version = "4.0", path = "../../token/program", features = [
     "no-entrypoint",
 ] }
diff --git a/token/program-2022-test/Cargo.toml b/token/program-2022-test/Cargo.toml
index 9c6adb787..cae88874b 100644
--- a/token/program-2022-test/Cargo.toml
+++ b/token/program-2022-test/Cargo.toml
@@ -19,9 +19,9 @@ walkdir = "2"
 async-trait = "0.1"
 borsh = "0.10"
 futures-util = "0.3"
-solana-program = "=1.17.13"
-solana-program-test = "=1.17.13"
-solana-sdk = "=1.17.13"
+solana-program = ">=1.17.13,<=2"
+solana-program-test = ">=1.17.13,<=2"
+solana-sdk = ">=1.17.13,<=2"
 spl-associated-token-account = { version = "2.0", path = "../../associated-token-account/program" }
 spl-memo = { version = "4.0.0", path = "../../memo/program", features = ["no-entrypoint"] }
 spl-pod = { version = "0.1.0", path = "../../libraries/pod" }
diff --git a/utils/test-client/Cargo.toml b/utils/test-client/Cargo.toml
index c45236c78..b2f777d28 100644
--- a/utils/test-client/Cargo.toml
+++ b/utils/test-client/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
 # Used to ensure that SPL programs are buildable by external clients
 
 [dependencies]
-solana-sdk = "1.17.13"
+solana-sdk = ">=1.17.13,<=2"
 spl-memo = { path = "../../memo/program", features = [ "no-entrypoint" ] }
 spl-token = { path = "../../token/program", features = [ "no-entrypoint" ] }
 spl-token-swap = { path = "../../token-swap/program", features = [ "no-entrypoint" ] }