chore: pull monorepo changes (#120)

* Project import generated by Copybara.

GitOrigin-RevId: 08821e148b21e3b2c212fdd5342909d92844d84a

* chore: manual fix build deps

* chore: Update pnpm lockfile

---------

Co-authored-by: Copybara <copybara@example.com>
Co-authored-by: gallynaut <gallynaut@users.noreply.github.com>
This commit is contained in:
gallynaut 2023-09-08 16:06:11 -06:00 committed by GitHub
parent 795d71d118
commit 559ca3401b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 1368 additions and 660 deletions

View File

@ -18,9 +18,9 @@
"@project-serum/borsh": "^0.2.5",
"@solana/spl-token": "^0.3.8",
"@solana/web3.js": "^1.78.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/oracle": "latest",
"@switchboard-xyz/solana.js": "^2.5.6",
"@switchboard-xyz/solana.js": "^2.5.0",
"chalk": "^4.1.2",
"dotenv": "^16.0.1",
"yargs": "^17.5.1"

View File

@ -17,9 +17,9 @@
"dependencies": {
"@coral-xyz/anchor": "^0.28.0",
"@solana/web3.js": "^1.77.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/oracle": "latest",
"@switchboard-xyz/solana.js": "^2.5.6"
"@switchboard-xyz/solana.js": "^2.5.0"
},
"devDependencies": {
"@types/chai": "^4.3.0",

View File

@ -15,7 +15,7 @@
"@coral-xyz/anchor": "^0.28.0",
"@solana/spl-token": "^0.3.6",
"@solana/web3.js": "^1.78.0",
"@switchboard-xyz/solana.js": "^2.5.6"
"@switchboard-xyz/solana.js": "workspace:^"
},
"devDependencies": {
"@types/bn.js": "^5.1.0",

View File

@ -2,7 +2,7 @@
# Variables
CARGO_NAME=basic-oracle-function
DOCKER_IMAGE_NAME=${CONTAINER_NAME?}
DOCKER_IMAGE_NAME=${CONTAINER_NAME}
DOCKER_BUILD_COMMAND=DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --build-arg CARGO_NAME=${CARGO_NAME}

View File

@ -14,8 +14,8 @@
"@coral-xyz/anchor": "^0.28.0",
"@solana/spl-token": "^0.3.8",
"@solana/web3.js": "^1.78.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/solana.js": "^2.5.6"
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/solana.js": "^2.5.0"
},
"devDependencies": {
"@types/bn.js": "^5.1.0",

View File

@ -15,8 +15,8 @@
"@coral-xyz/anchor": "^0.28.0",
"@solana/spl-token": "^0.3.8",
"@solana/web3.js": "^1.78.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/solana.js": "^2.5.6"
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/solana.js": "^2.5.0"
},
"devDependencies": {
"@types/bn.js": "^5.1.0",

View File

@ -20,29 +20,29 @@ wallet = "~/.config/solana/id.json"
[scripts]
test = "pnpm exec ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"
# [test.validator]
# url = "https://api.devnet.solana.com"
[test.validator]
url = "https://api.devnet.solana.com"
# [test]
# startup_wait = 15000
[test]
startup_wait = 15000
# [[test.validator.clone]] # sb devnet oracle programID
# address = "SW1TCH7qEPTdLsDHRgPuMQjbQxKdH2aBStViMFnt64f"
[[test.validator.clone]] # sb devnet oracle programID
address = "SW1TCH7qEPTdLsDHRgPuMQjbQxKdH2aBStViMFnt64f"
# [[test.validator.clone]] # sb devnet oracle IDL
# address = "Fi8vncGpNKbq62gPo56G4toCehWNy77GgqGkTaAF5Lkk"
[[test.validator.clone]] # sb devnet oracle IDL
address = "Fi8vncGpNKbq62gPo56G4toCehWNy77GgqGkTaAF5Lkk"
# [[test.validator.clone]] # sb devnet oracle SbState
# address = "CyZuD7RPDcrqCGbNvLCyqk6Py9cEZTKmNKujfPi3ynDd"
[[test.validator.clone]] # sb devnet oracle SbState
address = "CyZuD7RPDcrqCGbNvLCyqk6Py9cEZTKmNKujfPi3ynDd"
# [[test.validator.clone]] # sb devnet oracle tokenVault
# address = "7hkp1xfPBcD2t1vZMoWWQPzipHVcXeLAAaiGXdPSfDie"
[[test.validator.clone]] # sb devnet oracle tokenVault
address = "7hkp1xfPBcD2t1vZMoWWQPzipHVcXeLAAaiGXdPSfDie"
# [[test.validator.clone]] # sb devnet attestation programID
# address = "sbattyXrzedoNATfc4L31wC9Mhxsi1BmFhTiN8gDshx"
[[test.validator.clone]] # sb devnet attestation programID
address = "sbattyXrzedoNATfc4L31wC9Mhxsi1BmFhTiN8gDshx"
# [[test.validator.clone]] # sb devnet attestation IDL
# address = "5ExuoQR69trmKQfB95fDsUGsUrrChbGq9PFgt8qouncz"
[[test.validator.clone]] # sb devnet attestation IDL
address = "5ExuoQR69trmKQfB95fDsUGsUrrChbGq9PFgt8qouncz"
# [[test.validator.clone]] # sb devnet programState
# address = "5MFs7RGTjLi1wtKNBFRtuLipCkkjs4YQwRRU9sjnbQbS"
[[test.validator.clone]] # sb devnet programState
address = "5MFs7RGTjLi1wtKNBFRtuLipCkkjs4YQwRRU9sjnbQbS"

View File

@ -581,9 +581,9 @@ checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
[[package]]
name = "base64ct"
version = "1.6.0"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
checksum = "e6b4d9b1225d28d360ec6a231d65af1fd99a2a095154c8040689617290569c5c"
[[package]]
name = "bincode"
@ -1008,6 +1008,12 @@ dependencies = [
"web-sys",
]
[[package]]
name = "const-oid"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b"
[[package]]
name = "const-oid"
version = "0.7.1"
@ -1114,6 +1120,17 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "crypto-bigint"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03"
dependencies = [
"generic-array",
"rand_core 0.6.4",
"subtle",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
@ -1207,13 +1224,23 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "der"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4"
dependencies = [
"const-oid 0.6.2",
"crypto-bigint",
]
[[package]]
name = "der"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
dependencies = [
"const-oid",
"const-oid 0.7.1",
]
[[package]]
@ -1414,6 +1441,15 @@ dependencies = [
"termcolor",
]
[[package]]
name = "envy"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965"
dependencies = [
"serde",
]
[[package]]
name = "equivalent"
version = "1.0.1"
@ -1475,6 +1511,21 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
version = "1.2.0"
@ -1844,6 +1895,19 @@ dependencies = [
"tokio-rustls",
]
[[package]]
name = "hyper-tls"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
"hyper",
"native-tls",
"tokio",
"tokio-native-tls",
]
[[package]]
name = "iana-time-zone"
version = "0.1.57"
@ -2009,6 +2073,9 @@ name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin",
]
[[package]]
name = "lexical-core"
@ -2029,6 +2096,12 @@ version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "libm"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
[[package]]
name = "libsecp256k1"
version = "0.6.0"
@ -2187,6 +2260,24 @@ dependencies = [
"winapi",
]
[[package]]
name = "native-tls"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
dependencies = [
"lazy_static",
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "nix"
version = "0.26.2"
@ -2267,6 +2358,23 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-bigint-dig"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9bc3e36fd683e004fd59c64a425e0e991616f5a8b617c3b9a933a93c168facc"
dependencies = [
"byteorder",
"lazy_static",
"libm",
"num-integer",
"num-iter",
"num-traits",
"rand 0.8.5",
"smallvec",
"zeroize",
]
[[package]]
name = "num-complex"
version = "0.2.4"
@ -2328,6 +2436,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
"libm",
]
[[package]]
@ -2409,12 +2518,50 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openssl"
version = "0.10.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
dependencies = [
"bitflags 2.3.3",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2 1.0.66",
"quote 1.0.32",
"syn 2.0.28",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "os_str_bytes"
version = "6.5.1"
@ -2502,6 +2649,15 @@ dependencies = [
"base64 0.13.1",
]
[[package]]
name = "pem-rfc7468"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84e93a3b1cc0510b03020f33f21e62acdde3dcaef432edc95bea377fbd4c2cd4"
dependencies = [
"base64ct",
]
[[package]]
name = "percent-encoding"
version = "2.3.0"
@ -2529,14 +2685,38 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkcs1"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "116bee8279d783c0cf370efa1a94632f2108e5ef0bb32df31f051647810a4e2c"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"pkcs1",
"spki 0.4.1",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
dependencies = [
"der",
"spki",
"der 0.5.1",
"spki 0.5.4",
"zeroize",
]
@ -2903,10 +3083,12 @@ dependencies = [
"http-body",
"hyper",
"hyper-rustls",
"hyper-tls",
"ipnet",
"js-sys",
"log",
"mime",
"native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
@ -2916,6 +3098,7 @@ dependencies = [
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tokio-util",
"tower-service",
@ -2981,6 +3164,26 @@ dependencies = [
"winapi",
]
[[package]]
name = "rsa"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e05c2603e2823634ab331437001b411b9ed11660fbc4066f3908c84a9439260d"
dependencies = [
"byteorder",
"digest 0.9.0",
"lazy_static",
"num-bigint-dig",
"num-integer",
"num-iter",
"num-traits",
"pkcs1",
"pkcs8 0.7.6",
"rand 0.8.5",
"subtle",
"zeroize",
]
[[package]]
name = "rtoolbox"
version = "0.0.1"
@ -3948,7 +4151,7 @@ dependencies = [
"nix",
"pem",
"percentage",
"pkcs8",
"pkcs8 0.8.0",
"quinn",
"quinn-proto",
"quinn-udp",
@ -4136,6 +4339,15 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spki"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32"
dependencies = [
"der 0.4.5",
]
[[package]]
name = "spki"
version = "0.5.4"
@ -4143,7 +4355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
dependencies = [
"base64ct",
"der",
"der 0.5.1",
]
[[package]]
@ -4236,10 +4448,15 @@ checksum = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
[[package]]
name = "switchboard-common"
version = "0.8.6"
version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "723a9a346c6d6eb3374ebe8ea3848e61d40d1f9f46635604137e19a1a4262c52"
dependencies = [
"envy",
"getrandom 0.2.10",
"hex",
"rand 0.8.5",
"reqwest",
"serde",
"serde_json",
"sgx-quote",
@ -4248,7 +4465,9 @@ dependencies = [
[[package]]
name = "switchboard-solana"
version = "0.28.2"
version = "0.28.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa9c6634ad316592b84930a923efe0be920b1bd94d61237a90b596ebd926c40"
dependencies = [
"anchor-client",
"anchor-lang",
@ -4258,7 +4477,12 @@ dependencies = [
"chrono",
"cron",
"hex",
"rand 0.8.5",
"reqwest",
"rsa",
"rust_decimal",
"serde",
"serde_json",
"sgx-quote",
"solana-address-lookup-table-program",
"solana-client",
@ -4266,6 +4490,7 @@ dependencies = [
"superslice",
"switchboard-common",
"tokio",
"url",
]
[[package]]
@ -4480,6 +4705,16 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "tokio-native-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
dependencies = [
"native-tls",
"tokio",
]
[[package]]
name = "tokio-rustls"
version = "0.23.4"
@ -4733,6 +4968,12 @@ version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vec_map"
version = "0.8.2"

View File

@ -20,5 +20,5 @@ default = []
[dependencies]
bytemuck = "^1"
anchor-spl = "0.28.0"
switchboard-solana = "0.28.4"
switchboard-solana = "0.28.12"
# switchboard-solana = { version = "0.28.4", path = "../../../rust/switchboard-solana" }

View File

@ -7,11 +7,11 @@
"clean": "pnpm exec rimraf node_modules .anchor .turbo"
},
"dependencies": {
"@coral-xyz/anchor": "^0.27.0",
"@coral-xyz/anchor": "^0.28.0",
"@solana/spl-token": "^0.3.8",
"@solana/web3.js": "^1.78.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/solana.js": "^2.5.6",
"@solana/web3.js": "^1.78.4",
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/solana.js": "^2.5.0",
"dotenv": "^16.3.1"
},
"devDependencies": {

View File

@ -581,9 +581,9 @@ checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
[[package]]
name = "base64ct"
version = "1.6.0"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
checksum = "e6b4d9b1225d28d360ec6a231d65af1fd99a2a095154c8040689617290569c5c"
[[package]]
name = "bincode"
@ -600,6 +600,12 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
[[package]]
name = "bitmaps"
version = "2.1.0"
@ -914,7 +920,7 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
dependencies = [
"ansi_term",
"atty",
"bitflags",
"bitflags 1.3.2",
"strsim 0.8.0",
"textwrap 0.11.0",
"unicode-width",
@ -928,7 +934,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"atty",
"bitflags",
"bitflags 1.3.2",
"clap_lex",
"indexmap 1.9.3",
"once_cell",
@ -1001,6 +1007,12 @@ dependencies = [
"web-sys",
]
[[package]]
name = "const-oid"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b"
[[package]]
name = "const-oid"
version = "0.7.1"
@ -1107,6 +1119,17 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "crypto-bigint"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03"
dependencies = [
"generic-array",
"rand_core 0.6.4",
"subtle",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
@ -1191,13 +1214,23 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "der"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4"
dependencies = [
"const-oid 0.6.2",
"crypto-bigint",
]
[[package]]
name = "der"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
dependencies = [
"const-oid",
"const-oid 0.7.1",
]
[[package]]
@ -1392,6 +1425,15 @@ dependencies = [
"termcolor",
]
[[package]]
name = "envy"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965"
dependencies = [
"serde",
]
[[package]]
name = "equivalent"
version = "1.0.1"
@ -1456,6 +1498,21 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
version = "1.2.0"
@ -1825,6 +1882,19 @@ dependencies = [
"tokio-rustls",
]
[[package]]
name = "hyper-tls"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
"hyper",
"native-tls",
"tokio",
"tokio-native-tls",
]
[[package]]
name = "iana-time-zone"
version = "0.1.57"
@ -2001,6 +2071,9 @@ name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin",
]
[[package]]
name = "lexical-core"
@ -2009,7 +2082,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
dependencies = [
"arrayvec 0.5.2",
"bitflags",
"bitflags 1.3.2",
"cfg-if",
"ryu",
"static_assertions",
@ -2021,6 +2094,12 @@ version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "libm"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
[[package]]
name = "libsecp256k1"
version = "0.6.0"
@ -2179,13 +2258,31 @@ dependencies = [
"winapi",
]
[[package]]
name = "native-tls"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
dependencies = [
"lazy_static",
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "nix"
version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
dependencies = [
"bitflags",
"bitflags 1.3.2",
"cfg-if",
"libc",
"memoffset 0.7.1",
@ -2259,6 +2356,23 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-bigint-dig"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9bc3e36fd683e004fd59c64a425e0e991616f5a8b617c3b9a933a93c168facc"
dependencies = [
"byteorder",
"lazy_static",
"libm",
"num-integer",
"num-iter",
"num-traits",
"rand 0.8.5",
"smallvec",
"zeroize",
]
[[package]]
name = "num-complex"
version = "0.2.4"
@ -2320,6 +2434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
dependencies = [
"autocfg",
"libm",
]
[[package]]
@ -2401,12 +2516,50 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openssl"
version = "0.10.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
dependencies = [
"bitflags 2.4.0",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2 1.0.64",
"quote 1.0.29",
"syn 2.0.25",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "os_str_bytes"
version = "6.5.1"
@ -2494,6 +2647,15 @@ dependencies = [
"base64 0.13.1",
]
[[package]]
name = "pem-rfc7468"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84e93a3b1cc0510b03020f33f21e62acdde3dcaef432edc95bea377fbd4c2cd4"
dependencies = [
"base64ct",
]
[[package]]
name = "percent-encoding"
version = "2.3.0"
@ -2521,14 +2683,38 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkcs1"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "116bee8279d783c0cf370efa1a94632f2108e5ef0bb32df31f051647810a4e2c"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"pkcs1",
"spki 0.4.1",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
dependencies = [
"der",
"spki",
"der 0.5.1",
"spki 0.5.4",
"zeroize",
]
@ -2837,7 +3023,7 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
dependencies = [
"bitflags",
"bitflags 1.3.2",
]
[[package]]
@ -2846,7 +3032,7 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
dependencies = [
"bitflags",
"bitflags 1.3.2",
]
[[package]]
@ -2904,10 +3090,12 @@ dependencies = [
"http-body",
"hyper",
"hyper-rustls",
"hyper-tls",
"ipnet",
"js-sys",
"log",
"mime",
"native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
@ -2917,6 +3105,7 @@ dependencies = [
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tokio-util",
"tower-service",
@ -2982,6 +3171,26 @@ dependencies = [
"winapi",
]
[[package]]
name = "rsa"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e05c2603e2823634ab331437001b411b9ed11660fbc4066f3908c84a9439260d"
dependencies = [
"byteorder",
"digest 0.9.0",
"lazy_static",
"num-bigint-dig",
"num-integer",
"num-iter",
"num-traits",
"pkcs1",
"pkcs8 0.7.6",
"rand 0.8.5",
"subtle",
"zeroize",
]
[[package]]
name = "rtoolbox"
version = "0.0.1"
@ -3046,7 +3255,7 @@ version = "0.37.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
dependencies = [
"bitflags",
"bitflags 1.3.2",
"errno",
"io-lifetimes",
"libc",
@ -3156,7 +3365,7 @@ version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8"
dependencies = [
"bitflags",
"bitflags 1.3.2",
"core-foundation",
"core-foundation-sys",
"libc",
@ -3654,7 +3863,7 @@ dependencies = [
"array-bytes",
"base64 0.21.2",
"bincode",
"bitflags",
"bitflags 1.3.2",
"blake3",
"borsh 0.10.3",
"bs58 0.4.0",
@ -3875,7 +4084,7 @@ dependencies = [
"assert_matches",
"base64 0.21.2",
"bincode",
"bitflags",
"bitflags 1.3.2",
"borsh 0.10.3",
"bs58 0.4.0",
"bytemuck",
@ -3950,7 +4159,7 @@ dependencies = [
"nix",
"pem",
"percentage",
"pkcs8",
"pkcs8 0.8.0",
"quinn",
"quinn-proto",
"quinn-udp",
@ -4138,6 +4347,15 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spki"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32"
dependencies = [
"der 0.4.5",
]
[[package]]
name = "spki"
version = "0.5.4"
@ -4145,7 +4363,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
dependencies = [
"base64ct",
"der",
"der 0.5.1",
]
[[package]]
@ -4238,10 +4456,15 @@ checksum = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
[[package]]
name = "switchboard-common"
version = "0.8.6"
version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "723a9a346c6d6eb3374ebe8ea3848e61d40d1f9f46635604137e19a1a4262c52"
dependencies = [
"envy",
"getrandom 0.2.10",
"hex",
"rand 0.8.5",
"reqwest",
"serde",
"serde_json",
"sgx-quote",
@ -4250,7 +4473,9 @@ dependencies = [
[[package]]
name = "switchboard-solana"
version = "0.28.1"
version = "0.28.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa9c6634ad316592b84930a923efe0be920b1bd94d61237a90b596ebd926c40"
dependencies = [
"anchor-client",
"anchor-lang",
@ -4260,7 +4485,12 @@ dependencies = [
"chrono",
"cron",
"hex",
"rand 0.8.5",
"reqwest",
"rsa",
"rust_decimal",
"serde",
"serde_json",
"sgx-quote",
"solana-address-lookup-table-program",
"solana-client",
@ -4268,6 +4498,7 @@ dependencies = [
"superslice",
"switchboard-common",
"tokio",
"url",
]
[[package]]
@ -4482,6 +4713,16 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "tokio-native-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
dependencies = [
"native-tls",
"tokio",
]
[[package]]
name = "tokio-rustls"
version = "0.23.4"
@ -4736,6 +4977,12 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vec_map"
version = "0.8.2"

View File

@ -12,5 +12,5 @@ path = "src/main.rs"
[dependencies]
tokio = "^1"
futures = "0.3"
switchboard-solana = "0.28.4"
switchboard-solana = "0.28.12"
# switchboard-solana = { version = "0.28.4", path = "../../../../rust/switchboard-solana" }

View File

@ -12,7 +12,14 @@ async fn main() {
let runner = FunctionRunner::new_from_cluster(Cluster::Devnet, None).unwrap();
// parse and validate user provided request params
let params = ContainerParams::decode(&runner.fn_request_data.container_params).unwrap();
let params = ContainerParams::decode(
&runner
.function_request_data
.as_ref()
.unwrap()
.container_params,
)
.unwrap();
// Determine the final result
let mut bytes: [u8; 1] = [0u8; 1];
@ -39,7 +46,7 @@ async fn main() {
AccountMeta::new_readonly(house_pubkey, false),
AccountMeta::new(params.user_key, false),
AccountMeta::new_readonly(runner.function, false),
AccountMeta::new_readonly(runner.fn_request_key, false),
AccountMeta::new_readonly(runner.function_request_key.unwrap(), false),
AccountMeta::new_readonly(runner.signer, true),
AccountMeta::new_readonly(anchor_spl::token::ID, false),
AccountMeta::new_readonly(mint, false),

View File

@ -89,15 +89,15 @@ pub mod custom_randomness_request {
let request_init_ctx = FunctionRequestInitAndTrigger {
request: ctx.accounts.request.clone(),
function: ctx.accounts.function.clone(),
function: ctx.accounts.function.to_account_info(),
escrow: ctx.accounts.request_escrow.clone(),
mint: ctx.accounts.mint.clone(),
state: ctx.accounts.state.clone(),
attestation_queue: ctx.accounts.attestation_queue.clone(),
payer: ctx.accounts.payer.clone(),
system_program: ctx.accounts.system_program.clone(),
token_program: ctx.accounts.token_program.clone(),
associated_token_program: ctx.accounts.associated_token_program.clone(),
mint: ctx.accounts.mint.to_account_info(),
state: ctx.accounts.state.to_account_info(),
attestation_queue: ctx.accounts.attestation_queue.to_account_info(),
payer: ctx.accounts.payer.to_account_info(),
system_program: ctx.accounts.system_program.to_account_info(),
token_program: ctx.accounts.token_program.to_account_info(),
associated_token_program: ctx.accounts.associated_token_program.to_account_info(),
};
request_init_ctx.invoke(
ctx.accounts.switchboard.clone(),

View File

@ -7,8 +7,8 @@
},
"dependencies": {
"@coral-xyz/anchor": "^0.28.0",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/solana.js": "^2.5.6"
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/solana.js": "^2.5.0"
},
"devDependencies": {
"@types/bn.js": "^5.1.0",

View File

@ -18,9 +18,9 @@
"@project-serum/borsh": "^0.2.5",
"@solana/spl-token": "^0.3.6",
"@solana/web3.js": "^1.77.3",
"@switchboard-xyz/common": "^2.3.4",
"@switchboard-xyz/common": "^2.3.3",
"@switchboard-xyz/oracle": "latest",
"@switchboard-xyz/solana.js": "^2.5.6",
"@switchboard-xyz/solana.js": "^2.5.0",
"chalk": "^4.1.2",
"dotenv": "^16.0.1",
"yargs": "^17.5.1"

View File

@ -1,6 +1,6 @@
{
"name": "@switchboard-xyz/sbv2-lite",
"version": "0.2.4",
"version": "0.2.2",
"description": "",
"private": false,
"repository": {
@ -15,13 +15,13 @@
],
"exports": {
".": {
"import": "./lib/index.js",
"require": "./lib/index.js"
"import": "./lib/esm/index.js",
"require": "./lib/cjs/index.js"
}
},
"main": "lib/index.js",
"module": "lib/index.js",
"types": "lib/index.d.ts",
"main": "lib/cjs/index.js",
"module": "lib/esm/index.js",
"types": "lib/cjs/index.d.ts",
"scripts": {
"docgen": "typedoc --entryPoints src/index.ts --out ../../website/static/api/ts-lite",
"test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/**/*.ts'",

View File

@ -7,6 +7,7 @@ import type {
TransactionObjectOptions,
} from "../TransactionObject.js";
import { TransactionObject } from "../TransactionObject.js";
import { parseRawBuffer } from "../utils.js";
import { FunctionAccount } from "./index.js";
@ -71,6 +72,7 @@ export interface FunctionRequestVerifyParams {
// accounts
functionEnclaveSigner: PublicKey;
function: PublicKey;
functionEscrow: PublicKey;
verifierQuote: PublicKey;
verifierEnclaveSigner: PublicKey;
verifierPermission: PublicKey;
@ -316,7 +318,7 @@ export class FunctionRequestAccount extends Account<types.FunctionRequestAccount
? new BN(params.requestSlot)
: params.requestSlot,
containerParamsHash: Array.from(
parseRawMrEnclave(params.containerParamsHash)
parseRawBuffer(params.containerParamsHash)
),
},
},
@ -325,7 +327,7 @@ export class FunctionRequestAccount extends Account<types.FunctionRequestAccount
functionEnclaveSigner: params.functionEnclaveSigner,
escrow: this.program.mint.getAssociatedAddress(this.publicKey),
function: params.function,
functionEscrow: this.program.mint.getAssociatedAddress(params.function),
functionEscrow: params.functionEscrow,
verifierQuote: params.verifierQuote,
verifierEnclaveSigner: params.verifierEnclaveSigner,
verifierPermission: params.verifierPermission,

View File

@ -1,4 +1,4 @@
lockfileVersion: '6.0'
lockfileVersion: '6.1'
settings:
autoInstallPeers: true
@ -63,13 +63,13 @@ importers:
specifier: ^1.78.3
version: 1.78.3
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.78.3)
'@switchboard-xyz/oracle':
specifier: latest
version: 2.1.13
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
chalk:
specifier: ^4.1.2
@ -112,13 +112,13 @@ importers:
specifier: ^1.77.3
version: 1.77.3
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.77.3)
'@switchboard-xyz/oracle':
specifier: latest
version: 2.1.13
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
devDependencies:
'@types/chai':
@ -149,7 +149,7 @@ importers:
specifier: ^1.78.0
version: 1.78.3
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: workspace:^
version: link:../../../javascript/solana.js
devDependencies:
'@types/bn.js':
@ -192,10 +192,10 @@ importers:
specifier: ^1.78.3
version: 1.78.3
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.78.3)
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
devDependencies:
'@types/bn.js':
@ -238,10 +238,10 @@ importers:
specifier: ^1.78.3
version: 1.78.3
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.78.3)
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
devDependencies:
'@types/bn.js':
@ -275,19 +275,19 @@ importers:
examples/functions/04_randomness_callback:
dependencies:
'@coral-xyz/anchor':
specifier: ^0.27.0
version: 0.27.0
specifier: ^0.28.0
version: 0.28.0
'@solana/spl-token':
specifier: ^0.3.8
version: 0.3.8(@solana/web3.js@1.78.3)
version: 0.3.8(@solana/web3.js@1.78.4)
'@solana/web3.js':
specifier: ^1.78.3
version: 1.78.3
specifier: ^1.78.4
version: 1.78.4
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.78.4)
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
dotenv:
specifier: ^16.3.1
@ -326,10 +326,10 @@ importers:
specifier: ^0.28.0
version: 0.28.0
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.78.4)
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
devDependencies:
'@types/bn.js':
@ -378,13 +378,13 @@ importers:
specifier: ^1.77.3
version: 1.77.3
'@switchboard-xyz/common':
specifier: ^2.3.4
version: 2.3.4
specifier: ^2.3.3
version: 2.3.3(@solana/web3.js@1.77.3)
'@switchboard-xyz/oracle':
specifier: latest
version: 2.1.13
'@switchboard-xyz/solana.js':
specifier: ^2.5.6
specifier: ^2.5.0
version: link:../../../javascript/solana.js
chalk:
specifier: ^4.1.2
@ -933,37 +933,12 @@ packages:
chalk: 4.1.2
dev: true
/@coral-xyz/anchor@0.27.0:
resolution: {integrity: sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==}
engines: {node: '>=11'}
dependencies:
'@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.78.4)
'@solana/web3.js': 1.78.4
base64-js: 1.5.1
bn.js: 5.2.1
bs58: 4.0.1
buffer-layout: 1.2.2
camelcase: 6.3.0
cross-fetch: 3.1.5
crypto-hash: 1.3.0
eventemitter3: 4.0.7
js-sha256: 0.9.0
pako: 2.0.4
snake-case: 3.0.4
superstruct: 0.15.5
toml: 3.0.0
transitivePeerDependencies:
- bufferutil
- encoding
- utf-8-validate
dev: false
/@coral-xyz/anchor@0.28.0:
resolution: {integrity: sha512-kQ02Hv2ZqxtWP30WN1d4xxT4QqlOXYDxmEd3k/bbneqhV3X5QMO4LAtoUFs7otxyivOgoqam5Il5qx81FuI4vw==}
engines: {node: '>=11'}
dependencies:
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.3)
'@solana/web3.js': 1.78.3
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.4)
'@solana/web3.js': 1.78.4
base64-js: 1.5.1
bn.js: 5.2.1
bs58: 4.0.1
@ -982,17 +957,6 @@ packages:
- encoding
- utf-8-validate
/@coral-xyz/borsh@0.27.0(@solana/web3.js@1.78.4):
resolution: {integrity: sha512-tJKzhLukghTWPLy+n8K8iJKgBq1yLT/AxaNd10yJrX8mI56ao5+OFAKAqW/h0i79KCvb4BK0VGO5ECmmolFz9A==}
engines: {node: '>=10'}
peerDependencies:
'@solana/web3.js': ^1.68.0
dependencies:
'@solana/web3.js': 1.78.4
bn.js: 5.2.1
buffer-layout: 1.2.2
dev: false
/@coral-xyz/borsh@0.28.0(@solana/web3.js@1.77.3):
resolution: {integrity: sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==}
engines: {node: '>=10'}
@ -1013,6 +977,7 @@ packages:
'@solana/web3.js': 1.78.3
bn.js: 5.2.1
buffer-layout: 1.2.2
dev: false
/@coral-xyz/borsh@0.28.0(@solana/web3.js@1.78.4):
resolution: {integrity: sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==}
@ -1023,7 +988,6 @@ packages:
'@solana/web3.js': 1.78.4
bn.js: 5.2.1
buffer-layout: 1.2.2
dev: true
/@cspotcode/source-map-support@0.8.1:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
@ -1258,17 +1222,17 @@ packages:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.42.0
eslint-visitor-keys: 3.4.2
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.47.0):
/@eslint-community/eslint-utils@4.4.0(eslint@8.49.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.47.0
eslint-visitor-keys: 3.4.2
eslint: 8.49.0
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/regexpp@4.5.1:
@ -1320,8 +1284,8 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@eslint/js@8.47.0:
resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==}
/@eslint/js@8.49.0:
resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
@ -1336,6 +1300,17 @@ packages:
- supports-color
dev: true
/@humanwhocodes/config-array@0.11.11:
resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
debug: 4.3.4(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
dev: true
/@humanwhocodes/module-importer@1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
@ -1544,6 +1519,22 @@ packages:
- utf-8-validate
dev: false
/@solana/spl-token@0.3.8(@solana/web3.js@1.78.4):
resolution: {integrity: sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==}
engines: {node: '>=16'}
peerDependencies:
'@solana/web3.js': ^1.47.4
dependencies:
'@solana/buffer-layout': 4.0.0
'@solana/buffer-layout-utils': 0.2.0
'@solana/web3.js': 1.78.4
buffer: 6.0.3
transitivePeerDependencies:
- bufferutil
- encoding
- utf-8-validate
dev: false
/@solana/web3.js@1.77.3:
resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==}
dependencies:
@ -1591,6 +1582,7 @@ packages:
- bufferutil
- encoding
- utf-8-validate
dev: false
/@solana/web3.js@1.78.4:
resolution: {integrity: sha512-up5VG1dK+GPhykmuMIozJZBbVqpm77vbOG6/r5dS7NBGZonwHfTLdBbsYc3rjmaQ4DpCXUa3tUc4RZHRORvZrw==}
@ -1615,6 +1607,24 @@ packages:
- encoding
- utf-8-validate
/@switchboard-xyz/common@2.3.3(@solana/web3.js@1.77.3):
resolution: {integrity: sha512-aZK6Wbu1khMn0qRr0viOwCVcDluS3BzvdoQflmmmCMuEpltDgd7vF/Ax4k+z/9EM54jdqwJRPnAKBDni1RpLyA==}
engines: {node: '>=12'}
dependencies:
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.77.3)
'@types/big.js': 6.1.6
'@types/bn.js': 5.1.1
big.js: 6.2.1
bn.js: 5.2.1
bs58: 5.0.0
decimal.js: 10.4.3
lodash: 4.17.21
protobufjs: 7.2.4
yaml: 2.2.1
transitivePeerDependencies:
- '@solana/web3.js'
dev: false
/@switchboard-xyz/common@2.3.3(@solana/web3.js@1.78.3):
resolution: {integrity: sha512-aZK6Wbu1khMn0qRr0viOwCVcDluS3BzvdoQflmmmCMuEpltDgd7vF/Ax4k+z/9EM54jdqwJRPnAKBDni1RpLyA==}
engines: {node: '>=12'}
@ -1633,10 +1643,13 @@ packages:
- '@solana/web3.js'
dev: false
/@switchboard-xyz/common@2.3.4:
resolution: {integrity: sha512-9ewK3aQxV8P/OgNjCw2fq5SRm+JLK1sf/+vlTozDK4bb9PwaISHZ08QP7IZ7eCZ+Af69X3eFvxeYh3HDfSzlwg==}
/@switchboard-xyz/common@2.3.3(@solana/web3.js@1.78.4):
resolution: {integrity: sha512-aZK6Wbu1khMn0qRr0viOwCVcDluS3BzvdoQflmmmCMuEpltDgd7vF/Ax4k+z/9EM54jdqwJRPnAKBDni1RpLyA==}
engines: {node: '>=12'}
dependencies:
'@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.4)
'@types/big.js': 6.1.6
'@types/bn.js': 5.1.1
big.js: 6.2.1
bn.js: 5.2.1
bs58: 5.0.0
@ -1644,20 +1657,22 @@ packages:
lodash: 4.17.21
protobufjs: 7.2.4
yaml: 2.2.1
transitivePeerDependencies:
- '@solana/web3.js'
dev: false
/@switchboard-xyz/eslint-config@0.1.9:
resolution: {integrity: sha512-ZvCAsXn4NsBCECWvew/GIrkvDGzPhhDzT77jkEKQ7Xd2ftrjFJOeYoREDQIOhD88uN3qBl0cIKHbS4t0amkzGw==}
dependencies:
'@typescript-eslint/eslint-plugin': 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
'@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
eslint: 8.47.0
eslint-config-prettier: 9.0.0(eslint@8.47.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)
eslint-plugin-node: 11.1.0(eslint@8.47.0)
eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@2.8.8)
eslint-plugin-simple-import-sort: 10.0.0(eslint@8.47.0)
'@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.1.6)
'@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.0.4)
'@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.1.6)
eslint: 8.49.0
eslint-config-prettier: 9.0.0(eslint@8.49.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)
eslint-plugin-node: 11.1.0(eslint@8.49.0)
eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@2.8.8)
eslint-plugin-simple-import-sort: 10.0.0(eslint@8.49.0)
prettier: 2.8.8
typescript: 5.1.6
transitivePeerDependencies:
@ -1861,8 +1876,8 @@ packages:
'@types/node': 20.4.2
optional: true
/@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==}
/@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.1.6):
resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -1873,13 +1888,13 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
'@typescript-eslint/scope-manager': 6.4.1
'@typescript-eslint/type-utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.4.1
'@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.0.4)
'@typescript-eslint/scope-manager': 6.6.0
'@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.1.6)
'@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.6.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.47.0
eslint: 8.49.0
graphemer: 1.4.0
ignore: 5.2.4
natural-compare: 1.4.0
@ -1890,8 +1905,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@6.4.1(eslint@8.47.0)(typescript@5.0.4):
resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==}
/@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.0.4):
resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1900,27 +1915,27 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.4.1
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.0.4)
'@typescript-eslint/visitor-keys': 6.4.1
'@typescript-eslint/scope-manager': 6.6.0
'@typescript-eslint/types': 6.6.0
'@typescript-eslint/typescript-estree': 6.6.0(typescript@5.0.4)
'@typescript-eslint/visitor-keys': 6.6.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.47.0
eslint: 8.49.0
typescript: 5.0.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.4.1:
resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==}
/@typescript-eslint/scope-manager@6.6.0:
resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/visitor-keys': 6.4.1
'@typescript-eslint/types': 6.6.0
'@typescript-eslint/visitor-keys': 6.6.0
dev: true
/@typescript-eslint/type-utils@6.4.1(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==}
/@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.1.6):
resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1929,23 +1944,23 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.6)
'@typescript-eslint/utils': 6.4.1(eslint@8.47.0)(typescript@5.1.6)
'@typescript-eslint/typescript-estree': 6.6.0(typescript@5.1.6)
'@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.1.6)
debug: 4.3.4(supports-color@8.1.1)
eslint: 8.47.0
eslint: 8.49.0
ts-api-utils: 1.0.1(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/types@6.4.1:
resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==}
/@typescript-eslint/types@6.6.0:
resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.4.1(typescript@5.0.4):
resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==}
/@typescript-eslint/typescript-estree@6.6.0(typescript@5.0.4):
resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -1953,8 +1968,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/visitor-keys': 6.4.1
'@typescript-eslint/types': 6.6.0
'@typescript-eslint/visitor-keys': 6.6.0
debug: 4.3.4(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
@ -1965,8 +1980,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/typescript-estree@6.4.1(typescript@5.1.6):
resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==}
/@typescript-eslint/typescript-estree@6.6.0(typescript@5.1.6):
resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -1974,8 +1989,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/visitor-keys': 6.4.1
'@typescript-eslint/types': 6.6.0
'@typescript-eslint/visitor-keys': 6.6.0
debug: 4.3.4(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
@ -1986,30 +2001,30 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils@6.4.1(eslint@8.47.0)(typescript@5.1.6):
resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==}
/@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.1.6):
resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
'@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0)
'@types/json-schema': 7.0.12
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 6.4.1
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/typescript-estree': 6.4.1(typescript@5.1.6)
eslint: 8.47.0
'@typescript-eslint/scope-manager': 6.6.0
'@typescript-eslint/types': 6.6.0
'@typescript-eslint/typescript-estree': 6.6.0(typescript@5.1.6)
eslint: 8.49.0
semver: 7.5.4
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.4.1:
resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==}
/@typescript-eslint/visitor-keys@6.6.0:
resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.4.1
'@typescript-eslint/types': 6.6.0
eslint-visitor-keys: 3.4.3
dev: true
@ -3112,13 +3127,13 @@ packages:
engines: {node: '>=10'}
dev: true
/eslint-config-prettier@9.0.0(eslint@8.47.0):
/eslint-config-prettier@9.0.0(eslint@8.49.0):
resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
eslint: 8.47.0
eslint: 8.49.0
dev: true
/eslint-import-resolver-node@0.3.7:
@ -3131,7 +3146,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0):
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@ -3152,26 +3167,26 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
'@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.0.4)
debug: 3.2.7
eslint: 8.47.0
eslint: 8.49.0
eslint-import-resolver-node: 0.3.7
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-es@3.0.1(eslint@8.47.0):
/eslint-plugin-es@3.0.1(eslint@8.49.0):
resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==}
engines: {node: '>=8.10.0'}
peerDependencies:
eslint: '>=4.19.1'
dependencies:
eslint: 8.47.0
eslint: 8.49.0
eslint-utils: 2.1.0
regexpp: 3.2.0
dev: true
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.4.1)(eslint@8.47.0):
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.49.0):
resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
engines: {node: '>=4'}
peerDependencies:
@ -3181,16 +3196,16 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 6.4.1(eslint@8.47.0)(typescript@5.0.4)
'@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.0.4)
array-includes: 3.1.6
array.prototype.findlastindex: 1.2.2
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.47.0
eslint: 8.49.0
eslint-import-resolver-node: 0.3.7
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.1)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0)
has: 1.0.3
is-core-module: 2.13.0
is-glob: 4.0.3
@ -3206,14 +3221,14 @@ packages:
- supports-color
dev: true
/eslint-plugin-node@11.1.0(eslint@8.47.0):
/eslint-plugin-node@11.1.0(eslint@8.49.0):
resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==}
engines: {node: '>=8.10.0'}
peerDependencies:
eslint: '>=5.16.0'
dependencies:
eslint: 8.47.0
eslint-plugin-es: 3.0.1(eslint@8.47.0)
eslint: 8.49.0
eslint-plugin-es: 3.0.1(eslint@8.49.0)
eslint-utils: 2.1.0
ignore: 5.2.4
minimatch: 3.1.2
@ -3221,7 +3236,7 @@ packages:
semver: 6.3.1
dev: true
/eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@2.8.8):
/eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@2.8.8):
resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -3235,19 +3250,19 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
eslint: 8.47.0
eslint-config-prettier: 9.0.0(eslint@8.47.0)
eslint: 8.49.0
eslint-config-prettier: 9.0.0(eslint@8.49.0)
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
synckit: 0.8.5
dev: true
/eslint-plugin-simple-import-sort@10.0.0(eslint@8.47.0):
/eslint-plugin-simple-import-sort@10.0.0(eslint@8.49.0):
resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==}
peerDependencies:
eslint: '>=5.0.0'
dependencies:
eslint: 8.47.0
eslint: 8.49.0
dev: true
/eslint-scope@7.2.0:
@ -3283,11 +3298,6 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint-visitor-keys@3.4.2:
resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3341,16 +3351,16 @@ packages:
- supports-color
dev: true
/eslint@8.47.0:
resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==}
/eslint@8.49.0:
resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
'@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0)
'@eslint-community/regexpp': 4.6.2
'@eslint/eslintrc': 2.1.2
'@eslint/js': 8.47.0
'@humanwhocodes/config-array': 0.11.10
'@eslint/js': 8.49.0
'@humanwhocodes/config-array': 0.11.11
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
@ -3393,7 +3403,7 @@ packages:
dependencies:
acorn: 8.10.0
acorn-jsx: 5.3.2(acorn@8.10.0)
eslint-visitor-keys: 3.4.2
eslint-visitor-keys: 3.4.3
dev: true
/espree@9.6.1:

