feat: add modified slab from serum
This commit is contained in:
parent
1a08501095
commit
3aafa73d45
|
@ -72,7 +72,7 @@ version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6"
|
checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -186,8 +186,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9"
|
checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"actix-router",
|
"actix-router",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -288,8 +288,8 @@ checksum = "cf7d535e1381be3de2c0716c0a1c1e32ad9df1042cddcf7bc18d743569e53319"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"regex",
|
"regex",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -303,8 +303,8 @@ dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bs58 0.4.0",
|
"bs58 0.4.0",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"rustversion",
|
"rustversion",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -316,7 +316,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e1be64a48e395fe00b8217287f226078be2cf32dae42fdf8a885b997945c3d28"
|
checksum = "e1be64a48e395fe00b8217287f226078be2cf32dae42fdf8a885b997945c3d28"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -327,8 +327,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "38ea6713d1938c0da03656ff8a693b17dc0396da66d1ba320557f07e86eca0d4"
|
checksum = "38ea6713d1938c0da03656ff8a693b17dc0396da66d1ba320557f07e86eca0d4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -340,8 +340,8 @@ checksum = "d401f11efb3644285685f8339829a9786d43ed7490bb1699f33c478d04d5a582"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -354,8 +354,8 @@ dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"heck 0.3.3",
|
"heck 0.3.3",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -367,8 +367,8 @@ checksum = "6ad769993b5266714e8939e47fbdede90e5c030333c7522d99a4d4748cf26712"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -380,8 +380,8 @@ checksum = "4e677fae4a016a554acdd0e3b7f178d3acafaa7e7ffac6b8690cf4e171f1c116"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -410,8 +410,8 @@ checksum = "340beef6809d1c3fcc7ae219153d981e95a8a277ff31985bd7050e32645dc9a8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anchor-syn",
|
"anchor-syn",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -448,9 +448,9 @@ dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bs58 0.3.1",
|
"bs58 0.3.1",
|
||||||
"heck 0.3.3",
|
"heck 0.3.3",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"proc-macro2-diagnostics",
|
"proc-macro2-diagnostics",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sha2 0.9.9",
|
"sha2 0.9.9",
|
||||||
|
@ -528,8 +528,8 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
|
checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"synstructure",
|
"synstructure",
|
||||||
]
|
]
|
||||||
|
@ -540,8 +540,8 @@ version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
|
checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -590,8 +590,8 @@ version = "0.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
|
checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -601,8 +601,8 @@ version = "0.1.61"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "705339e0e4a9690e2908d2b3d049d85682cf19fbd5782494498fbf7003a6a282"
|
checksum = "705339e0e4a9690e2908d2b3d049d85682cf19fbd5782494498fbf7003a6a282"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -774,8 +774,8 @@ dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"lazycell",
|
"lazycell",
|
||||||
"peeking_take_while",
|
"peeking_take_while",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"regex",
|
"regex",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"shlex",
|
"shlex",
|
||||||
|
@ -864,7 +864,7 @@ dependencies = [
|
||||||
"borsh-derive-internal 0.9.3",
|
"borsh-derive-internal 0.9.3",
|
||||||
"borsh-schema-derive-internal 0.9.3",
|
"borsh-schema-derive-internal 0.9.3",
|
||||||
"proc-macro-crate 0.1.5",
|
"proc-macro-crate 0.1.5",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -877,7 +877,7 @@ dependencies = [
|
||||||
"borsh-derive-internal 0.10.2",
|
"borsh-derive-internal 0.10.2",
|
||||||
"borsh-schema-derive-internal 0.10.2",
|
"borsh-schema-derive-internal 0.10.2",
|
||||||
"proc-macro-crate 0.1.5",
|
"proc-macro-crate 0.1.5",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -887,8 +887,8 @@ version = "0.9.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
|
checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -898,8 +898,8 @@ version = "0.10.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "186b734fa1c9f6743e90c95d7233c9faab6360d1a96d4ffa19d9cfd1e9350f8a"
|
checksum = "186b734fa1c9f6743e90c95d7233c9faab6360d1a96d4ffa19d9cfd1e9350f8a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -909,8 +909,8 @@ version = "0.9.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
|
checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -920,8 +920,8 @@ version = "0.10.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99b7ff1008316626f485991b960ade129253d4034014616b94f309a15366cc49"
|
checksum = "99b7ff1008316626f485991b960ade129253d4034014616b94f309a15366cc49"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1001,16 +1001,16 @@ version = "0.6.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5"
|
checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytemuck"
|
name = "bytemuck"
|
||||||
version = "1.12.3"
|
version = "1.13.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f"
|
checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck_derive",
|
"bytemuck_derive",
|
||||||
]
|
]
|
||||||
|
@ -1021,8 +1021,8 @@ version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322"
|
checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1502,8 +1502,8 @@ dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"scratch",
|
"scratch",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -1520,8 +1520,8 @@ version = "1.0.87"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e"
|
checksum = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1589,8 +1589,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
|
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"convert_case",
|
"convert_case",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"rustc_version 0.4.0",
|
"rustc_version 0.4.0",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -1683,8 +1683,8 @@ version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
|
checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1803,8 +1803,8 @@ version = "0.8.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598"
|
checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1815,8 +1815,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2"
|
checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1835,8 +1835,8 @@ version = "0.6.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
|
checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2085,8 +2085,8 @@ version = "0.3.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
|
checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2779,8 +2779,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2"
|
checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate 0.1.5",
|
"proc-macro-crate 0.1.5",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3259,8 +3259,8 @@ version = "0.11.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789"
|
checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3382,8 +3382,8 @@ version = "0.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
|
checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3445,7 +3445,16 @@ version = "0.5.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
|
checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num_enum_derive",
|
"num_enum_derive 0.5.7",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num_enum"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
|
||||||
|
dependencies = [
|
||||||
|
"num_enum_derive 0.6.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3455,11 +3464,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
|
checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate 1.2.1",
|
"proc-macro-crate 1.2.1",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num_enum_derive"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-crate 1.2.1",
|
||||||
|
"proc-macro2 1.0.56",
|
||||||
|
"quote 1.0.26",
|
||||||
|
"syn 2.0.15",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "number_prefix"
|
name = "number_prefix"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
@ -3495,8 +3516,10 @@ dependencies = [
|
||||||
"anchor-client",
|
"anchor-client",
|
||||||
"anchor-lang",
|
"anchor-lang",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"arrayref",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"borsh 0.9.3",
|
"borsh 0.9.3",
|
||||||
|
"bytemuck",
|
||||||
"chrono",
|
"chrono",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
"dotenv",
|
"dotenv",
|
||||||
|
@ -3505,6 +3528,7 @@ dependencies = [
|
||||||
"jsonrpc-core-client",
|
"jsonrpc-core-client",
|
||||||
"log 0.4.17",
|
"log 0.4.17",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
|
"num_enum 0.6.1",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
@ -3542,8 +3566,8 @@ version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3600,8 +3624,8 @@ checksum = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
"proc-macro-error",
|
"proc-macro-error",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3774,8 +3798,8 @@ version = "1.0.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
|
checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3838,7 +3862,7 @@ version = "0.1.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78"
|
checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3869,8 +3893,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-error-attr",
|
"proc-macro-error-attr",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"version_check 0.9.4",
|
"version_check 0.9.4",
|
||||||
]
|
]
|
||||||
|
@ -3881,8 +3905,8 @@ version = "1.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"version_check 0.9.4",
|
"version_check 0.9.4",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3897,9 +3921,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.50"
|
version = "1.0.56"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
|
checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
@ -3910,8 +3934,8 @@ version = "0.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada"
|
checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"version_check 0.9.4",
|
"version_check 0.9.4",
|
||||||
"yansi",
|
"yansi",
|
||||||
|
@ -3957,8 +3981,8 @@ checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"itertools",
|
"itertools",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3996,8 +4020,8 @@ version = "0.1.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
|
checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -4074,11 +4098,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.23"
|
version = "1.0.26"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
|
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4465,8 +4489,8 @@ version = "0.7.40"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ff26ed6c7c4dfc2aa9480b86a60e3c7233543a270a680e10758a507c5a4ce476"
|
checksum = "ff26ed6c7c4dfc2aa9480b86a60e3c7233543a270a680e10758a507c5a4ce476"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -4683,8 +4707,8 @@ version = "0.11.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e"
|
checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -4790,8 +4814,8 @@ version = "1.0.152"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -4845,7 +4869,7 @@ dependencies = [
|
||||||
"field-offset",
|
"field-offset",
|
||||||
"itertools",
|
"itertools",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"num_enum",
|
"num_enum 0.5.7",
|
||||||
"safe-transmute",
|
"safe-transmute",
|
||||||
"serde",
|
"serde",
|
||||||
"solana-program",
|
"solana-program",
|
||||||
|
@ -5364,8 +5388,8 @@ version = "1.14.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "be23cc7a382f54dfe1348edb94610e5cc146b8eb21563cdd04062a403c75ba62"
|
checksum = "be23cc7a382f54dfe1348edb94610e5cc146b8eb21563cdd04062a403c75ba62"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"rustc_version 0.4.0",
|
"rustc_version 0.4.0",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -5437,7 +5461,7 @@ dependencies = [
|
||||||
"log 0.4.17",
|
"log 0.4.17",
|
||||||
"lru",
|
"lru",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"num_enum",
|
"num_enum 0.5.7",
|
||||||
"prost",
|
"prost",
|
||||||
"rand 0.7.3",
|
"rand 0.7.3",
|
||||||
"rand_chacha 0.2.2",
|
"rand_chacha 0.2.2",
|
||||||
|
@ -5866,8 +5890,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "33d0acbad862093ea123f3a27364336dcb0c8373522cd6810496a34e932c56c1"
|
checksum = "33d0acbad862093ea123f3a27364336dcb0c8373522cd6810496a34e932c56c1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bs58 0.4.0",
|
"bs58 0.4.0",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"rustversion",
|
"rustversion",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -6200,7 +6224,7 @@ dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"num-derive",
|
"num-derive",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"num_enum",
|
"num_enum 0.5.7",
|
||||||
"solana-program",
|
"solana-program",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
@ -6215,7 +6239,7 @@ dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"num-derive",
|
"num-derive",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"num_enum",
|
"num_enum 0.5.7",
|
||||||
"solana-program",
|
"solana-program",
|
||||||
"solana-zk-token-sdk",
|
"solana-zk-token-sdk",
|
||||||
"spl-memo",
|
"spl-memo",
|
||||||
|
@ -6308,8 +6332,8 @@ dependencies = [
|
||||||
"heck 0.4.0",
|
"heck 0.4.0",
|
||||||
"hex",
|
"hex",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sha2 0.10.6",
|
"sha2 0.10.6",
|
||||||
|
@ -6386,8 +6410,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
|
checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck 0.4.0",
|
"heck 0.4.0",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"rustversion",
|
"rustversion",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
@ -6421,8 +6445,19 @@ version = "1.0.107"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2 1.0.56",
|
||||||
|
"quote 1.0.26",
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -6438,8 +6473,8 @@ version = "0.12.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"unicode-xid 0.2.4",
|
"unicode-xid 0.2.4",
|
||||||
]
|
]
|
||||||
|
@ -6521,8 +6556,8 @@ version = "1.0.38"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -6666,8 +6701,8 @@ version = "1.8.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
|
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -6852,9 +6887,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"
|
checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"prettyplease",
|
"prettyplease",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"prost-build",
|
"prost-build",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -6928,8 +6963,8 @@ version = "0.1.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -7258,8 +7293,8 @@ dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"log 0.4.17",
|
"log 0.4.17",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
@ -7282,7 +7317,7 @@ version = "0.2.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
|
checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"wasm-bindgen-macro-support",
|
"wasm-bindgen-macro-support",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -7292,8 +7327,8 @@ version = "0.2.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
|
checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
|
@ -7615,8 +7650,8 @@ version = "1.3.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
|
checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.50",
|
"proc-macro2 1.0.56",
|
||||||
"quote 1.0.23",
|
"quote 1.0.26",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"synstructure",
|
"synstructure",
|
||||||
]
|
]
|
||||||
|
|
|
@ -15,6 +15,10 @@ path = "src/worker/main.rs"
|
||||||
name = "server"
|
name = "server"
|
||||||
path = "src/server/main.rs"
|
path = "src/server/main.rs"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "backfill"
|
||||||
|
path = "src/backfill/main.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
tokio-stream = "0.1"
|
tokio-stream = "0.1"
|
||||||
|
@ -51,3 +55,7 @@ serum_dex = { version = "0.5.10", git = "https://github.com/openbook-dex/program
|
||||||
anchor-lang = ">=0.25.0"
|
anchor-lang = ">=0.25.0"
|
||||||
|
|
||||||
actix-web = "4"
|
actix-web = "4"
|
||||||
|
|
||||||
|
arrayref = "0.3.6"
|
||||||
|
bytemuck = "1.12.3"
|
||||||
|
num_enum = "0.6.1"
|
|
@ -20,7 +20,6 @@ pub struct CoinGeckoTicker {
|
||||||
pub last_price: f64,
|
pub last_price: f64,
|
||||||
pub base_volume: f64,
|
pub base_volume: f64,
|
||||||
pub target_volume: f64,
|
pub target_volume: f64,
|
||||||
pub liquidity_in_usd: f64,
|
|
||||||
pub bid: f64,
|
pub bid: f64,
|
||||||
pub ask: f64,
|
pub ask: f64,
|
||||||
pub high: f64,
|
pub high: f64,
|
||||||
|
|
|
@ -3,5 +3,6 @@ pub mod coingecko;
|
||||||
pub mod markets;
|
pub mod markets;
|
||||||
pub mod openbook;
|
pub mod openbook;
|
||||||
pub mod resolution;
|
pub mod resolution;
|
||||||
|
pub mod slab;
|
||||||
pub mod trader;
|
pub mod trader;
|
||||||
pub mod tradingview;
|
pub mod tradingview;
|
||||||
|
|
|
@ -0,0 +1,454 @@
|
||||||
|
use anchor_lang::prelude::Pubkey;
|
||||||
|
use arrayref::{array_refs, mut_array_refs};
|
||||||
|
use bytemuck::{cast, cast_mut, cast_ref, cast_slice, cast_slice_mut, Pod, Zeroable};
|
||||||
|
use futures::join;
|
||||||
|
use num_enum::{IntoPrimitive, TryFromPrimitive};
|
||||||
|
use solana_client::nonblocking::rpc_client::RpcClient;
|
||||||
|
use sqlx::types::Decimal;
|
||||||
|
use std::{
|
||||||
|
convert::{identity, TryFrom},
|
||||||
|
mem::{align_of, size_of},
|
||||||
|
num::NonZeroU64, str::FromStr,
|
||||||
|
};
|
||||||
|
|
||||||
|
use crate::structs::openbook::token_factor;
|
||||||
|
|
||||||
|
use super::markets::MarketInfo;
|
||||||
|
|
||||||
|
pub type NodeHandle = u32;
|
||||||
|
|
||||||
|
#[derive(IntoPrimitive, TryFromPrimitive, Debug)]
|
||||||
|
#[repr(u32)]
|
||||||
|
enum NodeTag {
|
||||||
|
Uninitialized = 0,
|
||||||
|
InnerNode = 1,
|
||||||
|
LeafNode = 2,
|
||||||
|
FreeNode = 3,
|
||||||
|
LastFreeNode = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, IntoPrimitive, TryFromPrimitive, Debug)]
|
||||||
|
#[repr(u8)]
|
||||||
|
pub enum FeeTier {
|
||||||
|
Base,
|
||||||
|
_SRM2,
|
||||||
|
_SRM3,
|
||||||
|
_SRM4,
|
||||||
|
_SRM5,
|
||||||
|
_SRM6,
|
||||||
|
_MSRM,
|
||||||
|
Stable,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone)]
|
||||||
|
#[repr(packed)]
|
||||||
|
#[allow(dead_code)]
|
||||||
|
struct InnerNode {
|
||||||
|
tag: u32,
|
||||||
|
prefix_len: u32,
|
||||||
|
key: u128,
|
||||||
|
children: [u32; 2],
|
||||||
|
_padding: [u64; 5],
|
||||||
|
}
|
||||||
|
unsafe impl Zeroable for InnerNode {}
|
||||||
|
unsafe impl Pod for InnerNode {}
|
||||||
|
|
||||||
|
impl InnerNode {
|
||||||
|
fn walk_down(&self, search_key: u128) -> (NodeHandle, bool) {
|
||||||
|
let crit_bit_mask = (1u128 << 127) >> self.prefix_len;
|
||||||
|
let crit_bit = (search_key & crit_bit_mask) != 0;
|
||||||
|
(self.children[crit_bit as usize], crit_bit)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
#[repr(packed)]
|
||||||
|
pub struct LeafNode {
|
||||||
|
pub tag: u32,
|
||||||
|
pub owner_slot: u8,
|
||||||
|
pub fee_tier: u8,
|
||||||
|
pub padding: [u8; 2],
|
||||||
|
pub key: u128,
|
||||||
|
pub owner: [u64; 4],
|
||||||
|
pub quantity: u64,
|
||||||
|
pub client_order_id: u64,
|
||||||
|
}
|
||||||
|
unsafe impl Zeroable for LeafNode {}
|
||||||
|
unsafe impl Pod for LeafNode {}
|
||||||
|
|
||||||
|
impl LeafNode {
|
||||||
|
#[inline]
|
||||||
|
pub fn new(
|
||||||
|
owner_slot: u8,
|
||||||
|
key: u128,
|
||||||
|
owner: [u64; 4],
|
||||||
|
quantity: u64,
|
||||||
|
fee_tier: FeeTier,
|
||||||
|
client_order_id: u64,
|
||||||
|
) -> Self {
|
||||||
|
LeafNode {
|
||||||
|
tag: NodeTag::LeafNode.into(),
|
||||||
|
owner_slot,
|
||||||
|
fee_tier: fee_tier.into(),
|
||||||
|
padding: [0; 2],
|
||||||
|
key,
|
||||||
|
owner,
|
||||||
|
quantity,
|
||||||
|
client_order_id,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn fee_tier(&self) -> FeeTier {
|
||||||
|
FeeTier::try_from_primitive(self.fee_tier).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn price(&self) -> NonZeroU64 {
|
||||||
|
NonZeroU64::new((self.key >> 64) as u64).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn order_id(&self) -> u128 {
|
||||||
|
self.key
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn quantity(&self) -> u64 {
|
||||||
|
self.quantity
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn set_quantity(&mut self, quantity: u64) {
|
||||||
|
self.quantity = quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn owner(&self) -> [u64; 4] {
|
||||||
|
self.owner
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn owner_slot(&self) -> u8 {
|
||||||
|
self.owner_slot
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn client_order_id(&self) -> u64 {
|
||||||
|
self.client_order_id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone)]
|
||||||
|
#[repr(packed)]
|
||||||
|
#[allow(dead_code)]
|
||||||
|
struct FreeNode {
|
||||||
|
tag: u32,
|
||||||
|
next: u32,
|
||||||
|
_padding: [u64; 8],
|
||||||
|
}
|
||||||
|
unsafe impl Zeroable for FreeNode {}
|
||||||
|
unsafe impl Pod for FreeNode {}
|
||||||
|
|
||||||
|
const fn _const_max(a: usize, b: usize) -> usize {
|
||||||
|
let gt = (a > b) as usize;
|
||||||
|
gt * a + (1 - gt) * b
|
||||||
|
}
|
||||||
|
|
||||||
|
const _INNER_NODE_SIZE: usize = size_of::<InnerNode>();
|
||||||
|
const _LEAF_NODE_SIZE: usize = size_of::<LeafNode>();
|
||||||
|
const _FREE_NODE_SIZE: usize = size_of::<FreeNode>();
|
||||||
|
const _NODE_SIZE: usize = 72;
|
||||||
|
|
||||||
|
const _INNER_NODE_ALIGN: usize = align_of::<InnerNode>();
|
||||||
|
const _LEAF_NODE_ALIGN: usize = align_of::<LeafNode>();
|
||||||
|
const _FREE_NODE_ALIGN: usize = align_of::<FreeNode>();
|
||||||
|
const _NODE_ALIGN: usize = 1;
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
#[repr(packed)]
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub struct AnyNode {
|
||||||
|
tag: u32,
|
||||||
|
data: [u32; 17],
|
||||||
|
}
|
||||||
|
unsafe impl Zeroable for AnyNode {}
|
||||||
|
unsafe impl Pod for AnyNode {}
|
||||||
|
|
||||||
|
enum NodeRef<'a> {
|
||||||
|
Inner(&'a InnerNode),
|
||||||
|
Leaf(&'a LeafNode),
|
||||||
|
}
|
||||||
|
|
||||||
|
enum NodeRefMut<'a> {
|
||||||
|
Inner(&'a mut InnerNode),
|
||||||
|
Leaf(&'a mut LeafNode),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AnyNode {
|
||||||
|
fn key(&self) -> Option<u128> {
|
||||||
|
match self.case()? {
|
||||||
|
NodeRef::Inner(inner) => Some(inner.key),
|
||||||
|
NodeRef::Leaf(leaf) => Some(leaf.key),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prefix_len(&self) -> u32 {
|
||||||
|
match self.case().unwrap() {
|
||||||
|
NodeRef::Inner(&InnerNode { prefix_len, .. }) => prefix_len,
|
||||||
|
NodeRef::Leaf(_) => 128,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn children(&self) -> Option<[u32; 2]> {
|
||||||
|
match self.case().unwrap() {
|
||||||
|
NodeRef::Inner(&InnerNode { children, .. }) => Some(children),
|
||||||
|
NodeRef::Leaf(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn case(&self) -> Option<NodeRef> {
|
||||||
|
match NodeTag::try_from(self.tag) {
|
||||||
|
Ok(NodeTag::InnerNode) => Some(NodeRef::Inner(cast_ref(self))),
|
||||||
|
Ok(NodeTag::LeafNode) => Some(NodeRef::Leaf(cast_ref(self))),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn case_mut(&mut self) -> Option<NodeRefMut> {
|
||||||
|
match NodeTag::try_from(self.tag) {
|
||||||
|
Ok(NodeTag::InnerNode) => Some(NodeRefMut::Inner(cast_mut(self))),
|
||||||
|
Ok(NodeTag::LeafNode) => Some(NodeRefMut::Leaf(cast_mut(self))),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_leaf(&self) -> Option<&LeafNode> {
|
||||||
|
match self.case() {
|
||||||
|
Some(NodeRef::Leaf(leaf_ref)) => Some(leaf_ref),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_leaf_mut(&mut self) -> Option<&mut LeafNode> {
|
||||||
|
match self.case_mut() {
|
||||||
|
Some(NodeRefMut::Leaf(leaf_ref)) => Some(leaf_ref),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AsRef<AnyNode> for InnerNode {
|
||||||
|
fn as_ref(&self) -> &AnyNode {
|
||||||
|
cast_ref(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AsRef<AnyNode> for LeafNode {
|
||||||
|
#[inline]
|
||||||
|
fn as_ref(&self) -> &AnyNode {
|
||||||
|
cast_ref(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
#[repr(packed)]
|
||||||
|
struct SlabHeader {
|
||||||
|
_bump_index: u64,
|
||||||
|
_free_list_len: u64,
|
||||||
|
_free_list_head: u32,
|
||||||
|
|
||||||
|
root_node: u32,
|
||||||
|
leaf_count: u64,
|
||||||
|
}
|
||||||
|
unsafe impl Zeroable for SlabHeader {}
|
||||||
|
unsafe impl Pod for SlabHeader {}
|
||||||
|
|
||||||
|
const SLAB_HEADER_LEN: usize = size_of::<SlabHeader>();
|
||||||
|
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
unsafe fn invariant(check: bool) {
|
||||||
|
if check {
|
||||||
|
unreachable!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(debug_assertions))]
|
||||||
|
#[inline(always)]
|
||||||
|
unsafe fn invariant(check: bool) {
|
||||||
|
if check {
|
||||||
|
std::hint::unreachable_unchecked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Mainly copied from the original code, slightly modified to make working with it easier.
|
||||||
|
#[repr(transparent)]
|
||||||
|
pub struct Slab([u8]);
|
||||||
|
|
||||||
|
impl Slab {
|
||||||
|
/// Creates a slab that holds and references the bytes
|
||||||
|
///
|
||||||
|
/// ```compile_fail
|
||||||
|
/// let slab = {
|
||||||
|
/// let mut bytes = [10; 100];
|
||||||
|
/// serum_dex::critbit::Slab::new(&mut bytes)
|
||||||
|
/// };
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn new(raw_bytes: &mut [u8]) -> &mut Self {
|
||||||
|
let data_end = raw_bytes.len() - 7;
|
||||||
|
let bytes = &mut raw_bytes[13..data_end];
|
||||||
|
let len_without_header = bytes.len().checked_sub(SLAB_HEADER_LEN).unwrap();
|
||||||
|
let slop = len_without_header % size_of::<AnyNode>();
|
||||||
|
let truncated_len = bytes.len() - slop;
|
||||||
|
let bytes = &mut bytes[..truncated_len];
|
||||||
|
let slab: &mut Self = unsafe { &mut *(bytes as *mut [u8] as *mut Slab) };
|
||||||
|
slab.check_size_align(); // check alignment
|
||||||
|
slab
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(&self, key: u32) -> Option<&AnyNode> {
|
||||||
|
let node = self.nodes().get(key as usize)?;
|
||||||
|
let tag = NodeTag::try_from(node.tag);
|
||||||
|
match tag {
|
||||||
|
Ok(NodeTag::InnerNode) | Ok(NodeTag::LeafNode) => Some(node),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_size_align(&self) {
|
||||||
|
let (header_bytes, nodes_bytes) = array_refs![&self.0, SLAB_HEADER_LEN; .. ;];
|
||||||
|
let _header: &SlabHeader = cast_ref(header_bytes);
|
||||||
|
let _nodes: &[AnyNode] = cast_slice(nodes_bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parts(&self) -> (&SlabHeader, &[AnyNode]) {
|
||||||
|
unsafe {
|
||||||
|
invariant(self.0.len() < size_of::<SlabHeader>());
|
||||||
|
invariant((self.0.as_ptr() as usize) % align_of::<SlabHeader>() != 0);
|
||||||
|
invariant(
|
||||||
|
((self.0.as_ptr() as usize) + size_of::<SlabHeader>()) % align_of::<AnyNode>() != 0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let (header_bytes, nodes_bytes) = array_refs![&self.0, SLAB_HEADER_LEN; .. ;];
|
||||||
|
let header = cast_ref(header_bytes);
|
||||||
|
let nodes = cast_slice(nodes_bytes);
|
||||||
|
(header, nodes)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn header(&self) -> &SlabHeader {
|
||||||
|
self.parts().0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn nodes(&self) -> &[AnyNode] {
|
||||||
|
self.parts().1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn root(&self) -> Option<NodeHandle> {
|
||||||
|
if self.header().leaf_count == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(self.header().root_node)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_min_max(&self, find_max: bool) -> Option<NodeHandle> {
|
||||||
|
let mut root: NodeHandle = self.root()?;
|
||||||
|
loop {
|
||||||
|
let root_contents = self.get(root).unwrap();
|
||||||
|
match root_contents.case().unwrap() {
|
||||||
|
NodeRef::Inner(&InnerNode { children, .. }) => {
|
||||||
|
root = children[if find_max { 1 } else { 0 }];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
_ => return Some(root),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn find_min(&self) -> Option<&LeafNode> {
|
||||||
|
let handle = self.find_min_max(false).unwrap();
|
||||||
|
match self.get(handle) {
|
||||||
|
Some(node) => Some(node.as_leaf().unwrap()),
|
||||||
|
None => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn find_max(&self) -> Option<&LeafNode> {
|
||||||
|
let handle = self.find_min_max(true).unwrap();
|
||||||
|
match self.get(handle) {
|
||||||
|
Some(node) => Some(node.as_leaf().unwrap()),
|
||||||
|
None => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_best(&self, market: &MarketInfo, bid: bool) -> Decimal {
|
||||||
|
let min = if bid {
|
||||||
|
self.find_max()
|
||||||
|
} else {
|
||||||
|
self.find_min()
|
||||||
|
};
|
||||||
|
|
||||||
|
let price_lots = Decimal::from(min.unwrap().key >> 64);
|
||||||
|
let base_multiplier = token_factor(market.base_decimals);
|
||||||
|
let quote_multiplier = token_factor(market.quote_decimals);
|
||||||
|
let base_lot_size = Decimal::from(market.base_lot_size);
|
||||||
|
let quote_lot_size = Decimal::from(market.quote_lot_size);
|
||||||
|
(price_lots * quote_lot_size * base_multiplier) / (base_lot_size * quote_multiplier)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_best_bids_and_asks(
|
||||||
|
client: RpcClient,
|
||||||
|
markets: &Vec<MarketInfo>,
|
||||||
|
) -> (Vec<Decimal>, Vec<Decimal>) {
|
||||||
|
let bid_keys = markets
|
||||||
|
.iter()
|
||||||
|
.map(|m| Pubkey::from_str(&m.bids_key).unwrap())
|
||||||
|
.collect::<Vec<Pubkey>>();
|
||||||
|
let ask_keys = markets
|
||||||
|
.iter()
|
||||||
|
.map(|m| Pubkey::from_str(&m.asks_key).unwrap())
|
||||||
|
.collect::<Vec<Pubkey>>();
|
||||||
|
|
||||||
|
// will error if more than 100 markets are used (not a good idea in general)
|
||||||
|
let (bid_results, ask_results) = join!(
|
||||||
|
client.get_multiple_accounts(&bid_keys),
|
||||||
|
client.get_multiple_accounts(&ask_keys)
|
||||||
|
);
|
||||||
|
|
||||||
|
let bids = bid_results.unwrap();
|
||||||
|
let asks = ask_results.unwrap();
|
||||||
|
|
||||||
|
let best_bids = bids
|
||||||
|
.into_iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter_map(|(index, x)| {
|
||||||
|
if let Some(mut account) = x {
|
||||||
|
let slab = Slab::new(&mut account.data);
|
||||||
|
Some(slab.get_best(&markets[index], true))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let best_asks = asks
|
||||||
|
.into_iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter_map(|(index, x)| {
|
||||||
|
if let Some(mut account) = x {
|
||||||
|
let slab = Slab::new(&mut account.data);
|
||||||
|
Some(slab.get_best(&markets[index], false))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
(best_bids, best_asks)
|
||||||
|
}
|
Loading…
Reference in New Issue