191
Cargo.lock
generated
191
Cargo.lock
generated
@ -132,7 +132,7 @@ dependencies = [
|
|||||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -182,7 +182,7 @@ version = "1.2.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -309,7 +309,7 @@ dependencies = [
|
|||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -319,8 +319,8 @@ dependencies = [
|
|||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -334,7 +334,7 @@ version = "0.11.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"feature-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"feature-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -423,7 +423,7 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -478,7 +478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -619,7 +619,7 @@ dependencies = [
|
|||||||
"idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -759,7 +759,7 @@ dependencies = [
|
|||||||
"csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -921,7 +921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"strsim 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"strsim 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -939,7 +939,7 @@ dependencies = [
|
|||||||
"curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1081,7 +1081,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1295,7 +1295,7 @@ name = "generic-array"
|
|||||||
version = "0.13.2"
|
version = "0.13.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1772,7 +1772,7 @@ dependencies = [
|
|||||||
"jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"jsonrpc-pubsub 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1786,8 +1786,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
|
"futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1832,7 +1832,7 @@ dependencies = [
|
|||||||
"jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1893,8 +1893,8 @@ dependencies = [
|
|||||||
"petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2377,7 +2377,7 @@ dependencies = [
|
|||||||
"data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -3115,7 +3115,7 @@ dependencies = [
|
|||||||
"mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3153,7 +3153,7 @@ dependencies = [
|
|||||||
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3344,10 +3344,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.104"
|
version = "1.0.105"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3355,12 +3355,12 @@ name = "serde_bytes"
|
|||||||
version = "0.11.3"
|
version = "0.11.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.104"
|
version = "1.0.105"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3375,7 +3375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3385,7 +3385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3396,7 +3396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3407,7 +3407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3615,8 +3615,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-archiver-utils 1.0.11",
|
"solana-archiver-utils 1.0.11",
|
||||||
"solana-chacha 1.0.11",
|
"solana-chacha 1.0.11",
|
||||||
@ -3755,8 +3755,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3769,8 +3769,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-runtime 1.0.11",
|
"solana-runtime 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
"thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3844,8 +3844,8 @@ dependencies = [
|
|||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pretty-hex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pretty-hex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-budget-program 1.0.11",
|
"solana-budget-program 1.0.11",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
@ -3875,8 +3875,8 @@ version = "1.0.11"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -3894,12 +3894,13 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-net-utils 1.0.11",
|
"solana-net-utils 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
|
"solana-transaction-status 1.0.11",
|
||||||
"solana-vote-program 1.0.11",
|
"solana-vote-program 1.0.11",
|
||||||
"thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tungstenite 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tungstenite 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3913,8 +3914,8 @@ dependencies = [
|
|||||||
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
]
|
]
|
||||||
@ -3952,8 +3953,8 @@ dependencies = [
|
|||||||
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serial_test 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serial_test 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serial_test_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serial_test_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3975,6 +3976,7 @@ dependencies = [
|
|||||||
"solana-stake-program 1.0.11",
|
"solana-stake-program 1.0.11",
|
||||||
"solana-storage-program 1.0.11",
|
"solana-storage-program 1.0.11",
|
||||||
"solana-sys-tuner 1.0.11",
|
"solana-sys-tuner 1.0.11",
|
||||||
|
"solana-transaction-status 1.0.11",
|
||||||
"solana-vote-program 1.0.11",
|
"solana-vote-program 1.0.11",
|
||||||
"solana-vote-signer 1.0.11",
|
"solana-vote-signer 1.0.11",
|
||||||
"systemstat 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"systemstat 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4003,7 +4005,7 @@ dependencies = [
|
|||||||
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4018,8 +4020,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-metrics 1.0.11",
|
"solana-metrics 1.0.11",
|
||||||
"solana-runtime 1.0.11",
|
"solana-runtime 1.0.11",
|
||||||
@ -4044,8 +4046,8 @@ dependencies = [
|
|||||||
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-metrics 1.0.11",
|
"solana-metrics 1.0.11",
|
||||||
@ -4061,7 +4063,7 @@ dependencies = [
|
|||||||
"base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
@ -4121,8 +4123,8 @@ dependencies = [
|
|||||||
"nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
"solana-client 1.0.11",
|
"solana-client 1.0.11",
|
||||||
@ -4175,11 +4177,10 @@ dependencies = [
|
|||||||
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rocksdb 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-budget-program 1.0.11",
|
"solana-budget-program 1.0.11",
|
||||||
"solana-client 1.0.11",
|
|
||||||
"solana-genesis-programs 1.0.11",
|
"solana-genesis-programs 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-measure 1.0.11",
|
"solana-measure 1.0.11",
|
||||||
@ -4191,6 +4192,7 @@ dependencies = [
|
|||||||
"solana-runtime 1.0.11",
|
"solana-runtime 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
"solana-stake-program 1.0.11",
|
"solana-stake-program 1.0.11",
|
||||||
|
"solana-transaction-status 1.0.11",
|
||||||
"solana-vote-program 1.0.11",
|
"solana-vote-program 1.0.11",
|
||||||
"symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4266,7 +4268,7 @@ version = "1.0.11"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"byte-unit 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byte-unit 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
@ -4324,9 +4326,9 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
@ -4350,7 +4352,7 @@ version = "1.0.11"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
@ -4366,8 +4368,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-clap-utils 1.0.11",
|
"solana-clap-utils 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
@ -4408,7 +4410,7 @@ dependencies = [
|
|||||||
"matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-budget-program 1.0.11",
|
"solana-budget-program 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-metrics 1.0.11",
|
"solana-metrics 1.0.11",
|
||||||
@ -4470,8 +4472,8 @@ dependencies = [
|
|||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-bpf-loader-program 1.0.11",
|
"solana-bpf-loader-program 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-measure 1.0.11",
|
"solana-measure 1.0.11",
|
||||||
@ -4491,7 +4493,7 @@ name = "solana-scripts"
|
|||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4516,9 +4518,9 @@ dependencies = [
|
|||||||
"pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-crate-features 1.0.11",
|
"solana-crate-features 1.0.11",
|
||||||
@ -4560,8 +4562,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-config-program 1.0.11",
|
"solana-config-program 1.0.11",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-metrics 1.0.11",
|
"solana-metrics 1.0.11",
|
||||||
@ -4580,8 +4582,8 @@ dependencies = [
|
|||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
]
|
]
|
||||||
@ -4601,6 +4603,17 @@ dependencies = [
|
|||||||
"users 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"users 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "solana-transaction-status"
|
||||||
|
version = "1.0.11"
|
||||||
|
dependencies = [
|
||||||
|
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"solana-sdk 1.0.11",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-upload-perf"
|
name = "solana-upload-perf"
|
||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
@ -4647,8 +4660,8 @@ dependencies = [
|
|||||||
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-config-program 1.0.11",
|
"solana-config-program 1.0.11",
|
||||||
"solana-runtime 1.0.11",
|
"solana-runtime 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
@ -4663,8 +4676,8 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 1.0.11",
|
"solana-logger 1.0.11",
|
||||||
"solana-metrics 1.0.11",
|
"solana-metrics 1.0.11",
|
||||||
"solana-sdk 1.0.11",
|
"solana-sdk 1.0.11",
|
||||||
@ -4750,7 +4763,7 @@ dependencies = [
|
|||||||
"parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_logger 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_logger 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4777,7 +4790,7 @@ dependencies = [
|
|||||||
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4853,7 +4866,7 @@ dependencies = [
|
|||||||
"itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4883,7 +4896,7 @@ version = "0.0.1-sol4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4944,7 +4957,7 @@ dependencies = [
|
|||||||
"prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"radix_trie 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"radix_trie 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -4964,7 +4977,7 @@ dependencies = [
|
|||||||
"mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_crypto 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_libra_failure_ext 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -5069,7 +5082,7 @@ dependencies = [
|
|||||||
"new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -5365,7 +5378,7 @@ dependencies = [
|
|||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand04_compat 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand04_compat 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -5658,7 +5671,7 @@ name = "toml"
|
|||||||
version = "0.5.4"
|
version = "0.5.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -5915,7 +5928,7 @@ version = "0.2.56"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasm-bindgen-macro 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasm-bindgen-macro 0.2.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -6562,9 +6575,9 @@ dependencies = [
|
|||||||
"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895"
|
"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895"
|
||||||
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||||
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||||
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
|
"checksum serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)" = "e707fbbf255b8fc8c3b99abb91e7257a622caeb20a9818cbadbeeede4e0932ff"
|
||||||
"checksum serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "325a073952621257820e7a3469f55ba4726d8b28657e7e36653d1c36dc2c84ae"
|
"checksum serde_bytes 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "325a073952621257820e7a3469f55ba4726d8b28657e7e36653d1c36dc2c84ae"
|
||||||
"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
|
"checksum serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)" = "ac5d00fc561ba2724df6758a17de23df5914f20e41cb00f94d5b7ae42fffaff8"
|
||||||
"checksum serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "21b01d7f0288608a01dca632cf1df859df6fd6ffa885300fc275ce2ba6221953"
|
"checksum serde_json 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "21b01d7f0288608a01dca632cf1df859df6fd6ffa885300fc275ce2ba6221953"
|
||||||
"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a"
|
"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a"
|
||||||
"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
|
"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
|
||||||
|
@ -49,6 +49,7 @@ members = [
|
|||||||
"sdk-c",
|
"sdk-c",
|
||||||
"scripts",
|
"scripts",
|
||||||
"sys-tuner",
|
"sys-tuner",
|
||||||
|
"transaction-status",
|
||||||
"upload-perf",
|
"upload-perf",
|
||||||
"net-utils",
|
"net-utils",
|
||||||
"vote-signer",
|
"vote-signer",
|
||||||
|
@ -21,6 +21,7 @@ serde_derive = "1.0.103"
|
|||||||
serde_json = "1.0.46"
|
serde_json = "1.0.46"
|
||||||
solana-net-utils = { path = "../net-utils", version = "1.0.11" }
|
solana-net-utils = { path = "../net-utils", version = "1.0.11" }
|
||||||
solana-sdk = { path = "../sdk", version = "1.0.11" }
|
solana-sdk = { path = "../sdk", version = "1.0.11" }
|
||||||
|
solana-transaction-status = { path = "../transaction-status", version = "1.0.11" }
|
||||||
solana-vote-program = { path = "../programs/vote", version = "1.0.11" }
|
solana-vote-program = { path = "../programs/vote", version = "1.0.11" }
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
tungstenite = "0.10.1"
|
tungstenite = "0.10.1"
|
||||||
|
@ -2,7 +2,7 @@ use crate::{
|
|||||||
client_error::Result,
|
client_error::Result,
|
||||||
generic_rpc_client_request::GenericRpcClientRequest,
|
generic_rpc_client_request::GenericRpcClientRequest,
|
||||||
rpc_request::RpcRequest,
|
rpc_request::RpcRequest,
|
||||||
rpc_response::{Response, RpcResponseContext, RpcTransactionStatus},
|
rpc_response::{Response, RpcResponseContext},
|
||||||
};
|
};
|
||||||
use serde_json::{Number, Value};
|
use serde_json::{Number, Value};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
@ -10,6 +10,7 @@ use solana_sdk::{
|
|||||||
instruction::InstructionError,
|
instruction::InstructionError,
|
||||||
transaction::{self, TransactionError},
|
transaction::{self, TransactionError},
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::TransactionStatus;
|
||||||
use std::{collections::HashMap, sync::RwLock};
|
use std::{collections::HashMap, sync::RwLock};
|
||||||
|
|
||||||
pub const PUBKEY: &str = "7RoSF9fUmdphVCpabEoefH81WwrW7orsWonXWqTXkKV8";
|
pub const PUBKEY: &str = "7RoSF9fUmdphVCpabEoefH81WwrW7orsWonXWqTXkKV8";
|
||||||
@ -100,9 +101,16 @@ impl GenericRpcClientRequest for MockRpcClientRequest {
|
|||||||
let status = if self.url == "sig_not_found" {
|
let status = if self.url == "sig_not_found" {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(RpcTransactionStatus { status, slot: 1 })
|
Some(TransactionStatus {
|
||||||
|
status,
|
||||||
|
slot: 1,
|
||||||
|
confirmations: Some(0),
|
||||||
|
})
|
||||||
};
|
};
|
||||||
serde_json::to_value(vec![status])?
|
serde_json::to_value(Response {
|
||||||
|
context: RpcResponseContext { slot: 1 },
|
||||||
|
value: vec![status],
|
||||||
|
})?
|
||||||
}
|
}
|
||||||
RpcRequest::GetTransactionCount => Value::Number(Number::from(1234)),
|
RpcRequest::GetTransactionCount => Value::Number(Number::from(1234)),
|
||||||
RpcRequest::GetSlot => Value::Number(Number::from(0)),
|
RpcRequest::GetSlot => Value::Number(Number::from(0)),
|
||||||
|
@ -5,9 +5,9 @@ use crate::{
|
|||||||
rpc_client_request::RpcClientRequest,
|
rpc_client_request::RpcClientRequest,
|
||||||
rpc_request::{RpcError, RpcRequest},
|
rpc_request::{RpcError, RpcRequest},
|
||||||
rpc_response::{
|
rpc_response::{
|
||||||
Response, RpcAccount, RpcBlockhashFeeCalculator, RpcConfirmedBlock, RpcContactInfo,
|
Response, RpcAccount, RpcBlockhashFeeCalculator, RpcContactInfo, RpcEpochInfo,
|
||||||
RpcEpochInfo, RpcFeeCalculator, RpcFeeRateGovernor, RpcIdentity, RpcKeyedAccount,
|
RpcFeeCalculator, RpcFeeRateGovernor, RpcIdentity, RpcKeyedAccount, RpcLeaderSchedule,
|
||||||
RpcLeaderSchedule, RpcResult, RpcTransactionStatus, RpcVersionInfo, RpcVoteAccountStatus,
|
RpcResult, RpcVersionInfo, RpcVoteAccountStatus,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use bincode::serialize;
|
use bincode::serialize;
|
||||||
@ -27,6 +27,7 @@ use solana_sdk::{
|
|||||||
signers::Signers,
|
signers::Signers,
|
||||||
transaction::{self, Transaction, TransactionError},
|
transaction::{self, Transaction, TransactionError},
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::{ConfirmedBlock, TransactionStatus};
|
||||||
use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY;
|
use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY;
|
||||||
use std::{
|
use std::{
|
||||||
error,
|
error,
|
||||||
@ -123,9 +124,11 @@ impl RpcClient {
|
|||||||
json!([[signature.to_string()], commitment_config]),
|
json!([[signature.to_string()], commitment_config]),
|
||||||
5,
|
5,
|
||||||
)?;
|
)?;
|
||||||
let result: Vec<Option<RpcTransactionStatus>> =
|
let result: Response<Vec<Option<TransactionStatus>>> =
|
||||||
serde_json::from_value(signature_status).unwrap();
|
serde_json::from_value(signature_status).unwrap();
|
||||||
Ok(result[0].clone().map(|status_meta| status_meta.status))
|
Ok(result.value[0]
|
||||||
|
.clone()
|
||||||
|
.map(|status_meta| status_meta.status))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_slot(&self) -> ClientResult<Slot> {
|
pub fn get_slot(&self) -> ClientResult<Slot> {
|
||||||
@ -172,7 +175,7 @@ impl RpcClient {
|
|||||||
.map_err(|err| ClientError::new_with_command(err.into(), "GetClusterNodes"))
|
.map_err(|err| ClientError::new_with_command(err.into(), "GetClusterNodes"))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_confirmed_block(&self, slot: Slot) -> ClientResult<RpcConfirmedBlock> {
|
pub fn get_confirmed_block(&self, slot: Slot) -> ClientResult<ConfirmedBlock> {
|
||||||
let response = self
|
let response = self
|
||||||
.client
|
.client
|
||||||
.send(&RpcRequest::GetConfirmedBlock, json!([slot]), 0)
|
.send(&RpcRequest::GetConfirmedBlock, json!([slot]), 0)
|
||||||
@ -922,14 +925,25 @@ impl RpcClient {
|
|||||||
let response = self
|
let response = self
|
||||||
.client
|
.client
|
||||||
.send(
|
.send(
|
||||||
&RpcRequest::GetNumBlocksSinceSignatureConfirmation,
|
&RpcRequest::GetSignatureStatus,
|
||||||
json!([signature.to_string(), CommitmentConfig::recent().ok()]),
|
json!([[signature.to_string()], CommitmentConfig::recent().ok()]),
|
||||||
1,
|
1,
|
||||||
)
|
)
|
||||||
.map_err(|err| err.into_with_command("GetNumBlocksSinceSignatureConfirmation"))?;
|
.map_err(|err| err.into_with_command("GetSignatureStatus"))?;
|
||||||
serde_json::from_value(response).map_err(|err| {
|
let result: Response<Vec<Option<TransactionStatus>>> =
|
||||||
ClientError::new_with_command(err.into(), "GetNumBlocksSinceSignatureConfirmation")
|
serde_json::from_value(response).unwrap();
|
||||||
})
|
|
||||||
|
let confirmations = result.value[0]
|
||||||
|
.clone()
|
||||||
|
.ok_or_else(|| {
|
||||||
|
ClientError::new_with_command(
|
||||||
|
ClientErrorKind::Custom("signature not found".to_string()),
|
||||||
|
"GetSignatureStatus",
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.confirmations
|
||||||
|
.unwrap_or(MAX_LOCKOUT_HISTORY + 1);
|
||||||
|
Ok(confirmations)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn send_and_confirm_transaction_with_spinner<T: Signers>(
|
pub fn send_and_confirm_transaction_with_spinner<T: Signers>(
|
||||||
|
@ -18,7 +18,6 @@ pub enum RpcRequest {
|
|||||||
GetIdentity,
|
GetIdentity,
|
||||||
GetInflation,
|
GetInflation,
|
||||||
GetLeaderSchedule,
|
GetLeaderSchedule,
|
||||||
GetNumBlocksSinceSignatureConfirmation,
|
|
||||||
GetProgramAccounts,
|
GetProgramAccounts,
|
||||||
GetRecentBlockhash,
|
GetRecentBlockhash,
|
||||||
GetFeeCalculatorForBlockhash,
|
GetFeeCalculatorForBlockhash,
|
||||||
@ -60,9 +59,6 @@ impl RpcRequest {
|
|||||||
RpcRequest::GetIdentity => "getIdentity",
|
RpcRequest::GetIdentity => "getIdentity",
|
||||||
RpcRequest::GetInflation => "getInflation",
|
RpcRequest::GetInflation => "getInflation",
|
||||||
RpcRequest::GetLeaderSchedule => "getLeaderSchedule",
|
RpcRequest::GetLeaderSchedule => "getLeaderSchedule",
|
||||||
RpcRequest::GetNumBlocksSinceSignatureConfirmation => {
|
|
||||||
"getNumBlocksSinceSignatureConfirmation"
|
|
||||||
}
|
|
||||||
RpcRequest::GetProgramAccounts => "getProgramAccounts",
|
RpcRequest::GetProgramAccounts => "getProgramAccounts",
|
||||||
RpcRequest::GetRecentBlockhash => "getRecentBlockhash",
|
RpcRequest::GetRecentBlockhash => "getRecentBlockhash",
|
||||||
RpcRequest::GetFeeCalculatorForBlockhash => "getFeeCalculatorForBlockhash",
|
RpcRequest::GetFeeCalculatorForBlockhash => "getFeeCalculatorForBlockhash",
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
use crate::{client_error, rpc_request::RpcError};
|
use crate::{client_error, rpc_request::RpcError};
|
||||||
use bincode::serialize;
|
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
account::Account,
|
account::Account,
|
||||||
clock::{Epoch, Slot},
|
clock::{Epoch, Slot},
|
||||||
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
fee_calculator::{FeeCalculator, FeeRateGovernor},
|
||||||
message::MessageHeader,
|
|
||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
transaction::{Result, Transaction},
|
transaction::Result,
|
||||||
};
|
};
|
||||||
use std::{collections::HashMap, net::SocketAddr, str::FromStr};
|
use std::{collections::HashMap, net::SocketAddr, str::FromStr};
|
||||||
|
|
||||||
@ -30,126 +28,6 @@ pub struct RpcBlockCommitment<T> {
|
|||||||
pub total_stake: u64,
|
pub total_stake: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
pub struct RpcReward {
|
|
||||||
pub pubkey: String,
|
|
||||||
pub lamports: i64,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type RpcRewards = Vec<RpcReward>;
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcConfirmedBlock {
|
|
||||||
pub previous_blockhash: String,
|
|
||||||
pub blockhash: String,
|
|
||||||
pub parent_slot: Slot,
|
|
||||||
pub transactions: Vec<RpcTransactionWithStatusMeta>,
|
|
||||||
pub rewards: RpcRewards,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcTransactionWithStatusMeta {
|
|
||||||
pub transaction: RpcEncodedTransaction,
|
|
||||||
pub meta: Option<RpcTransactionStatusMeta>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub enum RpcTransactionEncoding {
|
|
||||||
Binary,
|
|
||||||
Json,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase", untagged)]
|
|
||||||
pub enum RpcEncodedTransaction {
|
|
||||||
Binary(String),
|
|
||||||
Json(RpcTransaction),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl RpcEncodedTransaction {
|
|
||||||
pub fn encode(transaction: Transaction, encoding: RpcTransactionEncoding) -> Self {
|
|
||||||
if encoding == RpcTransactionEncoding::Json {
|
|
||||||
RpcEncodedTransaction::Json(RpcTransaction {
|
|
||||||
signatures: transaction
|
|
||||||
.signatures
|
|
||||||
.iter()
|
|
||||||
.map(|sig| sig.to_string())
|
|
||||||
.collect(),
|
|
||||||
message: RpcMessage {
|
|
||||||
header: transaction.message.header,
|
|
||||||
account_keys: transaction
|
|
||||||
.message
|
|
||||||
.account_keys
|
|
||||||
.iter()
|
|
||||||
.map(|pubkey| pubkey.to_string())
|
|
||||||
.collect(),
|
|
||||||
recent_blockhash: transaction.message.recent_blockhash.to_string(),
|
|
||||||
instructions: transaction
|
|
||||||
.message
|
|
||||||
.instructions
|
|
||||||
.iter()
|
|
||||||
.map(|instruction| RpcCompiledInstruction {
|
|
||||||
program_id_index: instruction.program_id_index,
|
|
||||||
accounts: instruction.accounts.clone(),
|
|
||||||
data: bs58::encode(instruction.data.clone()).into_string(),
|
|
||||||
})
|
|
||||||
.collect(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
RpcEncodedTransaction::Binary(
|
|
||||||
bs58::encode(serialize(&transaction).unwrap()).into_string(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A duplicate representation of a Transaction for pretty JSON serialization
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcTransaction {
|
|
||||||
pub signatures: Vec<String>,
|
|
||||||
pub message: RpcMessage,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A duplicate representation of a Message for pretty JSON serialization
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcMessage {
|
|
||||||
pub header: MessageHeader,
|
|
||||||
pub account_keys: Vec<String>,
|
|
||||||
pub recent_blockhash: String,
|
|
||||||
pub instructions: Vec<RpcCompiledInstruction>,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A duplicate representation of a Message for pretty JSON serialization
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcCompiledInstruction {
|
|
||||||
pub program_id_index: u8,
|
|
||||||
pub accounts: Vec<u8>,
|
|
||||||
pub data: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcTransactionStatusMeta {
|
|
||||||
pub status: Result<()>,
|
|
||||||
pub fee: u64,
|
|
||||||
pub pre_balances: Vec<u64>,
|
|
||||||
pub post_balances: Vec<u64>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct RpcTransactionStatus {
|
|
||||||
pub slot: Slot,
|
|
||||||
pub status: Result<()>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct RpcBlockhashFeeCalculator {
|
pub struct RpcBlockhashFeeCalculator {
|
||||||
|
@ -46,6 +46,7 @@ serde_json = "1.0.46"
|
|||||||
solana-budget-program = { path = "../programs/budget", version = "1.0.11" }
|
solana-budget-program = { path = "../programs/budget", version = "1.0.11" }
|
||||||
solana-clap-utils = { path = "../clap-utils", version = "1.0.11" }
|
solana-clap-utils = { path = "../clap-utils", version = "1.0.11" }
|
||||||
solana-client = { path = "../client", version = "1.0.11" }
|
solana-client = { path = "../client", version = "1.0.11" }
|
||||||
|
solana-transaction-status = { path = "../transaction-status", version = "1.0.11" }
|
||||||
solana-faucet = { path = "../faucet", version = "1.0.11" }
|
solana-faucet = { path = "../faucet", version = "1.0.11" }
|
||||||
ed25519-dalek = "=1.0.0-pre.1"
|
ed25519-dalek = "=1.0.0-pre.1"
|
||||||
solana-ledger = { path = "../ledger", version = "1.0.11" }
|
solana-ledger = { path = "../ledger", version = "1.0.11" }
|
||||||
|
@ -1017,7 +1017,6 @@ mod tests {
|
|||||||
};
|
};
|
||||||
use crossbeam_channel::unbounded;
|
use crossbeam_channel::unbounded;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use solana_client::rpc_response::{RpcEncodedTransaction, RpcTransactionWithStatusMeta};
|
|
||||||
use solana_ledger::{
|
use solana_ledger::{
|
||||||
blockstore::entries_to_test_shreds,
|
blockstore::entries_to_test_shreds,
|
||||||
entry::{next_entry, Entry, EntrySlice},
|
entry::{next_entry, Entry, EntrySlice},
|
||||||
@ -1030,6 +1029,7 @@ mod tests {
|
|||||||
system_transaction,
|
system_transaction,
|
||||||
transaction::TransactionError,
|
transaction::TransactionError,
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::{EncodedTransaction, TransactionWithStatusMeta};
|
||||||
use std::{sync::atomic::Ordering, thread::sleep};
|
use std::{sync::atomic::Ordering, thread::sleep};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1975,10 +1975,10 @@ mod tests {
|
|||||||
let confirmed_block = blockstore.get_confirmed_block(bank.slot(), None).unwrap();
|
let confirmed_block = blockstore.get_confirmed_block(bank.slot(), None).unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 3);
|
assert_eq!(confirmed_block.transactions.len(), 3);
|
||||||
|
|
||||||
for RpcTransactionWithStatusMeta { transaction, meta } in
|
for TransactionWithStatusMeta { transaction, meta } in
|
||||||
confirmed_block.transactions.into_iter()
|
confirmed_block.transactions.into_iter()
|
||||||
{
|
{
|
||||||
if let RpcEncodedTransaction::Json(transaction) = transaction {
|
if let EncodedTransaction::Json(transaction) = transaction {
|
||||||
if transaction.signatures[0] == success_signature.to_string() {
|
if transaction.signatures[0] == success_signature.to_string() {
|
||||||
assert_eq!(meta.unwrap().status, Ok(()));
|
assert_eq!(meta.unwrap().status, Ok(()));
|
||||||
} else if transaction.signatures[0] == ix_error_signature.to_string() {
|
} else if transaction.signatures[0] == ix_error_signature.to_string() {
|
||||||
|
@ -1066,7 +1066,6 @@ pub(crate) mod tests {
|
|||||||
transaction_status_service::TransactionStatusService,
|
transaction_status_service::TransactionStatusService,
|
||||||
};
|
};
|
||||||
use crossbeam_channel::unbounded;
|
use crossbeam_channel::unbounded;
|
||||||
use solana_client::rpc_response::{RpcEncodedTransaction, RpcTransactionWithStatusMeta};
|
|
||||||
use solana_ledger::{
|
use solana_ledger::{
|
||||||
blockstore::make_slot_entries,
|
blockstore::make_slot_entries,
|
||||||
blockstore::{entries_to_test_shreds, BlockstoreError},
|
blockstore::{entries_to_test_shreds, BlockstoreError},
|
||||||
@ -1090,6 +1089,7 @@ pub(crate) mod tests {
|
|||||||
transaction::TransactionError,
|
transaction::TransactionError,
|
||||||
};
|
};
|
||||||
use solana_stake_program::stake_state;
|
use solana_stake_program::stake_state;
|
||||||
|
use solana_transaction_status::{EncodedTransaction, TransactionWithStatusMeta};
|
||||||
use solana_vote_program::{
|
use solana_vote_program::{
|
||||||
vote_state::{self, Vote, VoteState, VoteStateVersions},
|
vote_state::{self, Vote, VoteState, VoteStateVersions},
|
||||||
vote_transaction,
|
vote_transaction,
|
||||||
@ -1899,10 +1899,10 @@ pub(crate) mod tests {
|
|||||||
let confirmed_block = blockstore.get_confirmed_block(slot, None).unwrap();
|
let confirmed_block = blockstore.get_confirmed_block(slot, None).unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 3);
|
assert_eq!(confirmed_block.transactions.len(), 3);
|
||||||
|
|
||||||
for RpcTransactionWithStatusMeta { transaction, meta } in
|
for TransactionWithStatusMeta { transaction, meta } in
|
||||||
confirmed_block.transactions.into_iter()
|
confirmed_block.transactions.into_iter()
|
||||||
{
|
{
|
||||||
if let RpcEncodedTransaction::Json(transaction) = transaction {
|
if let EncodedTransaction::Json(transaction) = transaction {
|
||||||
if transaction.signatures[0] == signatures[0].to_string() {
|
if transaction.signatures[0] == signatures[0].to_string() {
|
||||||
assert_eq!(meta.unwrap().status, Ok(()));
|
assert_eq!(meta.unwrap().status, Ok(()));
|
||||||
} else if transaction.signatures[0] == signatures[1].to_string() {
|
} else if transaction.signatures[0] == signatures[1].to_string() {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crossbeam_channel::{Receiver, RecvTimeoutError, Sender};
|
use crossbeam_channel::{Receiver, RecvTimeoutError, Sender};
|
||||||
use solana_client::rpc_response::RpcReward;
|
|
||||||
use solana_ledger::blockstore::Blockstore;
|
use solana_ledger::blockstore::Blockstore;
|
||||||
use solana_sdk::{clock::Slot, pubkey::Pubkey};
|
use solana_sdk::{clock::Slot, pubkey::Pubkey};
|
||||||
|
use solana_transaction_status::Reward;
|
||||||
use std::{
|
use std::{
|
||||||
sync::{
|
sync::{
|
||||||
atomic::{AtomicBool, Ordering},
|
atomic::{AtomicBool, Ordering},
|
||||||
@ -49,7 +49,7 @@ impl RewardsRecorderService {
|
|||||||
let (slot, rewards) = rewards_receiver.recv_timeout(Duration::from_secs(1))?;
|
let (slot, rewards) = rewards_receiver.recv_timeout(Duration::from_secs(1))?;
|
||||||
let rpc_rewards = rewards
|
let rpc_rewards = rewards
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(pubkey, lamports)| RpcReward {
|
.map(|(pubkey, lamports)| Reward {
|
||||||
pubkey: pubkey.to_string(),
|
pubkey: pubkey.to_string(),
|
||||||
lamports,
|
lamports,
|
||||||
})
|
})
|
||||||
|
136
core/src/rpc.rs
136
core/src/rpc.rs
@ -24,6 +24,7 @@ use solana_sdk::{
|
|||||||
timing::slot_duration_from_slots_per_year,
|
timing::slot_duration_from_slots_per_year,
|
||||||
transaction::Transaction,
|
transaction::Transaction,
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::{ConfirmedBlock, TransactionEncoding, TransactionStatus};
|
||||||
use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
|
use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
@ -215,25 +216,6 @@ impl JsonRpcRequestProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_signature_confirmation_status(
|
|
||||||
&self,
|
|
||||||
signature: Signature,
|
|
||||||
commitment: Option<CommitmentConfig>,
|
|
||||||
) -> Option<RpcSignatureConfirmation> {
|
|
||||||
self.bank(commitment)
|
|
||||||
.get_signature_confirmation_status(&signature)
|
|
||||||
.map(
|
|
||||||
|SignatureConfirmationStatus {
|
|
||||||
confirmations,
|
|
||||||
status,
|
|
||||||
..
|
|
||||||
}| RpcSignatureConfirmation {
|
|
||||||
confirmations,
|
|
||||||
status,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_slot(&self, commitment: Option<CommitmentConfig>) -> Result<u64> {
|
fn get_slot(&self, commitment: Option<CommitmentConfig>) -> Result<u64> {
|
||||||
Ok(self.bank(commitment).slot())
|
Ok(self.bank(commitment).slot())
|
||||||
}
|
}
|
||||||
@ -365,8 +347,8 @@ impl JsonRpcRequestProcessor {
|
|||||||
pub fn get_confirmed_block(
|
pub fn get_confirmed_block(
|
||||||
&self,
|
&self,
|
||||||
slot: Slot,
|
slot: Slot,
|
||||||
encoding: Option<RpcTransactionEncoding>,
|
encoding: Option<TransactionEncoding>,
|
||||||
) -> Result<Option<RpcConfirmedBlock>> {
|
) -> Result<Option<ConfirmedBlock>> {
|
||||||
if self.config.enable_rpc_transaction_history {
|
if self.config.enable_rpc_transaction_history {
|
||||||
Ok(self.blockstore.get_confirmed_block(slot, encoding).ok())
|
Ok(self.blockstore.get_confirmed_block(slot, encoding).ok())
|
||||||
} else {
|
} else {
|
||||||
@ -420,21 +402,33 @@ impl JsonRpcRequestProcessor {
|
|||||||
&self,
|
&self,
|
||||||
signatures: Vec<Signature>,
|
signatures: Vec<Signature>,
|
||||||
commitment: Option<CommitmentConfig>,
|
commitment: Option<CommitmentConfig>,
|
||||||
) -> Result<Vec<Option<RpcTransactionStatus>>> {
|
) -> RpcResponse<Vec<Option<TransactionStatus>>> {
|
||||||
let mut statuses: Vec<Option<RpcTransactionStatus>> = vec![];
|
let mut statuses: Vec<Option<TransactionStatus>> = vec![];
|
||||||
|
|
||||||
let bank = self.bank(commitment);
|
let bank = self.bank(commitment);
|
||||||
|
|
||||||
for signature in signatures {
|
for signature in signatures {
|
||||||
let status = bank.get_signature_confirmation_status(&signature).map(
|
let status = bank.get_signature_confirmation_status(&signature).map(
|
||||||
|SignatureConfirmationStatus { slot, status, .. }| RpcTransactionStatus {
|
|SignatureConfirmationStatus {
|
||||||
|
slot,
|
||||||
|
status,
|
||||||
|
confirmations,
|
||||||
|
}| TransactionStatus {
|
||||||
slot,
|
slot,
|
||||||
status,
|
status,
|
||||||
|
confirmations: if confirmations <= MAX_LOCKOUT_HISTORY {
|
||||||
|
Some(confirmations)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
statuses.push(status);
|
statuses.push(status);
|
||||||
}
|
}
|
||||||
Ok(statuses)
|
Ok(Response {
|
||||||
|
context: RpcResponseContext { slot: bank.slot() },
|
||||||
|
value: statuses,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -564,7 +558,7 @@ pub trait RpcSol {
|
|||||||
meta: Self::Metadata,
|
meta: Self::Metadata,
|
||||||
signature_strs: Vec<String>,
|
signature_strs: Vec<String>,
|
||||||
commitment: Option<CommitmentConfig>,
|
commitment: Option<CommitmentConfig>,
|
||||||
) -> Result<Vec<Option<RpcTransactionStatus>>>;
|
) -> RpcResponse<Vec<Option<TransactionStatus>>>;
|
||||||
|
|
||||||
#[rpc(meta, name = "getSlot")]
|
#[rpc(meta, name = "getSlot")]
|
||||||
fn get_slot(&self, meta: Self::Metadata, commitment: Option<CommitmentConfig>) -> Result<u64>;
|
fn get_slot(&self, meta: Self::Metadata, commitment: Option<CommitmentConfig>) -> Result<u64>;
|
||||||
@ -631,22 +625,6 @@ pub trait RpcSol {
|
|||||||
#[rpc(meta, name = "validatorExit")]
|
#[rpc(meta, name = "validatorExit")]
|
||||||
fn validator_exit(&self, meta: Self::Metadata) -> Result<bool>;
|
fn validator_exit(&self, meta: Self::Metadata) -> Result<bool>;
|
||||||
|
|
||||||
#[rpc(meta, name = "getNumBlocksSinceSignatureConfirmation")]
|
|
||||||
fn get_num_blocks_since_signature_confirmation(
|
|
||||||
&self,
|
|
||||||
meta: Self::Metadata,
|
|
||||||
signature_str: String,
|
|
||||||
commitment: Option<CommitmentConfig>,
|
|
||||||
) -> Result<Option<usize>>;
|
|
||||||
|
|
||||||
#[rpc(meta, name = "getSignatureConfirmation")]
|
|
||||||
fn get_signature_confirmation(
|
|
||||||
&self,
|
|
||||||
meta: Self::Metadata,
|
|
||||||
signature_str: String,
|
|
||||||
commitment: Option<CommitmentConfig>,
|
|
||||||
) -> Result<Option<RpcSignatureConfirmation>>;
|
|
||||||
|
|
||||||
#[rpc(meta, name = "getIdentity")]
|
#[rpc(meta, name = "getIdentity")]
|
||||||
fn get_identity(&self, meta: Self::Metadata) -> Result<RpcIdentity>;
|
fn get_identity(&self, meta: Self::Metadata) -> Result<RpcIdentity>;
|
||||||
|
|
||||||
@ -661,8 +639,8 @@ pub trait RpcSol {
|
|||||||
&self,
|
&self,
|
||||||
meta: Self::Metadata,
|
meta: Self::Metadata,
|
||||||
slot: Slot,
|
slot: Slot,
|
||||||
encoding: Option<RpcTransactionEncoding>,
|
encoding: Option<TransactionEncoding>,
|
||||||
) -> Result<Option<RpcConfirmedBlock>>;
|
) -> Result<Option<ConfirmedBlock>>;
|
||||||
|
|
||||||
#[rpc(meta, name = "getBlockTime")]
|
#[rpc(meta, name = "getBlockTime")]
|
||||||
fn get_block_time(&self, meta: Self::Metadata, slot: Slot) -> Result<Option<UnixTimestamp>>;
|
fn get_block_time(&self, meta: Self::Metadata, slot: Slot) -> Result<Option<UnixTimestamp>>;
|
||||||
@ -910,7 +888,7 @@ impl RpcSol for RpcSolImpl {
|
|||||||
meta: Self::Metadata,
|
meta: Self::Metadata,
|
||||||
signature_strs: Vec<String>,
|
signature_strs: Vec<String>,
|
||||||
commitment: Option<CommitmentConfig>,
|
commitment: Option<CommitmentConfig>,
|
||||||
) -> Result<Vec<Option<RpcTransactionStatus>>> {
|
) -> RpcResponse<Vec<Option<TransactionStatus>>> {
|
||||||
let mut signatures: Vec<Signature> = vec![];
|
let mut signatures: Vec<Signature> = vec![];
|
||||||
for signature_str in signature_strs {
|
for signature_str in signature_strs {
|
||||||
signatures.push(verify_signature(&signature_str)?);
|
signatures.push(verify_signature(&signature_str)?);
|
||||||
@ -925,34 +903,6 @@ impl RpcSol for RpcSolImpl {
|
|||||||
meta.request_processor.read().unwrap().get_slot(commitment)
|
meta.request_processor.read().unwrap().get_slot(commitment)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_num_blocks_since_signature_confirmation(
|
|
||||||
&self,
|
|
||||||
meta: Self::Metadata,
|
|
||||||
signature_str: String,
|
|
||||||
commitment: Option<CommitmentConfig>,
|
|
||||||
) -> Result<Option<usize>> {
|
|
||||||
self.get_signature_confirmation(meta, signature_str, commitment)
|
|
||||||
.map(|res| res.map(|x| x.confirmations))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_signature_confirmation(
|
|
||||||
&self,
|
|
||||||
meta: Self::Metadata,
|
|
||||||
signature_str: String,
|
|
||||||
commitment: Option<CommitmentConfig>,
|
|
||||||
) -> Result<Option<RpcSignatureConfirmation>> {
|
|
||||||
debug!(
|
|
||||||
"get_signature_confirmation rpc request received: {:?}",
|
|
||||||
signature_str
|
|
||||||
);
|
|
||||||
let signature = verify_signature(&signature_str)?;
|
|
||||||
Ok(meta
|
|
||||||
.request_processor
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.get_signature_confirmation_status(signature, commitment))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_transaction_count(
|
fn get_transaction_count(
|
||||||
&self,
|
&self,
|
||||||
meta: Self::Metadata,
|
meta: Self::Metadata,
|
||||||
@ -1039,7 +989,9 @@ impl RpcSol for RpcSolImpl {
|
|||||||
.request_processor
|
.request_processor
|
||||||
.read()
|
.read()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.get_signature_confirmation_status(signature, commitment.clone())
|
.get_signature_status(vec![signature], commitment.clone())?
|
||||||
|
.value[0]
|
||||||
|
.clone()
|
||||||
.map(|x| x.status);
|
.map(|x| x.status);
|
||||||
|
|
||||||
if signature_status == Some(Ok(())) {
|
if signature_status == Some(Ok(())) {
|
||||||
@ -1181,8 +1133,8 @@ impl RpcSol for RpcSolImpl {
|
|||||||
&self,
|
&self,
|
||||||
meta: Self::Metadata,
|
meta: Self::Metadata,
|
||||||
slot: Slot,
|
slot: Slot,
|
||||||
encoding: Option<RpcTransactionEncoding>,
|
encoding: Option<TransactionEncoding>,
|
||||||
) -> Result<Option<RpcConfirmedBlock>> {
|
) -> Result<Option<ConfirmedBlock>> {
|
||||||
meta.request_processor
|
meta.request_processor
|
||||||
.read()
|
.read()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@ -1217,7 +1169,6 @@ pub mod tests {
|
|||||||
};
|
};
|
||||||
use bincode::deserialize;
|
use bincode::deserialize;
|
||||||
use jsonrpc_core::{MetaIoHandler, Output, Response, Value};
|
use jsonrpc_core::{MetaIoHandler, Output, Response, Value};
|
||||||
use solana_client::rpc_response::{RpcEncodedTransaction, RpcTransactionWithStatusMeta};
|
|
||||||
use solana_ledger::{
|
use solana_ledger::{
|
||||||
blockstore::entries_to_test_shreds, blockstore_processor::fill_blockstore_slot_with_ticks,
|
blockstore::entries_to_test_shreds, blockstore_processor::fill_blockstore_slot_with_ticks,
|
||||||
entry::next_entry_mut, get_tmp_ledger_path,
|
entry::next_entry_mut, get_tmp_ledger_path,
|
||||||
@ -1231,6 +1182,7 @@ pub mod tests {
|
|||||||
system_transaction,
|
system_transaction,
|
||||||
transaction::{self, TransactionError},
|
transaction::{self, TransactionError},
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::{EncodedTransaction, TransactionWithStatusMeta};
|
||||||
use solana_vote_program::{
|
use solana_vote_program::{
|
||||||
vote_instruction,
|
vote_instruction,
|
||||||
vote_state::{Vote, VoteInit, MAX_LOCKOUT_HISTORY},
|
vote_state::{Vote, VoteInit, MAX_LOCKOUT_HISTORY},
|
||||||
@ -1813,10 +1765,10 @@ pub mod tests {
|
|||||||
let res = io.handle_request_sync(&req, meta.clone());
|
let res = io.handle_request_sync(&req, meta.clone());
|
||||||
let expected_res: transaction::Result<()> = Ok(());
|
let expected_res: transaction::Result<()> = Ok(());
|
||||||
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
let result: Vec<Option<RpcTransactionStatus>> =
|
let result: Option<TransactionStatus> =
|
||||||
serde_json::from_value(json["result"].clone())
|
serde_json::from_value(json["result"]["value"][0].clone())
|
||||||
.expect("actual response deserialization");
|
.expect("actual response deserialization");
|
||||||
assert_eq!(expected_res, result[0].as_ref().unwrap().status);
|
assert_eq!(expected_res, result.as_ref().unwrap().status);
|
||||||
|
|
||||||
// Test getSignatureStatus request on unprocessed tx
|
// Test getSignatureStatus request on unprocessed tx
|
||||||
let tx = system_transaction::transfer(&alice, &bob_pubkey, 10, blockhash);
|
let tx = system_transaction::transfer(&alice, &bob_pubkey, 10, blockhash);
|
||||||
@ -1826,10 +1778,10 @@ pub mod tests {
|
|||||||
);
|
);
|
||||||
let res = io.handle_request_sync(&req, meta.clone());
|
let res = io.handle_request_sync(&req, meta.clone());
|
||||||
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
let result: Vec<Option<RpcTransactionStatus>> =
|
let result: Option<TransactionStatus> =
|
||||||
serde_json::from_value(json["result"].clone())
|
serde_json::from_value(json["result"]["value"][0].clone())
|
||||||
.expect("actual response deserialization");
|
.expect("actual response deserialization");
|
||||||
assert!(result[0].is_none());
|
assert!(result.is_none());
|
||||||
|
|
||||||
// Test getSignatureStatus request on a TransactionError
|
// Test getSignatureStatus request on a TransactionError
|
||||||
let req = format!(
|
let req = format!(
|
||||||
@ -1842,10 +1794,10 @@ pub mod tests {
|
|||||||
InstructionError::CustomError(1),
|
InstructionError::CustomError(1),
|
||||||
));
|
));
|
||||||
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
let json: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
let result: Vec<Option<RpcTransactionStatus>> =
|
let result: Option<TransactionStatus> =
|
||||||
serde_json::from_value(json["result"].clone())
|
serde_json::from_value(json["result"]["value"][0].clone())
|
||||||
.expect("actual response deserialization");
|
.expect("actual response deserialization");
|
||||||
assert_eq!(expected_res, result[0].as_ref().unwrap().status);
|
assert_eq!(expected_res, result.as_ref().unwrap().status);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -2284,15 +2236,15 @@ pub mod tests {
|
|||||||
let res = io.handle_request_sync(&req, meta.clone());
|
let res = io.handle_request_sync(&req, meta.clone());
|
||||||
let result: Value = serde_json::from_str(&res.expect("actual response"))
|
let result: Value = serde_json::from_str(&res.expect("actual response"))
|
||||||
.expect("actual response deserialization");
|
.expect("actual response deserialization");
|
||||||
let confirmed_block: Option<RpcConfirmedBlock> =
|
let confirmed_block: Option<ConfirmedBlock> =
|
||||||
serde_json::from_value(result["result"].clone()).unwrap();
|
serde_json::from_value(result["result"].clone()).unwrap();
|
||||||
let confirmed_block = confirmed_block.unwrap();
|
let confirmed_block = confirmed_block.unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 3);
|
assert_eq!(confirmed_block.transactions.len(), 3);
|
||||||
|
|
||||||
for RpcTransactionWithStatusMeta { transaction, meta } in
|
for TransactionWithStatusMeta { transaction, meta } in
|
||||||
confirmed_block.transactions.into_iter()
|
confirmed_block.transactions.into_iter()
|
||||||
{
|
{
|
||||||
if let RpcEncodedTransaction::Json(transaction) = transaction {
|
if let EncodedTransaction::Json(transaction) = transaction {
|
||||||
if transaction.signatures[0] == confirmed_block_signatures[0].to_string() {
|
if transaction.signatures[0] == confirmed_block_signatures[0].to_string() {
|
||||||
assert_eq!(transaction.message.recent_blockhash, blockhash.to_string());
|
assert_eq!(transaction.message.recent_blockhash, blockhash.to_string());
|
||||||
assert_eq!(meta.unwrap().status, Ok(()));
|
assert_eq!(meta.unwrap().status, Ok(()));
|
||||||
@ -2316,15 +2268,15 @@ pub mod tests {
|
|||||||
let res = io.handle_request_sync(&req, meta);
|
let res = io.handle_request_sync(&req, meta);
|
||||||
let result: Value = serde_json::from_str(&res.expect("actual response"))
|
let result: Value = serde_json::from_str(&res.expect("actual response"))
|
||||||
.expect("actual response deserialization");
|
.expect("actual response deserialization");
|
||||||
let confirmed_block: Option<RpcConfirmedBlock> =
|
let confirmed_block: Option<ConfirmedBlock> =
|
||||||
serde_json::from_value(result["result"].clone()).unwrap();
|
serde_json::from_value(result["result"].clone()).unwrap();
|
||||||
let confirmed_block = confirmed_block.unwrap();
|
let confirmed_block = confirmed_block.unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 3);
|
assert_eq!(confirmed_block.transactions.len(), 3);
|
||||||
|
|
||||||
for RpcTransactionWithStatusMeta { transaction, meta } in
|
for TransactionWithStatusMeta { transaction, meta } in
|
||||||
confirmed_block.transactions.into_iter()
|
confirmed_block.transactions.into_iter()
|
||||||
{
|
{
|
||||||
if let RpcEncodedTransaction::Binary(transaction) = transaction {
|
if let EncodedTransaction::Binary(transaction) = transaction {
|
||||||
let decoded_transaction: Transaction =
|
let decoded_transaction: Transaction =
|
||||||
deserialize(&bs58::decode(&transaction).into_vec().unwrap()).unwrap();
|
deserialize(&bs58::decode(&transaction).into_vec().unwrap()).unwrap();
|
||||||
if decoded_transaction.signatures[0] == confirmed_block_signatures[0] {
|
if decoded_transaction.signatures[0] == confirmed_block_signatures[0] {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
use crossbeam_channel::{Receiver, RecvTimeoutError};
|
use crossbeam_channel::{Receiver, RecvTimeoutError};
|
||||||
use solana_client::rpc_response::RpcTransactionStatusMeta;
|
|
||||||
use solana_ledger::{blockstore::Blockstore, blockstore_processor::TransactionStatusBatch};
|
use solana_ledger::{blockstore::Blockstore, blockstore_processor::TransactionStatusBatch};
|
||||||
use solana_runtime::{
|
use solana_runtime::{
|
||||||
bank::{Bank, HashAgeKind},
|
bank::{Bank, HashAgeKind},
|
||||||
nonce_utils,
|
nonce_utils,
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::TransactionStatusMeta;
|
||||||
use std::{
|
use std::{
|
||||||
sync::{
|
sync::{
|
||||||
atomic::{AtomicBool, Ordering},
|
atomic::{AtomicBool, Ordering},
|
||||||
@ -73,7 +73,7 @@ impl TransactionStatusService {
|
|||||||
blockstore
|
blockstore
|
||||||
.write_transaction_status(
|
.write_transaction_status(
|
||||||
(slot, transaction.signatures[0]),
|
(slot, transaction.signatures[0]),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status,
|
status,
|
||||||
fee,
|
fee,
|
||||||
pre_balances,
|
pre_balances,
|
||||||
|
@ -31,10 +31,8 @@ To interact with a Solana node inside a JavaScript application, use the [solana-
|
|||||||
* [getInflation](jsonrpc-api.md#getinflation)
|
* [getInflation](jsonrpc-api.md#getinflation)
|
||||||
* [getLeaderSchedule](jsonrpc-api.md#getleaderschedule)
|
* [getLeaderSchedule](jsonrpc-api.md#getleaderschedule)
|
||||||
* [getMinimumBalanceForRentExemption](jsonrpc-api.md#getminimumbalanceforrentexemption)
|
* [getMinimumBalanceForRentExemption](jsonrpc-api.md#getminimumbalanceforrentexemption)
|
||||||
* [getNumBlocksSinceSignatureConfirmation](jsonrpc-api.md#getnumblockssincesignatureconfirmation)
|
|
||||||
* [getProgramAccounts](jsonrpc-api.md#getprogramaccounts)
|
* [getProgramAccounts](jsonrpc-api.md#getprogramaccounts)
|
||||||
* [getRecentBlockhash](jsonrpc-api.md#getrecentblockhash)
|
* [getRecentBlockhash](jsonrpc-api.md#getrecentblockhash)
|
||||||
* [getSignatureConfirmation](jsonrpc-api.md#getsignatureconfirmation)
|
|
||||||
* [getSignatureStatus](jsonrpc-api.md#getsignaturestatus)
|
* [getSignatureStatus](jsonrpc-api.md#getsignaturestatus)
|
||||||
* [getSlot](jsonrpc-api.md#getslot)
|
* [getSlot](jsonrpc-api.md#getslot)
|
||||||
* [getSlotLeader](jsonrpc-api.md#getslotleader)
|
* [getSlotLeader](jsonrpc-api.md#getslotleader)
|
||||||
@ -580,29 +578,6 @@ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "
|
|||||||
{"jsonrpc":"2.0","result":500,"id":1}
|
{"jsonrpc":"2.0","result":500,"id":1}
|
||||||
```
|
```
|
||||||
|
|
||||||
### getNumBlocksSinceSignatureConfirmation
|
|
||||||
|
|
||||||
Returns the current number of blocks since signature has been confirmed.
|
|
||||||
|
|
||||||
#### Parameters:
|
|
||||||
|
|
||||||
* `<string>` - Signature of Transaction to confirm, as base-58 encoded string
|
|
||||||
* `<object>` - (optional) [Commitment](jsonrpc-api.md#configuring-state-commitment)
|
|
||||||
|
|
||||||
#### Results:
|
|
||||||
|
|
||||||
* `<u64>` - count, or null if signature not found
|
|
||||||
|
|
||||||
#### Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
// Request
|
|
||||||
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"getNumBlocksSinceSignatureConfirmation", "params":["5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"]}' http://localhost:8899
|
|
||||||
|
|
||||||
// Result
|
|
||||||
{"jsonrpc":"2.0","result":8,"id":1}
|
|
||||||
```
|
|
||||||
|
|
||||||
### getProgramAccounts
|
### getProgramAccounts
|
||||||
|
|
||||||
Returns all accounts owned by the provided program Pubkey
|
Returns all accounts owned by the provided program Pubkey
|
||||||
@ -660,33 +635,6 @@ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1, "m
|
|||||||
{"jsonrpc":"2.0","result":{"context":{"slot":1},"value":{"blockhash":"CSymwgTNX1j3E4qhKfJAUE41nBWEwXufoYryPbkde5RR","feeCalculator":{"burnPercent":50,"lamportsPerSignature":5000,"maxLamportsPerSignature":10000,"minLamportsPerSignature":5000,"targetLamportsPerSignature":1000,"targetSignaturesPerSlot":20000}}},"id":1}
|
{"jsonrpc":"2.0","result":{"context":{"slot":1},"value":{"blockhash":"CSymwgTNX1j3E4qhKfJAUE41nBWEwXufoYryPbkde5RR","feeCalculator":{"burnPercent":50,"lamportsPerSignature":5000,"maxLamportsPerSignature":10000,"minLamportsPerSignature":5000,"targetLamportsPerSignature":1000,"targetSignaturesPerSlot":20000}}},"id":1}
|
||||||
```
|
```
|
||||||
|
|
||||||
### getSignatureConfirmation
|
|
||||||
|
|
||||||
Returns the status and number of confirmations of a given signature.
|
|
||||||
#### Parameters:
|
|
||||||
|
|
||||||
* `<string>` - Signature of Transaction to confirm, as base-58 encoded string
|
|
||||||
* `<object>` - (optional) [Commitment](jsonrpc-api.md#configuring-state-commitment)
|
|
||||||
|
|
||||||
#### Results:
|
|
||||||
|
|
||||||
* `<null>` - Unknown transaction
|
|
||||||
* `<object>` - Transaction confirmations and status:
|
|
||||||
* `confirmations: <u64>` - count of confirmations since transaction was processed
|
|
||||||
* `status: <object>` -
|
|
||||||
* `"Ok": <null>` - Transaction was successful
|
|
||||||
* `"Err": <ERR>` - Transaction failed with TransactionError [TransactionError definitions](https://github.com/solana-labs/solana/blob/master/sdk/src/transaction.rs#L14)
|
|
||||||
|
|
||||||
#### Example:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
// Request
|
|
||||||
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"getSignatureConfirmation", "params":["5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"]}' http://localhost:8899
|
|
||||||
|
|
||||||
// Result
|
|
||||||
{"jsonrpc":"2.0","result":{"confirmations":12,"status":{"Ok": null}},"id":1}
|
|
||||||
```
|
|
||||||
|
|
||||||
### getSignatureStatus
|
### getSignatureStatus
|
||||||
|
|
||||||
Returns the status of a given signature. This method is similar to [confirmTransaction](jsonrpc-api.md#confirmtransaction) but provides more resolution for error events.
|
Returns the status of a given signature. This method is similar to [confirmTransaction](jsonrpc-api.md#confirmtransaction) but provides more resolution for error events.
|
||||||
@ -700,11 +648,16 @@ Returns the status of a given signature. This method is similar to [confirmTrans
|
|||||||
|
|
||||||
#### Results:
|
#### Results:
|
||||||
|
|
||||||
|
An RpcResponse containing a JSON object consisting of an array of TransactionStatus objects.
|
||||||
|
|
||||||
|
* `RpcResponse<object>` - RpcResponse JSON object with `value` field:
|
||||||
|
|
||||||
An array of:
|
An array of:
|
||||||
|
|
||||||
* `<null>` - Unknown transaction
|
* `<null>` - Unknown transaction
|
||||||
* `<object>`
|
* `<object>`
|
||||||
* `slot: <u64>` - The slot the transaction was processed
|
* `slot: <u64>` - The slot the transaction was processed
|
||||||
|
* `confirmations: <usize | null>` - Number of blocks since signature confirmation, null if rooted
|
||||||
* `status: <object>` - Transaction status
|
* `status: <object>` - Transaction status
|
||||||
* `"Ok": <null>` - Transaction was successful
|
* `"Ok": <null>` - Transaction was successful
|
||||||
* `"Err": <ERR>` - Transaction failed with TransactionError [TransactionError definitions](https://github.com/solana-labs/solana/blob/master/sdk/src/transaction.rs#L14)
|
* `"Err": <ERR>` - Transaction failed with TransactionError [TransactionError definitions](https://github.com/solana-labs/solana/blob/master/sdk/src/transaction.rs#L14)
|
||||||
@ -716,7 +669,10 @@ An array of:
|
|||||||
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"getSignatureStatus", "params":[["5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW", "5j7s6NiJS3JAkvgkoc18WVAsiSaci2pxB2A6ueCJP4tprA2TFg9wSyTLeYouxPBJEMzJinENTkpA52YStRW5Dia7"]]]}' http://localhost:8899
|
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"getSignatureStatus", "params":[["5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW", "5j7s6NiJS3JAkvgkoc18WVAsiSaci2pxB2A6ueCJP4tprA2TFg9wSyTLeYouxPBJEMzJinENTkpA52YStRW5Dia7"]]]}' http://localhost:8899
|
||||||
|
|
||||||
// Result
|
// Result
|
||||||
{"jsonrpc":"2.0","result":[{"slot": 72, "status": {"Ok": null}}, null],"id":1}
|
{"jsonrpc":"2.0","result":{"context":{"slot":82},"value":[{"slot": 72, "confirmations": 10, "status": {"Ok": null}}, null]},"id":1}
|
||||||
|
|
||||||
|
// Result, first transaction rooted
|
||||||
|
{"jsonrpc":"2.0","result":{"context":{"slot":82},"value":[{"slot": 48, "confirmations": null, "status": {"Ok": null}}, null]},"id":1}
|
||||||
```
|
```
|
||||||
|
|
||||||
### getSlot
|
### getSlot
|
||||||
|
@ -28,7 +28,7 @@ reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0
|
|||||||
regex = "1.3.4"
|
regex = "1.3.4"
|
||||||
serde = "1.0.104"
|
serde = "1.0.104"
|
||||||
serde_bytes = "0.11.3"
|
serde_bytes = "0.11.3"
|
||||||
solana-client = { path = "../client", version = "1.0.11" }
|
solana-transaction-status = { path = "../transaction-status", version = "1.0.11" }
|
||||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.11" }
|
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.11" }
|
||||||
solana-logger = { path = "../logger", version = "1.0.11" }
|
solana-logger = { path = "../logger", version = "1.0.11" }
|
||||||
solana-measure = { path = "../measure", version = "1.0.11" }
|
solana-measure = { path = "../measure", version = "1.0.11" }
|
||||||
|
@ -22,10 +22,6 @@ use rayon::{
|
|||||||
ThreadPool,
|
ThreadPool,
|
||||||
};
|
};
|
||||||
use rocksdb::DBRawIterator;
|
use rocksdb::DBRawIterator;
|
||||||
use solana_client::rpc_response::{
|
|
||||||
RpcConfirmedBlock, RpcEncodedTransaction, RpcRewards, RpcTransactionEncoding,
|
|
||||||
RpcTransactionStatusMeta, RpcTransactionWithStatusMeta,
|
|
||||||
};
|
|
||||||
use solana_measure::measure::Measure;
|
use solana_measure::measure::Measure;
|
||||||
use solana_metrics::{datapoint_debug, datapoint_error};
|
use solana_metrics::{datapoint_debug, datapoint_error};
|
||||||
use solana_rayon_threadlimit::get_thread_count;
|
use solana_rayon_threadlimit::get_thread_count;
|
||||||
@ -40,6 +36,10 @@ use solana_sdk::{
|
|||||||
timing::timestamp,
|
timing::timestamp,
|
||||||
transaction::Transaction,
|
transaction::Transaction,
|
||||||
};
|
};
|
||||||
|
use solana_transaction_status::{
|
||||||
|
ConfirmedBlock, EncodedTransaction, Rewards, TransactionEncoding, TransactionStatusMeta,
|
||||||
|
TransactionWithStatusMeta,
|
||||||
|
};
|
||||||
use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL};
|
use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL};
|
||||||
use std::{
|
use std::{
|
||||||
cell::RefCell,
|
cell::RefCell,
|
||||||
@ -1396,15 +1396,15 @@ impl Blockstore {
|
|||||||
pub fn get_confirmed_block(
|
pub fn get_confirmed_block(
|
||||||
&self,
|
&self,
|
||||||
slot: Slot,
|
slot: Slot,
|
||||||
encoding: Option<RpcTransactionEncoding>,
|
encoding: Option<TransactionEncoding>,
|
||||||
) -> Result<RpcConfirmedBlock> {
|
) -> Result<ConfirmedBlock> {
|
||||||
let lowest_cleanup_slot = self.lowest_cleanup_slot.read().unwrap();
|
let lowest_cleanup_slot = self.lowest_cleanup_slot.read().unwrap();
|
||||||
// lowest_cleanup_slot is the last slot that was not cleaned up by
|
// lowest_cleanup_slot is the last slot that was not cleaned up by
|
||||||
// LedgerCleanupService
|
// LedgerCleanupService
|
||||||
if *lowest_cleanup_slot > slot {
|
if *lowest_cleanup_slot > slot {
|
||||||
return Err(BlockstoreError::SlotCleanedUp);
|
return Err(BlockstoreError::SlotCleanedUp);
|
||||||
}
|
}
|
||||||
let encoding = encoding.unwrap_or(RpcTransactionEncoding::Json);
|
let encoding = encoding.unwrap_or(TransactionEncoding::Json);
|
||||||
if self.is_root(slot) {
|
if self.is_root(slot) {
|
||||||
let slot_meta_cf = self.db.column::<cf::SlotMeta>();
|
let slot_meta_cf = self.db.column::<cf::SlotMeta>();
|
||||||
let slot_meta = match slot_meta_cf.get(slot)? {
|
let slot_meta = match slot_meta_cf.get(slot)? {
|
||||||
@ -1433,7 +1433,7 @@ impl Blockstore {
|
|||||||
|
|
||||||
let rewards = self.rewards_cf.get(slot)?.unwrap_or_else(|| vec![]);
|
let rewards = self.rewards_cf.get(slot)?.unwrap_or_else(|| vec![]);
|
||||||
|
|
||||||
let block = RpcConfirmedBlock {
|
let block = ConfirmedBlock {
|
||||||
previous_blockhash: previous_blockhash.to_string(),
|
previous_blockhash: previous_blockhash.to_string(),
|
||||||
blockhash: blockhash.to_string(),
|
blockhash: blockhash.to_string(),
|
||||||
parent_slot: slot_meta.parent_slot,
|
parent_slot: slot_meta.parent_slot,
|
||||||
@ -1453,15 +1453,14 @@ impl Blockstore {
|
|||||||
fn map_transactions_to_statuses<'a>(
|
fn map_transactions_to_statuses<'a>(
|
||||||
&self,
|
&self,
|
||||||
slot: Slot,
|
slot: Slot,
|
||||||
encoding: RpcTransactionEncoding,
|
encoding: TransactionEncoding,
|
||||||
iterator: impl Iterator<Item = Transaction> + 'a,
|
iterator: impl Iterator<Item = Transaction> + 'a,
|
||||||
) -> Vec<RpcTransactionWithStatusMeta> {
|
) -> Vec<TransactionWithStatusMeta> {
|
||||||
iterator
|
iterator
|
||||||
.map(|transaction| {
|
.map(|transaction| {
|
||||||
let signature = transaction.signatures[0];
|
let signature = transaction.signatures[0];
|
||||||
let encoded_transaction =
|
let encoded_transaction = EncodedTransaction::encode(transaction, encoding.clone());
|
||||||
RpcEncodedTransaction::encode(transaction, encoding.clone());
|
TransactionWithStatusMeta {
|
||||||
RpcTransactionWithStatusMeta {
|
|
||||||
transaction: encoded_transaction,
|
transaction: encoded_transaction,
|
||||||
meta: self
|
meta: self
|
||||||
.transaction_status_cf
|
.transaction_status_cf
|
||||||
@ -1475,23 +1474,23 @@ impl Blockstore {
|
|||||||
pub fn read_transaction_status(
|
pub fn read_transaction_status(
|
||||||
&self,
|
&self,
|
||||||
index: (Slot, Signature),
|
index: (Slot, Signature),
|
||||||
) -> Result<Option<RpcTransactionStatusMeta>> {
|
) -> Result<Option<TransactionStatusMeta>> {
|
||||||
self.transaction_status_cf.get(index)
|
self.transaction_status_cf.get(index)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_transaction_status(
|
pub fn write_transaction_status(
|
||||||
&self,
|
&self,
|
||||||
index: (Slot, Signature),
|
index: (Slot, Signature),
|
||||||
status: &RpcTransactionStatusMeta,
|
status: &TransactionStatusMeta,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
self.transaction_status_cf.put(index, status)
|
self.transaction_status_cf.put(index, status)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn read_rewards(&self, index: Slot) -> Result<Option<RpcRewards>> {
|
pub fn read_rewards(&self, index: Slot) -> Result<Option<Rewards>> {
|
||||||
self.rewards_cf.get(index)
|
self.rewards_cf.get(index)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_rewards(&self, index: Slot, rewards: RpcRewards) -> Result<()> {
|
pub fn write_rewards(&self, index: Slot, rewards: Rewards) -> Result<()> {
|
||||||
self.rewards_cf.put(index, &rewards)
|
self.rewards_cf.put(index, &rewards)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4814,7 +4813,7 @@ pub mod tests {
|
|||||||
.put_meta_bytes(slot - 1, &serialize(&parent_meta).unwrap())
|
.put_meta_bytes(slot - 1, &serialize(&parent_meta).unwrap())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let expected_transactions: Vec<(Transaction, Option<RpcTransactionStatusMeta>)> = entries
|
let expected_transactions: Vec<(Transaction, Option<TransactionStatusMeta>)> = entries
|
||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
.filter(|entry| !entry.is_tick())
|
.filter(|entry| !entry.is_tick())
|
||||||
@ -4831,7 +4830,7 @@ pub mod tests {
|
|||||||
.transaction_status_cf
|
.transaction_status_cf
|
||||||
.put(
|
.put(
|
||||||
(slot, signature),
|
(slot, signature),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status: Ok(()),
|
status: Ok(()),
|
||||||
fee: 42,
|
fee: 42,
|
||||||
pre_balances: pre_balances.clone(),
|
pre_balances: pre_balances.clone(),
|
||||||
@ -4843,7 +4842,7 @@ pub mod tests {
|
|||||||
.transaction_status_cf
|
.transaction_status_cf
|
||||||
.put(
|
.put(
|
||||||
(slot + 1, signature),
|
(slot + 1, signature),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status: Ok(()),
|
status: Ok(()),
|
||||||
fee: 42,
|
fee: 42,
|
||||||
pre_balances: pre_balances.clone(),
|
pre_balances: pre_balances.clone(),
|
||||||
@ -4853,7 +4852,7 @@ pub mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
(
|
(
|
||||||
transaction,
|
transaction,
|
||||||
Some(RpcTransactionStatusMeta {
|
Some(TransactionStatusMeta {
|
||||||
status: Ok(()),
|
status: Ok(()),
|
||||||
fee: 42,
|
fee: 42,
|
||||||
pre_balances,
|
pre_balances,
|
||||||
@ -4870,12 +4869,12 @@ pub mod tests {
|
|||||||
let confirmed_block = ledger.get_confirmed_block(slot, None).unwrap();
|
let confirmed_block = ledger.get_confirmed_block(slot, None).unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 100);
|
assert_eq!(confirmed_block.transactions.len(), 100);
|
||||||
|
|
||||||
let expected_block = RpcConfirmedBlock {
|
let expected_block = ConfirmedBlock {
|
||||||
transactions: expected_transactions
|
transactions: expected_transactions
|
||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
.map(|(tx, meta)| RpcTransactionWithStatusMeta {
|
.map(|(tx, meta)| TransactionWithStatusMeta {
|
||||||
transaction: RpcEncodedTransaction::encode(tx, RpcTransactionEncoding::Json),
|
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json),
|
||||||
meta,
|
meta,
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
@ -4891,12 +4890,12 @@ pub mod tests {
|
|||||||
let confirmed_block = ledger.get_confirmed_block(slot + 1, None).unwrap();
|
let confirmed_block = ledger.get_confirmed_block(slot + 1, None).unwrap();
|
||||||
assert_eq!(confirmed_block.transactions.len(), 100);
|
assert_eq!(confirmed_block.transactions.len(), 100);
|
||||||
|
|
||||||
let expected_block = RpcConfirmedBlock {
|
let expected_block = ConfirmedBlock {
|
||||||
transactions: expected_transactions
|
transactions: expected_transactions
|
||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
.map(|(tx, meta)| RpcTransactionWithStatusMeta {
|
.map(|(tx, meta)| TransactionWithStatusMeta {
|
||||||
transaction: RpcEncodedTransaction::encode(tx, RpcTransactionEncoding::Json),
|
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json),
|
||||||
meta,
|
meta,
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
@ -5116,7 +5115,7 @@ pub mod tests {
|
|||||||
assert!(transaction_status_cf
|
assert!(transaction_status_cf
|
||||||
.put(
|
.put(
|
||||||
(0, Signature::default()),
|
(0, Signature::default()),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status: solana_sdk::transaction::Result::<()>::Err(
|
status: solana_sdk::transaction::Result::<()>::Err(
|
||||||
TransactionError::AccountNotFound
|
TransactionError::AccountNotFound
|
||||||
),
|
),
|
||||||
@ -5128,7 +5127,7 @@ pub mod tests {
|
|||||||
.is_ok());
|
.is_ok());
|
||||||
|
|
||||||
// result found
|
// result found
|
||||||
let RpcTransactionStatusMeta {
|
let TransactionStatusMeta {
|
||||||
status,
|
status,
|
||||||
fee,
|
fee,
|
||||||
pre_balances,
|
pre_balances,
|
||||||
@ -5146,7 +5145,7 @@ pub mod tests {
|
|||||||
assert!(transaction_status_cf
|
assert!(transaction_status_cf
|
||||||
.put(
|
.put(
|
||||||
(9, Signature::default()),
|
(9, Signature::default()),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status: solana_sdk::transaction::Result::<()>::Ok(()),
|
status: solana_sdk::transaction::Result::<()>::Ok(()),
|
||||||
fee: 9u64,
|
fee: 9u64,
|
||||||
pre_balances: pre_balances_vec.clone(),
|
pre_balances: pre_balances_vec.clone(),
|
||||||
@ -5156,7 +5155,7 @@ pub mod tests {
|
|||||||
.is_ok());
|
.is_ok());
|
||||||
|
|
||||||
// result found
|
// result found
|
||||||
let RpcTransactionStatusMeta {
|
let TransactionStatusMeta {
|
||||||
status,
|
status,
|
||||||
fee,
|
fee,
|
||||||
pre_balances,
|
pre_balances,
|
||||||
@ -5211,7 +5210,7 @@ pub mod tests {
|
|||||||
transaction_status_cf
|
transaction_status_cf
|
||||||
.put(
|
.put(
|
||||||
(slot, transaction.signatures[0]),
|
(slot, transaction.signatures[0]),
|
||||||
&RpcTransactionStatusMeta {
|
&TransactionStatusMeta {
|
||||||
status: solana_sdk::transaction::Result::<()>::Err(
|
status: solana_sdk::transaction::Result::<()>::Err(
|
||||||
TransactionError::AccountNotFound,
|
TransactionError::AccountNotFound,
|
||||||
),
|
),
|
||||||
@ -5234,7 +5233,7 @@ pub mod tests {
|
|||||||
|
|
||||||
let map = blockstore.map_transactions_to_statuses(
|
let map = blockstore.map_transactions_to_statuses(
|
||||||
slot,
|
slot,
|
||||||
RpcTransactionEncoding::Json,
|
TransactionEncoding::Json,
|
||||||
transactions.into_iter(),
|
transactions.into_iter(),
|
||||||
);
|
);
|
||||||
assert_eq!(map.len(), 5);
|
assert_eq!(map.len(), 5);
|
||||||
|
@ -10,8 +10,8 @@ use rocksdb::{
|
|||||||
};
|
};
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use solana_client::rpc_response::{RpcRewards, RpcTransactionStatusMeta};
|
|
||||||
use solana_sdk::{clock::Slot, signature::Signature};
|
use solana_sdk::{clock::Slot, signature::Signature};
|
||||||
|
use solana_transaction_status::{Rewards, TransactionStatusMeta};
|
||||||
use std::{collections::HashMap, fs, marker::PhantomData, path::Path, sync::Arc};
|
use std::{collections::HashMap, fs, marker::PhantomData, path::Path, sync::Arc};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ pub trait TypedColumn: Column {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TypedColumn for columns::TransactionStatus {
|
impl TypedColumn for columns::TransactionStatus {
|
||||||
type Type = RpcTransactionStatusMeta;
|
type Type = TransactionStatusMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait SlotColumn<Index = u64> {}
|
pub trait SlotColumn<Index = u64> {}
|
||||||
@ -330,7 +330,7 @@ impl ColumnName for columns::Rewards {
|
|||||||
const NAME: &'static str = REWARDS_CF;
|
const NAME: &'static str = REWARDS_CF;
|
||||||
}
|
}
|
||||||
impl TypedColumn for columns::Rewards {
|
impl TypedColumn for columns::Rewards {
|
||||||
type Type = RpcRewards;
|
type Type = Rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Column for columns::ShredCode {
|
impl Column for columns::ShredCode {
|
||||||
|
16
transaction-status/Cargo.toml
Normal file
16
transaction-status/Cargo.toml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[package]
|
||||||
|
name = "solana-transaction-status"
|
||||||
|
version = "1.0.11"
|
||||||
|
description = "Solana transaction status types"
|
||||||
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
|
repository = "https://github.com/solana-labs/solana"
|
||||||
|
homepage = "https://solana.com/"
|
||||||
|
license = "Apache-2.0"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bincode = "1.2.1"
|
||||||
|
bs58 = "0.3.0"
|
||||||
|
solana-sdk = { path = "../sdk", version = "1.0.11" }
|
||||||
|
serde = "1.0.105"
|
||||||
|
serde_derive = "1.0.103"
|
128
transaction-status/src/lib.rs
Normal file
128
transaction-status/src/lib.rs
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
#[macro_use]
|
||||||
|
extern crate serde_derive;
|
||||||
|
|
||||||
|
use bincode::serialize;
|
||||||
|
use solana_sdk::{
|
||||||
|
clock::Slot,
|
||||||
|
message::MessageHeader,
|
||||||
|
transaction::{Result, Transaction},
|
||||||
|
};
|
||||||
|
|
||||||
|
/// A duplicate representation of a Message for pretty JSON serialization
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct RpcCompiledInstruction {
|
||||||
|
pub program_id_index: u8,
|
||||||
|
pub accounts: Vec<u8>,
|
||||||
|
pub data: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct TransactionStatusMeta {
|
||||||
|
pub status: Result<()>,
|
||||||
|
pub fee: u64,
|
||||||
|
pub pre_balances: Vec<u64>,
|
||||||
|
pub post_balances: Vec<u64>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct TransactionStatus {
|
||||||
|
pub slot: Slot,
|
||||||
|
pub confirmations: Option<usize>,
|
||||||
|
pub status: Result<()>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct Reward {
|
||||||
|
pub pubkey: String,
|
||||||
|
pub lamports: i64,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Rewards = Vec<Reward>;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct ConfirmedBlock {
|
||||||
|
pub previous_blockhash: String,
|
||||||
|
pub blockhash: String,
|
||||||
|
pub parent_slot: Slot,
|
||||||
|
pub transactions: Vec<TransactionWithStatusMeta>,
|
||||||
|
pub rewards: Rewards,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A duplicate representation of a Transaction for pretty JSON serialization
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct RpcTransaction {
|
||||||
|
pub signatures: Vec<String>,
|
||||||
|
pub message: RpcMessage,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A duplicate representation of a Message for pretty JSON serialization
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct RpcMessage {
|
||||||
|
pub header: MessageHeader,
|
||||||
|
pub account_keys: Vec<String>,
|
||||||
|
pub recent_blockhash: String,
|
||||||
|
pub instructions: Vec<RpcCompiledInstruction>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct TransactionWithStatusMeta {
|
||||||
|
pub transaction: EncodedTransaction,
|
||||||
|
pub meta: Option<TransactionStatusMeta>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub enum TransactionEncoding {
|
||||||
|
Binary,
|
||||||
|
Json,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase", untagged)]
|
||||||
|
pub enum EncodedTransaction {
|
||||||
|
Binary(String),
|
||||||
|
Json(RpcTransaction),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EncodedTransaction {
|
||||||
|
pub fn encode(transaction: Transaction, encoding: TransactionEncoding) -> Self {
|
||||||
|
if encoding == TransactionEncoding::Json {
|
||||||
|
EncodedTransaction::Json(RpcTransaction {
|
||||||
|
signatures: transaction
|
||||||
|
.signatures
|
||||||
|
.iter()
|
||||||
|
.map(|sig| sig.to_string())
|
||||||
|
.collect(),
|
||||||
|
message: RpcMessage {
|
||||||
|
header: transaction.message.header,
|
||||||
|
account_keys: transaction
|
||||||
|
.message
|
||||||
|
.account_keys
|
||||||
|
.iter()
|
||||||
|
.map(|pubkey| pubkey.to_string())
|
||||||
|
.collect(),
|
||||||
|
recent_blockhash: transaction.message.recent_blockhash.to_string(),
|
||||||
|
instructions: transaction
|
||||||
|
.message
|
||||||
|
.instructions
|
||||||
|
.iter()
|
||||||
|
.map(|instruction| RpcCompiledInstruction {
|
||||||
|
program_id_index: instruction.program_id_index,
|
||||||
|
accounts: instruction.accounts.clone(),
|
||||||
|
data: bs58::encode(instruction.data.clone()).into_string(),
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
EncodedTransaction::Binary(bs58::encode(serialize(&transaction).unwrap()).into_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user