View File

@ -3890,7 +3890,7 @@ dependencies = [
[[package]]
name = "switchboard-solana"
version = "0.27.4"
version = "0.27.8"
dependencies = [
"anchor-client",
"anchor-lang",

View File

@ -1,6 +1,6 @@
[package]
name = "switchboard-solana"
version = "0.27.5"
version = "0.27.8"
edition = "2021"
description = "A Rust library to interact with Switchboard accounts."
readme = "README.md"

View File

@ -1008,6 +1008,12 @@ dependencies = [
"web-sys",
]
[[package]]
name = "const-oid"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b"
[[package]]
name = "const-oid"
version = "0.7.1"
@ -1114,6 +1120,17 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "crypto-bigint"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03"
dependencies = [
"generic-array",
"rand_core 0.6.4",
"subtle",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
@ -1198,13 +1215,23 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "der"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4"
dependencies = [
"const-oid 0.6.2",
"crypto-bigint",
]
[[package]]
name = "der"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
dependencies = [
"const-oid",
"const-oid 0.7.1",
]
[[package]]
@ -1475,6 +1502,21 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
version = "1.2.0"
@ -1844,6 +1886,19 @@ dependencies = [
"tokio-rustls",
]
[[package]]
name = "hyper-tls"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
"hyper",
"native-tls",
"tokio",
"tokio-native-tls",
]
[[package]]
name = "iana-time-zone"
version = "0.1.57"
@ -2009,6 +2064,9 @@ name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin",
]
[[package]]
name = "lexical-core"
@ -2029,6 +2087,12 @@ version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "libm"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
[[package]]
name = "libsecp256k1"
version = "0.6.0"
@ -2187,6 +2251,24 @@ dependencies = [
"winapi",
]
[[package]]
name = "native-tls"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
dependencies = [
"lazy_static",
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "nix"
version = "0.26.2"
@ -2267,6 +2349,23 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-bigint-dig"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9bc3e36fd683e004fd59c64a425e0e991616f5a8b617c3b9a933a93c168facc"
dependencies = [
"byteorder",
"lazy_static",
"libm",
"num-integer",
"num-iter",
"num-traits",
"rand 0.8.5",
"smallvec",
"zeroize",
]
[[package]]
name = "num-complex"
version = "0.2.4"
@ -2328,6 +2427,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
"libm",
]
[[package]]
@ -2409,12 +2509,50 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "openssl"
version = "0.10.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
dependencies = [
"bitflags 2.3.3",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2 1.0.66",
"quote 1.0.32",
"syn 2.0.28",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "os_str_bytes"
version = "6.5.1"
@ -2502,6 +2640,15 @@ dependencies = [
"base64 0.13.1",
]
[[package]]
name = "pem-rfc7468"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f22eb0e3c593294a99e9ff4b24cf6b752d43f193aa4415fe5077c159996d497"
dependencies = [
"base64ct",
]
[[package]]
name = "percent-encoding"
version = "2.3.0"
@ -2529,14 +2676,38 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkcs1"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "116bee8279d783c0cf370efa1a94632f2108e5ef0bb32df31f051647810a4e2c"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447"
dependencies = [
"der 0.4.5",
"pem-rfc7468",
"pkcs1",
"spki 0.4.1",
"zeroize",
]
[[package]]
name = "pkcs8"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
dependencies = [
"der",
"spki",
"der 0.5.1",
"spki 0.5.4",
"zeroize",
]
@ -2903,10 +3074,12 @@ dependencies = [
"http-body",
"hyper",
"hyper-rustls",
"hyper-tls",
"ipnet",
"js-sys",
"log",
"mime",
"native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
@ -2916,6 +3089,7 @@ dependencies = [
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tokio-util",
"tower-service",
@ -2981,6 +3155,26 @@ dependencies = [
"winapi",
]
[[package]]
name = "rsa"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e05c2603e2823634ab331437001b411b9ed11660fbc4066f3908c84a9439260d"
dependencies = [
"byteorder",
"digest 0.9.0",
"lazy_static",
"num-bigint-dig",
"num-integer",
"num-iter",
"num-traits",
"pkcs1",
"pkcs8 0.7.6",
"rand 0.8.5",
"subtle",
"zeroize",
]
[[package]]
name = "rtoolbox"
version = "0.0.1"
@ -3948,7 +4142,7 @@ dependencies = [
"nix",
"pem",
"percentage",
"pkcs8",
"pkcs8 0.8.0",
"quinn",
"quinn-proto",
"quinn-udp",
@ -4136,6 +4330,15 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spki"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32"
dependencies = [
"der 0.4.5",
]
[[package]]
name = "spki"
version = "0.5.4"
@ -4143,7 +4346,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
dependencies = [
"base64ct",
"der",
"der 0.5.1",
]
[[package]]
@ -4236,11 +4439,13 @@ checksum = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
[[package]]
name = "switchboard-common"
version = "0.8.7"
version = "0.8.15"
dependencies = [
"envy",
"getrandom 0.2.10",
"hex",
"rand 0.8.5",
"reqwest",
"serde",
"serde_json",
"sgx-quote",
@ -4249,7 +4454,7 @@ dependencies = [
[[package]]
name = "switchboard-solana"
version = "0.28.6"
version = "0.28.11"
dependencies = [
"anchor-client",
"anchor-lang",
@ -4259,7 +4464,12 @@ dependencies = [
"chrono",
"cron",
"hex",
"rand 0.8.5",
"reqwest",
"rsa",
"rust_decimal",
"serde",
"serde_json",
"sgx-quote",
"solana-address-lookup-table-program",
"solana-client",
@ -4482,6 +4692,16 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "tokio-native-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
dependencies = [
"native-tls",
"tokio",
]
[[package]]
name = "tokio-rustls"
version = "0.23.4"
@ -4735,6 +4955,12 @@ version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vec_map"
version = "0.8.2"

View File

@ -1,6 +1,6 @@
[package]
name = "switchboard-solana"
version = "0.28.6"
version = "0.28.12"
edition = "2021"
description = "A Rust library to interact with Switchboard accounts."
readme = "README.md"
@ -19,6 +19,7 @@ default = ["cpi"]
no-entrypoint = []
cpi = ["no-entrypoint"]
[dependencies]
anchor-spl = "0.28.0"
solana-program = ">= 1.16, < 1.17"
@ -28,11 +29,11 @@ bytemuck = "^1"
superslice = "1"
[target.'cfg(target_os = "solana")'.dependencies]
switchboard-common = { version = "0.8.7" }
switchboard-common = { version = "0.8.14" }
anchor-lang = { version = "0.28.0" }
[target.'cfg(not(target_os = "solana"))'.dependencies]
switchboard-common = { version = "0.8.7", features = [
switchboard-common = { version = "0.8.15", features = [
"client",
"solana",
] }
@ -45,6 +46,11 @@ chrono = { version = "0.4.25" }
hex = "0.4.3"
tokio = "1"
url = "2.4"
rsa = { version = "0.5.0" }
serde = { version = "^1", features = ["derive"] }
serde_json = "^1"
reqwest = { version = "0.11", features = ["json"] }
rand = { version = "0.8.5" }
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "doc_cfg"]

View File

@ -3,22 +3,10 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionCloseParams)]
pub struct FunctionClose<'info> {
#[account(
mut,
close = sol_dest,
seeds = [
FUNCTION_SEED,
function.load()?.creator_seed.as_ref(),
&function.load()?.created_at.to_le_bytes()
],
bump = function.load()?.bump,
has_one = authority,
has_one = address_lookup_table,
has_one = escrow_wallet,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
pub authority: Signer<'info>,
#[account(mut)]
pub function: AccountInfo<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
/// CHECK: handled in function has_one
#[account(
@ -28,26 +16,18 @@ pub struct FunctionClose<'info> {
pub address_lookup_table: AccountInfo<'info>,
#[account(mut)]
pub escrow_wallet: Box<Account<'info, SwitchboardWallet>>,
pub escrow_wallet: AccountInfo<'info>, // SwitchboardWallet
/// CHECK:
pub sol_dest: AccountInfo<'info>,
#[account(
mut,
constraint = escrow_dest.is_native()
)]
pub escrow_dest: Box<Account<'info, TokenAccount>>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump,
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub token_program: Program<'info, Token>,
pub system_program: Program<'info, System>,
#[account(mut)]
pub escrow_dest: AccountInfo<'info>,
pub state: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
/// CHECK:
#[account(

View File

@ -4,15 +4,12 @@ use crate::prelude::*;
#[instruction(params:FunctionInitParams)]
pub struct FunctionInit<'info> {
#[account(
init,
space = FunctionAccountData::size(),
payer = payer,
seeds = [FUNCTION_SEED,
params.creator_seed.unwrap_or(payer.key().to_bytes()).as_ref(),
params.recent_slot.to_le_bytes().as_ref()],
bump,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
mut,
signer,
owner = system_program.key(),
constraint = function.data_len() == 0 && function.lamports() == 0,
)]
pub function: AccountInfo<'info>,
/// CHECK: todo
#[account(mut)]
@ -21,35 +18,36 @@ pub struct FunctionInit<'info> {
/// CHECK:
pub authority: AccountInfo<'info>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub attestation_queue: AccountInfo<'info>,
#[account(mut)]
pub payer: Signer<'info>,
#[account(mut, signer)]
pub payer: AccountInfo<'info>,
/// CHECK: handle this manually because the PDA seed can vary
#[account(mut)]
pub wallet: AccountInfo<'info>,
pub wallet_authority: Option<Signer<'info>>,
#[account(signer)]
pub wallet_authority: Option<AccountInfo<'info>>,
/// CHECK: handle this manually because the PDA seed can vary
#[account(mut)]
pub token_wallet: AccountInfo<'info>,
#[account(address = anchor_spl::token::spl_token::native_mint::ID)]
pub mint: Account<'info, Mint>,
pub token_program: Program<'info, Token>,
pub associated_token_program: Program<'info, AssociatedToken>,
pub system_program: Program<'info, System>,
pub mint: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = anchor_spl::associated_token::ID)]
pub associated_token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
/// CHECK:
#[account(
constraint = address_lookup_program.executable,
address = solana_address_lookup_table_program::id(),
)]
)]
pub address_lookup_program: AccountInfo<'info>,
}

View File

@ -3,17 +3,11 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionSetConfigParams)]
pub struct FunctionSetConfig<'info> {
#[account(
mut,
seeds = [FUNCTION_SEED,
function.load()?.creator_seed.as_ref(),
&function.load()?.created_at_slot.to_le_bytes()],
bump = function.load()?.bump,
has_one = authority
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(mut)]
pub function: AccountInfo<'info>,
pub authority: Signer<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -3,43 +3,29 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionSetEscrowParams)]
pub struct FunctionSetEscrow<'info> {
#[account(
mut,
seeds = [
FUNCTION_SEED,
function.load()?.creator_seed.as_ref(),
&function.load()?.created_at_slot.to_le_bytes()
],
bump = function.load()?.bump,
has_one = authority @ SwitchboardError::InvalidAuthority,
has_one = escrow_wallet,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(mut)]
pub function: AccountInfo<'info>,
pub authority: Signer<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub attestation_queue: AccountInfo<'info>,
#[account(
mut,
constraint = escrow_wallet.authority == escrow_authority.key()
)]
pub escrow_wallet: Box<Account<'info, SwitchboardWallet>>,
#[account(mut)]
pub escrow_wallet: AccountInfo<'info>,
/// CHECK:
pub escrow_authority: AccountInfo<'info>,
#[account(
mut,
constraint = new_escrow.authority == new_escrow_authority.key() && new_escrow.token_wallet == new_escrow_token_wallet.key()
)]
pub new_escrow: Box<Account<'info, SwitchboardWallet>>,
#[account(mut)]
pub new_escrow: AccountInfo<'info>,
/// CHECK:
pub new_escrow_authority: Signer<'info>,
#[account(signer)]
pub new_escrow_authority: AccountInfo<'info>,
/// CHECK:
pub new_escrow_token_wallet: Box<Account<'info, TokenAccount>>,
pub new_escrow_token_wallet: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -3,22 +3,13 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionTriggerParams)]
pub struct FunctionTrigger<'info> {
#[account(
mut,
seeds = [
FUNCTION_SEED,
function.load()?.creator_seed.as_ref(),
&function.load()?.created_at_slot.to_le_bytes()
],
bump = function.load()?.bump,
has_one = authority,
has_one = attestation_queue,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(mut)]
pub function: AccountInfo<'info>,
pub authority: Signer<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub attestation_queue: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -3,48 +3,22 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params: FunctionVerifyParams)] // rpc parameters hint
pub struct FunctionVerify<'info> {
#[account(
mut,
seeds = [FUNCTION_SEED,
function.load()?.creator_seed.as_ref(),
&function.load()?.created_at_slot.to_le_bytes()],
bump = function.load()?.bump,
has_one = attestation_queue,
has_one = escrow_token_wallet,
has_one = escrow_wallet,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
pub function_enclave_signer: Signer<'info>,
#[account(
has_one = attestation_queue,
constraint = verifier.load()?.enclave.enclave_signer == verifier_signer.key(),
)]
pub verifier: AccountLoader<'info, VerifierAccountData>,
pub verifier_signer: Signer<'info>,
#[account(
seeds = [PERMISSION_SEED,
attestation_queue.load()?.authority.as_ref(),
attestation_queue.key().as_ref(),
verifier.key().as_ref()],
bump = verifier_permission.load()?.bump,
)]
pub verifier_permission: AccountLoader<'info, AttestationPermissionAccountData>,
pub escrow_wallet: Box<Account<'info, SwitchboardWallet>>,
#[account(mut, constraint = escrow_token_wallet.is_native())]
pub escrow_token_wallet: Box<Account<'info, TokenAccount>>,
#[account(mut, constraint = receiver.is_native())]
pub receiver: Box<Account<'info, TokenAccount>>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub token_program: Program<'info, Token>,
#[account(mut)]
pub function: AccountInfo<'info>, // FunctionAccountData
#[account(signer)]
pub function_enclave_signer: AccountInfo<'info>, // SystemProgram keypair
pub verifier: AccountInfo<'info>, // VerifierAccountData
#[account(signer)]
pub verifier_signer: AccountInfo<'info>,
pub verifier_permission: AccountInfo<'info>, // AttestationPermissionAccountData
pub escrow_wallet: AccountInfo<'info>, // SwitchboardWallet
#[account(mut)]
pub escrow_token_wallet: AccountInfo<'info>, // TokenAccount
#[account(mut)]
pub receiver: AccountInfo<'info>, // TokenAccount
pub attestation_queue: AccountInfo<'info>, // AttestationQueueAccountData
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -16,21 +16,24 @@ pub use function_verify::*;
pub mod function_close;
pub use function_close::*;
pub mod request_close;
pub use request_close::*;
pub mod request_init_and_trigger;
pub use request_init_and_trigger::*;
pub mod request_init;
pub use request_init::*;
pub mod request_set_config;
pub use request_set_config::*;
pub mod request_trigger;
pub use request_trigger::*;
pub mod request_verify;
pub use request_verify::*;
pub mod request_close;
pub use request_close::*;
pub mod wallet_init;
pub use wallet_init::*;

View File

@ -3,38 +3,24 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionRequestCloseParams)]
pub struct FunctionRequestClose<'info> {
#[account(
mut,
close = authority,
has_one = function,
has_one = escrow,
has_one = authority,
)]
pub request: Box<Account<'info, FunctionRequestAccountData>>,
#[account(mut)]
pub request: AccountInfo<'info>,
/// CHECK: Only needs to sign if request.garbage_collection_slot has not elapsed
pub authority: AccountInfo<'info>,
#[account(
mut,
constraint = escrow.is_native() && escrow.owner == state.key()
)]
pub escrow: Box<Account<'info, TokenAccount>>,
#[account(mut)]
pub escrow: AccountInfo<'info>,
/// CHECK: we need to load_mut and remove_request
#[account(mut)]
pub function: AccountLoader<'info, FunctionAccountData>,
pub function: AccountInfo<'info>,
/// CHECK: allow partial funds to be sent to the claimer only if request.garbage_collection_slot has elapsed
pub sol_dest: AccountInfo<'info>,
#[account(
mut,
constraint = escrow_dest.is_native() && escrow_dest.owner == request.authority
)]
pub escrow_dest: Box<Account<'info, TokenAccount>>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub token_program: Program<'info, Token>,
pub system_program: Program<'info, System>,
#[account(mut)]
pub escrow_dest: AccountInfo<'info>,
pub state: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -4,54 +4,44 @@ use crate::prelude::*;
#[instruction(params:FunctionRequestInitParams)]
pub struct FunctionRequestInit<'info> {
#[account(
init,
payer = payer,
space = FunctionRequestAccountData::space(params.max_container_params_len)
mut,
signer,
owner = system_program.key(),
constraint = request.data_len() == 0 && request.lamports() == 0,
)]
pub request: Box<Account<'info, FunctionRequestAccountData>>,
pub request: AccountInfo<'info>,
/// CHECK: the authority of the request
pub authority: AccountInfo<'info>,
#[account(
mut, // write lock issues ??
has_one = attestation_queue,
// has_one = authority @ SwitchboardError::InvalidAuthority,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(mut)]
pub function: AccountInfo<'info>,
/// CHECK: function authority required to permit new requests
#[account(mut)]
pub function_authority: Option<AccountInfo<'info>>,
#[account(
init,
payer = payer,
associated_token::mint = mint,
associated_token::authority = request,
mut,
owner = system_program.key(),
constraint = request.data_len() == 0 && request.lamports() == 0,
)]
pub escrow: Box<Account<'info, TokenAccount>>,
pub escrow: AccountInfo<'info>,
#[account(address = anchor_spl::token::spl_token::native_mint::ID)]
pub mint: Account<'info, Mint>,
pub mint: AccountInfo<'info>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub state: AccountInfo<'info>,
pub attestation_queue: AccountInfo<'info>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
#[account(mut)]
pub payer: Signer<'info>,
pub system_program: Program<'info, System>,
pub token_program: Program<'info, Token>,
pub associated_token_program: Program<'info, AssociatedToken>,
#[account(mut, signer)]
pub payer: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = anchor_spl::associated_token::ID)]
pub associated_token_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -11,11 +11,8 @@ pub struct FunctionRequestInitAndTrigger<'info> {
)]
pub request: AccountInfo<'info>,
#[account(
mut,
has_one = attestation_queue,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(mut)]
pub function: AccountInfo<'info>,
#[account(
mut,
@ -25,24 +22,21 @@ pub struct FunctionRequestInitAndTrigger<'info> {
pub escrow: AccountInfo<'info>,
#[account(address = anchor_spl::token::spl_token::native_mint::ID)]
pub mint: Account<'info, Mint>,
pub mint: AccountInfo<'info>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump,
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub state: AccountInfo<'info>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub attestation_queue: AccountInfo<'info>,
#[account(mut)]
pub payer: Signer<'info>,
#[account(mut, signer)]
pub payer: AccountInfo<'info>,
pub system_program: Program<'info, System>,
pub token_program: Program<'info, Token>,
pub associated_token_program: Program<'info, AssociatedToken>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = anchor_spl::associated_token::ID)]
pub associated_token_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -0,0 +1,89 @@
use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionRequestSetConfigParams)]
pub struct FunctionRequestSetConfig<'info> {
#[account(mut)]
pub request: AccountInfo<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
pub struct FunctionRequestSetConfigParams {
pub container_params: Vec<u8>,
pub append_container_params: bool,
}
impl InstructionData for FunctionRequestSetConfigParams {}
impl Discriminator for FunctionRequestSetConfigParams {
const DISCRIMINATOR: [u8; 8] = [16, 81, 197, 58, 129, 125, 91, 233];
}
impl Discriminator for FunctionRequestSetConfig<'_> {
const DISCRIMINATOR: [u8; 8] = [16, 81, 197, 58, 129, 125, 91, 233];
}
impl<'info> FunctionRequestSetConfig<'info> {
pub fn get_instruction(
&self,
program_id: Pubkey,
container_params: Vec<u8>,
append_container_params: bool,
) -> anchor_lang::Result<Instruction> {
let accounts = self.to_account_metas(None);
let mut data: Vec<u8> = FunctionRequestSetConfig::discriminator().try_to_vec()?;
let params = FunctionRequestSetConfigParams {
container_params,
append_container_params,
};
data.append(&mut params.try_to_vec()?);
let instruction = Instruction::new_with_bytes(program_id, &data, accounts);
Ok(instruction)
}
pub fn invoke(
&self,
program: AccountInfo<'info>,
container_params: Vec<u8>,
append_container_params: bool,
) -> ProgramResult {
let instruction =
self.get_instruction(*program.key, container_params, append_container_params)?;
let account_infos = self.to_account_infos();
invoke(&instruction, &account_infos[..])
}
pub fn invoke_signed(
&self,
program: AccountInfo<'info>,
container_params: Vec<u8>,
append_container_params: bool,
signer_seeds: &[&[&[u8]]],
) -> ProgramResult {
let instruction =
self.get_instruction(*program.key, container_params, append_container_params)?;
let account_infos = self.to_account_infos();
invoke_signed(&instruction, &account_infos[..], signer_seeds)
}
fn to_account_infos(&self) -> Vec<AccountInfo<'info>> {
let mut account_infos = Vec::new();
account_infos.extend(self.request.to_account_infos());
account_infos.extend(self.authority.to_account_infos());
account_infos
}
#[allow(unused_variables)]
fn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta> {
let mut account_metas = Vec::new();
account_metas.extend(self.request.to_account_metas(None));
account_metas.extend(self.authority.to_account_metas(Some(true)));
account_metas
}
}

View File

@ -3,50 +3,28 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionRequestTriggerParams)]
pub struct FunctionRequestTrigger<'info> {
#[account(
mut,
has_one = function,
has_one = escrow,
has_one = authority,
)]
pub request: Box<Account<'info, FunctionRequestAccountData>>,
/// CHECK: the request authority must authorize new requests
pub authority: Signer<'info>,
#[account(
mut,
constraint = escrow.is_native() && escrow.owner == state.key()
)]
pub escrow: Box<Account<'info, TokenAccount>>,
#[account(
mut,
has_one = attestation_queue @ SwitchboardError::InvalidQueue,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump,
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
#[account(mut)]
pub payer: Signer<'info>,
pub token_program: Program<'info, Token>,
pub system_program: Program<'info, System>,
pub request: AccountInfo<'info>,
#[account(signer)]
pub authority: AccountInfo<'info>,
#[account(mut)]
pub escrow: AccountInfo<'info>,
#[account(mut)]
pub function: AccountInfo<'info>,
pub state: AccountInfo<'info>,
pub attestation_queue: AccountInfo<'info>,
#[account(mut, signer)]
pub payer: AccountInfo<'info>,
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
pub struct FunctionRequestTriggerParams {
pub bounty: Option<u64>,
pub slots_until_expiration: Option<u64>,
// TODO: maybe add param to force transfer from function escrow if authority signs
pub valid_after_slot: Option<u64>,
}

View File

@ -3,67 +3,26 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:FunctionRequestVerifyParams)]
pub struct FunctionRequestVerify<'info> {
#[account(
mut,
has_one = function,
has_one = escrow,
)]
pub request: Box<Account<'info, FunctionRequestAccountData>>,
pub function_enclave_signer: Signer<'info>,
#[account(
mut,
constraint = escrow.is_native() && escrow.owner == state.key()
)]
pub escrow: Box<Account<'info, TokenAccount>>,
#[account(
mut,
has_one = attestation_queue,
)]
pub function: AccountLoader<'info, FunctionAccountData>,
#[account(
mut,
constraint = escrow.is_native() && escrow.owner == state.key()
)]
pub function_escrow: Option<Box<Account<'info, TokenAccount>>>,
#[account(
has_one = attestation_queue,
constraint = verifier_quote.load()?.enclave.enclave_signer == verifier_enclave_signer.key(),
)]
pub verifier_quote: AccountLoader<'info, VerifierAccountData>,
pub verifier_enclave_signer: Signer<'info>,
#[account(
seeds = [
PERMISSION_SEED,
attestation_queue.load()?.authority.as_ref(),
attestation_queue.key().as_ref(),
verifier_quote.key().as_ref()
],
bump = verifier_permission.load()?.bump,
)]
pub verifier_permission: AccountLoader<'info, AttestationPermissionAccountData>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump,
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
#[account(
mut,
constraint = receiver.is_native()
)]
pub receiver: Box<Account<'info, TokenAccount>>,
pub token_program: Program<'info, Token>,
#[account(mut)]
pub request: AccountInfo<'info>, // FunctionRequestAccount
#[account(signer)]
pub function_enclave_signer: AccountInfo<'info>, // SystemProgram keypair
#[account(mut)]
pub escrow: AccountInfo<'info>, // TokenAccount
#[account(mut)]
pub function: AccountInfo<'info>, // FunctionAccount
#[account(mut)]
pub function_escrow: Option<AccountInfo<'info>>, // TokenAccount
pub verifier_quote: AccountInfo<'info>, // VerifierAccountData
#[account(signer)]
pub verifier_enclave_signer: AccountInfo<'info>, // SystemProgram keypair
pub verifier_permission: AccountInfo<'info>, // AttestationPermissionAccount
pub state: AccountInfo<'info>, // AttestationProgramState
pub attestation_queue: AccountInfo<'info>, // AttestationQueueAccount
#[account(mut)]
pub receiver: AccountInfo<'info>, // TokenAccount
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -3,47 +3,24 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:WalletFundParams)]
pub struct WalletFund<'info> {
#[account(
mut,
seeds = [
mint.key().as_ref(),
attestation_queue.key().as_ref(),
authority.key().as_ref(),
&wallet.name,
],
bump = wallet.bump,
has_one = token_wallet,
)]
pub wallet: Box<Account<'info, SwitchboardWallet>>,
#[account(mut)]
pub wallet: AccountInfo<'info>, // SwitchboardWallet
#[account(address = anchor_spl::token::spl_token::native_mint::ID)]
pub mint: Account<'info, Mint>,
pub mint: AccountInfo<'info>, // TokenMint
/// CHECK:
pub authority: AccountInfo<'info>,
// allows us to pull mint from the queue if we ever need to
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
pub attestation_queue: AccountInfo<'info>, // AttestationQueueAccountData
#[account(mut)]
pub token_wallet: Box<Account<'info, TokenAccount>>,
#[account(
mut,
constraint = funder_wallet.mint == token_wallet.mint && funder_wallet.owner == funder.key(),
)]
pub funder_wallet: Option<Box<Account<'info, TokenAccount>>>,
pub funder: Signer<'info>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub token_program: Program<'info, Token>,
pub system_program: Program<'info, System>,
pub token_wallet: AccountInfo<'info>, // TokenAccount
#[account(mut)]
pub funder_wallet: Option<AccountInfo<'info>>, // TokenAccount
#[account(signer)]
pub funder: AccountInfo<'info>, // Signer
pub state: AccountInfo<'info>, // AttestationProgramState
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -3,51 +3,25 @@ use crate::prelude::*;
#[derive(Accounts)]
#[instruction(params:WalletInitParams)]
pub struct WalletInit<'info> {
#[account(
init,
space = SwitchboardWallet::space(params.max_len),
payer = payer,
seeds = [
mint.key().as_ref(),
attestation_queue.key().as_ref(),
authority.key().as_ref(),
&SwitchboardWallet::parse_name(&params.name),
],
bump,
)]
pub wallet: Box<Account<'info, SwitchboardWallet>>,
#[account(mut)]
pub wallet: AccountInfo<'info>, // SwitchboardWallet
#[account(address = anchor_spl::token::spl_token::native_mint::ID)]
pub mint: Account<'info, Mint>,
pub mint: AccountInfo<'info>, // Mint
/// CHECK:
pub authority: AccountInfo<'info>,
// allows us to pull mint from the queue if we ever need to
pub attestation_queue: AccountLoader<'info, AttestationQueueAccountData>,
#[account(
init,
payer = payer,
associated_token::mint = mint,
associated_token::authority = wallet,
)]
pub token_wallet: Box<Account<'info, TokenAccount>>,
pub attestation_queue: AccountInfo<'info>, // AttestationQueueAccountData
#[account(mut)]
pub payer: Signer<'info>,
#[account(
seeds = [STATE_SEED],
bump = state.load()?.bump
)]
pub state: AccountLoader<'info, AttestationProgramState>,
pub token_program: Program<'info, Token>,
pub associated_token_program: Program<'info, AssociatedToken>,
pub system_program: Program<'info, System>,
pub token_wallet: AccountInfo<'info>, // TokenAccount
#[account(mut, signer)]
pub payer: AccountInfo<'info>,
pub state: AccountInfo<'info>, // AttestationProgramState
#[account(address = anchor_spl::token::ID)]
pub token_program: AccountInfo<'info>,
#[account(address = anchor_spl::associated_token::ID)]
pub associated_token_program: AccountInfo<'info>,
#[account(address = solana_program::system_program::ID)]
pub system_program: AccountInfo<'info>,
}
#[derive(Clone, AnchorSerialize, AnchorDeserialize)]

View File

@ -15,6 +15,10 @@ use switchboard_common::ChainResultInfo::Solana;
use switchboard_common::SOLFunctionResult;
use switchboard_common::SolanaFunctionEnvironment;
/// A management object for structured runtime for Switchboard Functions on
/// solana. Inititlizing this object will load all required variables
/// from the runtime to execute and sign an output transaction to be verified
/// and committed by the switchboard network.
#[derive(Clone)]
pub struct FunctionRunner {
pub client: Arc<RpcClient>,
@ -57,7 +61,6 @@ impl FunctionRunner {
let signer = signer_to_pubkey(signer_keypair.clone())?;
let env = SolanaFunctionEnvironment::parse()?;
msg!("ENV: {:#?}", env);
// required to run
let function = Pubkey::from_str(&env.function_key).unwrap();
@ -174,11 +177,14 @@ impl FunctionRunner {
Self::new(cluster.url(), commitment)
}
/// Loads the FunctionRunner from runtime settings
pub fn from_env(commitment: Option<CommitmentConfig>) -> Result<Self, SwitchboardClientError> {
let cluster = Cluster::from_str(&std::env::var("CLUSTER").unwrap()).unwrap();
Self::new_from_cluster(cluster, commitment)
}
/// Loads the queue authority provided by the QUEUE_AUTHORITY environment
/// variable
async fn load_queue_authority(
&self,
attestation_queue_pubkey: Pubkey,
@ -207,6 +213,8 @@ impl FunctionRunner {
}
}
/// Loads the oracle signing key provided by the VERIFIER_ENCLAVE_SIGNER
/// environment variable
async fn load_verifier_signer(
&self,
verifier_pubkey: Pubkey,
@ -232,6 +240,8 @@ impl FunctionRunner {
}
}
/// Loads the data of the function account provided by the FUNCTION_DATA
/// environment variable.
pub async fn load_function_data(
&self,
) -> Result<Box<FunctionAccountData>, SwitchboardClientError> {
@ -252,6 +262,8 @@ impl FunctionRunner {
}
}
/// If this execution is tied to a function request, load the data of the
/// execution function request account.
pub async fn load_request_data(
&self,
) -> Result<Box<FunctionRequestAccountData>, SwitchboardClientError> {
@ -280,6 +292,9 @@ impl FunctionRunner {
}
}
/// Builds the callback instruction to send to the Switchboard oracle network.
/// This will execute the instruction to validate the output transaction
/// was produced in your switchboard enclave.
async fn build_fn_verify_ixn(
&self,
mr_enclave: MrEnclave,
@ -332,6 +347,9 @@ impl FunctionRunner {
Ok(ixn)
}
/// Builds the callback instruction to send to the Switchboard oracle network.
/// This will execute the instruction to validate the output transaction
/// as well as validate the request parameters used in this run.
async fn build_fn_request_verify_ixn(
&self,
mr_enclave: MrEnclave,
@ -388,6 +406,10 @@ impl FunctionRunner {
Ok(ixn)
}
/// Generates a FunctionResult object to be emitted at the end of this
/// function run. This function result will be used be the quote verification
/// sidecar to verify the output was run inside the function's enclave
/// and sign the transaction to send back on chain.
async fn get_result(
&self,
mut ixs: Vec<Instruction>,
@ -428,6 +450,8 @@ impl FunctionRunner {
})
}
/// Emits a serialized FunctionResult object to send to the quote verification
/// sidecar.
pub async fn emit(&self, ixs: Vec<Instruction>) -> Result<(), SwitchboardClientError> {
self.get_result(ixs)
.await
@ -442,6 +466,8 @@ impl FunctionRunner {
}
// Useful for building ixns on the client side
/// Implements the instruction schema for serialization the
/// function_verify instruction
pub struct FunctionVerifyAccounts {
pub function: Pubkey,
pub function_enclave_signer: Pubkey,
@ -454,6 +480,7 @@ pub struct FunctionVerifyAccounts {
pub attestation_queue: Pubkey,
}
impl FunctionVerifyAccounts {
/// Generates an instruction to verify the provided function call
pub fn get_instruction(
&self,
params: FunctionVerifyParams,
@ -493,6 +520,8 @@ impl ToAccountMetas for FunctionVerifyAccounts {
]
}
}
/// Implements the instruction schema for serialization the
/// function_request_verify instruction
pub struct FunctionRequestVerifyAccounts {
pub request: Pubkey,
pub function_enclave_signer: Pubkey,
@ -507,6 +536,7 @@ pub struct FunctionRequestVerifyAccounts {
pub attestation_queue: Pubkey,
}
impl FunctionRequestVerifyAccounts {
/// Generates an instruction to verify the provided request call
pub fn get_instruction(
&self,
params: FunctionRequestVerifyParams,

View File

@ -12,6 +12,8 @@ pub fn load_env_pubkey(key: &str) -> Result<Pubkey, SwitchboardClientError> {
.map_err(|_| SwitchboardClientError::EnvVariableMissing(key.to_string()))
}
/// Creates a signing keypair generated from randomness sourced from the enclave
/// runtime.
pub fn generate_signer() -> Arc<Keypair> {
let mut randomness = [0; 32];
switchboard_common::Gramine::read_rand(&mut randomness).unwrap();

View File

@ -5,6 +5,7 @@ pub use crate::oracle_program::instructions::{
pub use crate::attestation_program::instructions::{
FunctionClose, FunctionInit, FunctionRequestClose, FunctionRequestInit,
FunctionRequestInitAndTrigger, FunctionRequestTrigger, FunctionRequestVerify,
FunctionSetEscrow, FunctionTrigger, FunctionVerify, WalletFund, WalletInit,
FunctionRequestInitAndTrigger, FunctionRequestSetConfig, FunctionRequestTrigger,
FunctionRequestVerify, FunctionSetEscrow, FunctionTrigger, FunctionVerify, WalletFund,
WalletInit,
};

View File

@ -106,6 +106,8 @@ pub use oracle_program::*;
pub mod attestation_program;
pub use attestation_program::*;
pub use switchboard_common::*;
pub mod error;
pub mod seeds;
@ -123,6 +125,8 @@ pub mod prelude;
cfg_client! {
pub mod client;
pub use client::*;
pub mod secrets;
pub use secrets::*;
}
/// Program id for the Switchboard oracle program

View File

@ -0,0 +1,58 @@
use crate::*;
use rand::rngs::OsRng;
use serde_json::{json};
use std::collections::HashMap;
use serde_json;
use serde::Deserialize;
use std::result::Result;
use rsa::{RsaPrivateKey, RsaPublicKey, PaddingScheme, pkcs8::ToPublicKey};
#[allow(dead_code)]
#[allow(non_snake_case)]
#[derive(Debug, Deserialize)]
pub struct Secrets {
pub keys: HashMap<String, String>,
}
/// `fetch_secrets`: to be used in conjunction with the Switchboard Secrets
/// Server stack.
/// When hosting your own secrets server, you may list the MR_ENCLAVE of the
/// functions you wish to reveal your secrets to. This will only ever expose
/// your secrets to your code. Unless exported in your code, no chain or oracle
/// will be able to view these secrets:
///
/// # Relevant Materials:
/// - [Secret Server Github Repository](https://github.com/switchboard-xyz/secrets-server)
///
/// # Parameters:
/// - `url`: the url or ip address of the secrets server in use
///
/// # Returns
/// - `Map<String, String>`: The key-value store of your secrets.
pub async fn fetch_secrets(url: &str) -> Result<Secrets, SwitchboardClientError> {
let mut os_rng = OsRng::default();
let priv_key = RsaPrivateKey::new(&mut os_rng, 2048)
.map_err(|_| SwitchboardClientError::KeyParseError)?;
let pub_key = RsaPublicKey::from(&priv_key).to_public_key_der()
.map_err(|_| SwitchboardClientError::KeyParseError)?;
let pub_key: &[u8] = pub_key.as_ref();
let secrets_quote = Gramine::generate_quote(pub_key)
.map_err(|_| SwitchboardClientError::SgxError)?;
let client = reqwest::Client::new();
let res = client.post(url)
.json(&json!({
"quote": &secrets_quote,
"pubkey": pub_key,
}))
.send()
.await
.map_err(|_| SwitchboardClientError::NetworkError)?;
let ciphertext = res.bytes().await.map_err(|_| SwitchboardClientError::NetworkError)?;
let secrets: Secrets;
let padding = PaddingScheme::new_pkcs1v15_encrypt();
secrets = serde_json::from_slice(
&priv_key.decrypt(padding, &ciphertext).map_err(|_| SwitchboardClientError::DecryptError)?
).map_err(|_| SwitchboardClientError::ParseError)?;
Ok(secrets)
}

View File

@ -13,9 +13,10 @@ pub use crate::oracle_program::{
pub use crate::attestation_program::{
FunctionCloseParams, FunctionInitParams, FunctionRequestCloseParams, FunctionRequestInitParams,
FunctionRequestTriggerRound, FunctionRequestVerifyParams, FunctionSetEscrowParams,
FunctionStatus, FunctionTriggerParams, FunctionVerifyParams, MrEnclave, Quote, RequestStatus,
SwitchboardAttestationPermission, VerificationStatus, WalletFundParams, WalletInitParams,
FunctionRequestSetConfigParams, FunctionRequestTriggerRound, FunctionRequestVerifyParams,
FunctionSetEscrowParams, FunctionStatus, FunctionTriggerParams, FunctionVerifyParams,
MrEnclave, Quote, RequestStatus, SwitchboardAttestationPermission, VerificationStatus,
WalletFundParams, WalletInitParams,
};
cfg_client! {