From 69bea5f8a37f23ad082ab7c1f3babb458b854127 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Fri, 19 Apr 2019 18:49:48 -0700 Subject: [PATCH 01/10] tendermint-rs: Initial "rpc" feature and JSONRPC types Adds a set of JSONRPC request and response types, designed to construct JSON requests to the Tendermint RPC (HTTP) API, and parse the returned JSON responses. --- .circleci/config.yml | 1 + src/client.rs | 18 ++-- src/config/validator.rs | 4 +- tendermint-rs/Cargo.toml | 7 +- tendermint-rs/src/lib.rs | 15 ++-- tendermint-rs/src/{address.rs => net.rs} | 0 tendermint-rs/src/rpc.rs | 6 ++ tendermint-rs/src/rpc/request.rs | 36 ++++++++ tendermint-rs/src/rpc/response.rs | 104 +++++++++++++++++++++++ 9 files changed, 172 insertions(+), 19 deletions(-) rename tendermint-rs/src/{address.rs => net.rs} (100%) create mode 100644 tendermint-rs/src/rpc.rs create mode 100644 tendermint-rs/src/rpc/request.rs create mode 100644 tendermint-rs/src/rpc/response.rs diff --git a/.circleci/config.yml b/.circleci/config.yml index a071148..109f156 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -40,6 +40,7 @@ jobs: rustc --version cargo --version cargo test --all --all-features -- --test-threads 1 + cd tendermint-rs && cargo test --release --features=rpc - run: name: audit command: | diff --git a/src/client.rs b/src/client.rs index 7fef988..cb5e4ad 100644 --- a/src/client.rs +++ b/src/client.rs @@ -13,15 +13,17 @@ use crate::{ }; use signatory::{ed25519, Decode, Encode, PublicKeyed}; use signatory_dalek::Ed25519Signer; -use std::sync::atomic::{AtomicBool, Ordering}; -use std::sync::Arc; use std::{ panic, path::Path, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, thread::{self, JoinHandle}, time::Duration, }; -use tendermint::{chain, node, secret_connection, Address}; +use tendermint::{chain, net, node, secret_connection}; /// How long to wait after a crash before respawning (in seconds) pub const RESPAWN_DELAY: u64 = 1; @@ -68,10 +70,10 @@ fn client_loop(config: ValidatorConfig, should_term: &Arc) { return; } - let session_result = match &addr { - Address::Tcp { + let session_result = match addr { + net::Address::Tcp { peer_id, - host, + ref host, port, } => match &secret_key { Some(path) => tcp_session( @@ -91,7 +93,9 @@ fn client_loop(config: ValidatorConfig, should_term: &Arc) { return; } }, - Address::Unix { path } => unix_session(chain_id, max_height, path, should_term), + net::Address::Unix { ref path } => { + unix_session(chain_id, max_height, path, should_term) + } }; if let Err(e) = session_result { diff --git a/src/config/validator.rs b/src/config/validator.rs index 0811b6f..0bd369a 100644 --- a/src/config/validator.rs +++ b/src/config/validator.rs @@ -1,11 +1,11 @@ use std::path::PathBuf; -use tendermint::{chain, Address}; +use tendermint::{chain, net}; /// Validator configuration #[derive(Clone, Deserialize, Debug)] pub struct ValidatorConfig { /// Address of the validator (`tcp://` or `unix://`) - pub addr: Address, + pub addr: net::Address, /// Chain ID of the Tendermint network this validator is part of pub chain_id: chain::Id, diff --git a/tendermint-rs/Cargo.toml b/tendermint-rs/Cargo.toml index e32bff5..6e936a1 100644 --- a/tendermint-rs/Cargo.toml +++ b/tendermint-rs/Cargo.toml @@ -12,8 +12,9 @@ edition = "2018" description = """ Tendermint is a high-performance blockchain consensus engine that powers Byzantine fault tolerant applications written in any programming language. - This crate provides types for representing information about Tendermint - blockchain networks, including chain IDs, block IDs, and block heights. + This crate provides core types for representing information about Tendermint + blockchain networks, including chain information types, secret connections, + and remote procedure calls (JSONRPC). """ authors = [ @@ -38,6 +39,7 @@ prost-amino-derive = { version = "0.4.0", optional = true } rand_os = { version = "0.1", optional = true } ring = { version = "0.14", optional = true } serde = { version = "1", optional = true, features = ["derive"] } +serde_json = { version = "1", optional = true } signatory = { version = "0.11.2", features = ["ed25519", "ecdsa"] } signatory-dalek = { version = "0.11", optional = true } sha2 = { version = "0.8", default-features = false } @@ -53,6 +55,7 @@ serde_json = "1" [features] default = ["serde", "tai64"] amino-types = ["prost-amino", "prost-amino-derive"] +rpc = ["serde", "serde_json"] secret-connection = [ "amino-types", "byteorder", diff --git a/tendermint-rs/src/lib.rs b/tendermint-rs/src/lib.rs index af7effb..6582671 100644 --- a/tendermint-rs/src/lib.rs +++ b/tendermint-rs/src/lib.rs @@ -26,7 +26,6 @@ extern crate prost_amino as prost; extern crate prost_amino_derive as prost_derive; pub mod account; -pub mod address; pub mod algorithm; #[cfg(feature = "amino-types")] pub mod amino_types; @@ -35,8 +34,11 @@ pub mod chain; pub mod error; pub mod hash; pub mod moniker; +pub mod net; pub mod node; pub mod public_keys; +#[cfg(feature = "rpc")] +pub mod rpc; #[cfg(feature = "secret-connection")] pub mod secret_connection; pub mod timestamp; @@ -44,13 +46,10 @@ pub mod timestamp; #[cfg(feature = "secret-connection")] pub use crate::secret_connection::SecretConnection; pub use crate::{ - address::*, - algorithm::*, - block::{ParseHeight as ParseBlockHeight, ParseId as ParseBlockId}, - chain::ParseId as ParseChainId, + algorithm::{HashAlgorithm, SignatureAlgorithm}, error::Error, - hash::*, + hash::Hash, moniker::Moniker, - public_keys::*, - timestamp::*, + public_keys::{PublicKey, TendermintKey}, + timestamp::Timestamp, }; diff --git a/tendermint-rs/src/address.rs b/tendermint-rs/src/net.rs similarity index 100% rename from tendermint-rs/src/address.rs rename to tendermint-rs/src/net.rs diff --git a/tendermint-rs/src/rpc.rs b/tendermint-rs/src/rpc.rs new file mode 100644 index 0000000..87ed2c6 --- /dev/null +++ b/tendermint-rs/src/rpc.rs @@ -0,0 +1,6 @@ +//! Tendermint RPC: JSONRPC over HTTP support +//! +//! Wraps the RPC API described at: + +pub mod request; +pub mod response; diff --git a/tendermint-rs/src/rpc/request.rs b/tendermint-rs/src/rpc/request.rs new file mode 100644 index 0000000..04c94a7 --- /dev/null +++ b/tendermint-rs/src/rpc/request.rs @@ -0,0 +1,36 @@ +//! JSONRPC requests + +use failure::Error; +use serde::{Deserialize, Serialize}; +use std::{ + fmt::{self, Display}, + str::FromStr, +}; + +/// JSONRPC requests +pub trait Request { + /// Response type for this command + type Response: super::response::Response; + + /// Path for this request + fn path(&self) -> Path; +} + +/// JSONRPC request paths +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct Path(String); + +impl Display for Path { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +impl FromStr for Path { + type Err = Error; + + /// Parse a request path from a string + fn from_str(path: &str) -> Result { + Ok(Path(path.to_owned())) + } +} diff --git a/tendermint-rs/src/rpc/response.rs b/tendermint-rs/src/rpc/response.rs new file mode 100644 index 0000000..1f40a98 --- /dev/null +++ b/tendermint-rs/src/rpc/response.rs @@ -0,0 +1,104 @@ +//! JSONRPC response types + +// TODO(tarcieri): remove this when functions below are all used +#![allow(dead_code)] + +use failure::{format_err, Error}; +use serde::{ + de::{DeserializeOwned, Error as DeError}, + Deserialize, Deserializer, Serialize, Serializer, +}; +use std::{ + fmt::{self, Display}, + time::Duration, +}; + +/// JSONRPC responses +pub trait Response: Serialize + DeserializeOwned + Sized { + /// Parse a JSONRPC response from a JSON string + fn from_json(response: &str) -> Result { + let wrapper: ResponseWrapper = + serde_json::from_str(response).map_err(|e| format_err!("error parsing JSON: {}", e))?; + + // TODO(tarcieri): check JSONRPC version/ID? + Ok(wrapper.result) + } +} + +/// JSONRPC response wrapper (i.e. message envelope) +#[derive(Debug, Deserialize, Serialize)] +pub struct ResponseWrapper { + /// JSONRPC version + pub jsonrpc: Version, + + /// ID + pub id: Id, + + /// Result + pub result: R, +} + +/// JSONRPC version +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct Version(String); + +impl Display for Version { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +/// JSONRPC ID +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct Id(String); + +impl AsRef for Id { + fn as_ref(&self) -> &str { + self.0.as_ref() + } +} + +/// Parse `u64` from a JSON string +pub(crate) fn parse_u64<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + String::deserialize(deserializer)? + .parse::() + .map_err(|e| D::Error::custom(format!("{}", e))) +} + +/// Serialize `u64` as a JSON string +#[allow(clippy::trivially_copy_pass_by_ref)] +pub(crate) fn serialize_u64(value: &u64, serializer: S) -> Result +where + S: Serializer, +{ + format!("{}", value).serialize(serializer) +} + +/// Parse `Duration` from a JSON string containing a nanosecond count +fn parse_duration<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + // TODO(tarcieri): handle 64-bit overflow? + let nanos = String::deserialize(deserializer)? + .parse::() + .map_err(|e| D::Error::custom(format!("{}", e)))?; + + Ok(Duration::from_nanos(nanos)) +} + +/// Serialize `Duration` as a JSON string containing a nanosecond count +fn serialize_duration(duration: &Duration, serializer: S) -> Result +where + S: Serializer, +{ + // TODO(tarcieri): use `as_nanos` when we're Rust 1.33+ + format!( + "{}", + (duration.as_secs() * 1_000_000_000) + duration.subsec_nanos() as u64 + ) + .serialize(serializer) +} From aaa7440bab0f7ecd4f0ed3dabdeebf8125012296 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Fri, 19 Apr 2019 19:47:43 -0700 Subject: [PATCH 02/10] tendermint-rs: /status RPC endpoint Adds initial support for parsing JSON responses from the `/status` JSONRPC endpoint. --- tendermint-rs/src/channel.rs | 58 +++++++++ tendermint-rs/src/channel/id.rs | 24 ++++ tendermint-rs/src/lib.rs | 6 +- tendermint-rs/src/node.rs | 110 +----------------- tendermint-rs/src/node/id.rs | 107 +++++++++++++++++ tendermint-rs/src/node/info.rs | 88 ++++++++++++++ tendermint-rs/src/rpc.rs | 3 + tendermint-rs/src/rpc/endpoint.rs | 5 + tendermint-rs/src/rpc/endpoint/status.rs | 101 ++++++++++++++++ tendermint-rs/src/version.rs | 14 +++ tendermint-rs/tests/rpc.rs | 25 ++++ .../{integration.rs => secret_connection.rs} | 0 tendermint-rs/tests/support/status.json | 38 ++++++ 13 files changed, 474 insertions(+), 105 deletions(-) create mode 100644 tendermint-rs/src/channel.rs create mode 100644 tendermint-rs/src/channel/id.rs create mode 100644 tendermint-rs/src/node/id.rs create mode 100644 tendermint-rs/src/node/info.rs create mode 100644 tendermint-rs/src/rpc/endpoint.rs create mode 100644 tendermint-rs/src/rpc/endpoint/status.rs create mode 100644 tendermint-rs/src/version.rs create mode 100644 tendermint-rs/tests/rpc.rs rename tendermint-rs/tests/{integration.rs => secret_connection.rs} (100%) create mode 100644 tendermint-rs/tests/support/status.json diff --git a/tendermint-rs/src/channel.rs b/tendermint-rs/src/channel.rs new file mode 100644 index 0000000..d529721 --- /dev/null +++ b/tendermint-rs/src/channel.rs @@ -0,0 +1,58 @@ +//! Channels (RPC types) + +mod id; + +pub use self::id::Id; +use crate::rpc; +pub use serde::{Deserialize, Serialize}; +use std::fmt::{self, Display}; + +/// Channels +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Channel { + /// Channel ID + #[serde(rename = "ID")] + pub id: Id, + + /// Capacity of the send queue + #[serde( + rename = "SendQueueCapacity", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub send_queue_capacity: u64, + + /// Size of the send queue + #[serde( + rename = "SendQueueSize", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub send_queue_size: u64, + + /// Priority value + #[serde( + rename = "Priority", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub priority: u64, + + /// Amount of data recently sent + #[serde( + rename = "RecentlySent", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub recently_sent: u64, +} + +/// Channel collections +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +pub struct Channels(String); + +impl Display for Channels { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} diff --git a/tendermint-rs/src/channel/id.rs b/tendermint-rs/src/channel/id.rs new file mode 100644 index 0000000..bf1f2ca --- /dev/null +++ b/tendermint-rs/src/channel/id.rs @@ -0,0 +1,24 @@ +use serde::{Deserialize, Serialize}; + +/// Channel IDs +#[derive(Copy, Clone, Debug, Deserialize, Serialize)] +pub struct Id(pub u64); + +impl Id { + /// Get the current voting power as an integer + pub fn value(self) -> u64 { + self.0 + } +} + +impl From for u64 { + fn from(id: Id) -> u64 { + id.value() + } +} + +impl From for Id { + fn from(id: u64) -> Id { + Id(id) + } +} diff --git a/tendermint-rs/src/lib.rs b/tendermint-rs/src/lib.rs index 6582671..299f180 100644 --- a/tendermint-rs/src/lib.rs +++ b/tendermint-rs/src/lib.rs @@ -31,9 +31,11 @@ pub mod algorithm; pub mod amino_types; pub mod block; pub mod chain; +#[cfg(feature = "rpc")] +pub mod channel; pub mod error; pub mod hash; -pub mod moniker; +mod moniker; pub mod net; pub mod node; pub mod public_keys; @@ -42,6 +44,7 @@ pub mod rpc; #[cfg(feature = "secret-connection")] pub mod secret_connection; pub mod timestamp; +mod version; #[cfg(feature = "secret-connection")] pub use crate::secret_connection::SecretConnection; @@ -52,4 +55,5 @@ pub use crate::{ moniker::Moniker, public_keys::{PublicKey, TendermintKey}, timestamp::Timestamp, + version::Version, }; diff --git a/tendermint-rs/src/node.rs b/tendermint-rs/src/node.rs index 4a15732..923adae 100644 --- a/tendermint-rs/src/node.rs +++ b/tendermint-rs/src/node.rs @@ -1,107 +1,9 @@ //! Nodes in Tendermint blockchain networks -use crate::error::Error; -#[cfg(feature = "serde")] -use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; -use sha2::{Digest, Sha256}; -use signatory::ed25519; -use std::{ - fmt::{self, Display}, - str::FromStr, -}; -use subtle::{self, ConstantTimeEq}; -use subtle_encoding::hex; +mod id; +#[cfg(feature = "rpc")] +pub mod info; -/// Size of a Node ID in bytes -pub const ID_LENGTH: usize = 20; - -/// Node IDs -#[derive(Copy, Clone, Debug, Hash)] -pub struct Id([u8; ID_LENGTH]); - -impl Id { - /// Create a new Node ID from raw bytes - pub fn new(bytes: [u8; ID_LENGTH]) -> Id { - Id(bytes) - } - - /// Borrow the node ID as a byte slice - pub fn as_bytes(&self) -> &[u8] { - &self.0[..] - } -} - -impl AsRef<[u8]> for Id { - fn as_ref(&self) -> &[u8] { - self.as_bytes() - } -} - -impl ConstantTimeEq for Id { - #[inline] - fn ct_eq(&self, other: &Id) -> subtle::Choice { - self.as_bytes().ct_eq(other.as_bytes()) - } -} - -impl Display for Id { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - for byte in &self.0 { - write!(f, "{:02X}", byte)?; - } - Ok(()) - } -} - -impl From for Id { - fn from(pk: ed25519::PublicKey) -> Id { - let digest = Sha256::digest(pk.as_bytes()); - let mut bytes = [0u8; ID_LENGTH]; - bytes.copy_from_slice(&digest[..ID_LENGTH]); - Id(bytes) - } -} - -/// Decode Node ID from hex -impl FromStr for Id { - type Err = Error; - - fn from_str(s: &str) -> Result { - // Accept either upper or lower case hex - let bytes = hex::decode_upper(s) - .or_else(|_| hex::decode(s)) - .map_err(|_| Error::Parse)?; - - if bytes.len() != ID_LENGTH { - return Err(Error::Parse); - } - - let mut result_bytes = [0u8; ID_LENGTH]; - result_bytes.copy_from_slice(&bytes); - Ok(Id(result_bytes)) - } -} - -#[cfg(feature = "serde")] -impl<'de> Deserialize<'de> for Id { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - Self::from_str(&s).map_err(|_| { - de::Error::custom(format!( - "expected {}-character hex string, got {:?}", - ID_LENGTH * 2, - s - )) - }) - } -} - -#[cfg(feature = "serde")] -impl Serialize for Id { - fn serialize(&self, serializer: S) -> Result { - self.to_string().serialize(serializer) - } -} +pub use self::id::Id; +#[cfg(feature = "rpc")] +pub use self::info::Info; diff --git a/tendermint-rs/src/node/id.rs b/tendermint-rs/src/node/id.rs new file mode 100644 index 0000000..99c4f1e --- /dev/null +++ b/tendermint-rs/src/node/id.rs @@ -0,0 +1,107 @@ +//! Tendermint node IDs + +use crate::error::Error; +#[cfg(feature = "serde")] +use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; +use sha2::{Digest, Sha256}; +use signatory::ed25519; +use std::{ + fmt::{self, Display}, + str::FromStr, +}; +use subtle::{self, ConstantTimeEq}; +use subtle_encoding::hex; + +/// Size of a Node ID in bytes +pub const ID_LENGTH: usize = 20; + +/// Node IDs +#[derive(Copy, Clone, Debug, Hash)] +pub struct Id([u8; ID_LENGTH]); + +impl Id { + /// Create a new Node ID from raw bytes + pub fn new(bytes: [u8; ID_LENGTH]) -> Id { + Id(bytes) + } + + /// Borrow the node ID as a byte slice + pub fn as_bytes(&self) -> &[u8] { + &self.0[..] + } +} + +impl AsRef<[u8]> for Id { + fn as_ref(&self) -> &[u8] { + self.as_bytes() + } +} + +impl ConstantTimeEq for Id { + #[inline] + fn ct_eq(&self, other: &Id) -> subtle::Choice { + self.as_bytes().ct_eq(other.as_bytes()) + } +} + +impl Display for Id { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + for byte in &self.0 { + write!(f, "{:02X}", byte)?; + } + Ok(()) + } +} + +impl From for Id { + fn from(pk: ed25519::PublicKey) -> Id { + let digest = Sha256::digest(pk.as_bytes()); + let mut bytes = [0u8; ID_LENGTH]; + bytes.copy_from_slice(&digest[..ID_LENGTH]); + Id(bytes) + } +} + +/// Decode Node ID from hex +impl FromStr for Id { + type Err = Error; + + fn from_str(s: &str) -> Result { + // Accept either upper or lower case hex + let bytes = hex::decode_upper(s) + .or_else(|_| hex::decode(s)) + .map_err(|_| Error::Parse)?; + + if bytes.len() != ID_LENGTH { + return Err(Error::Parse); + } + + let mut result_bytes = [0u8; ID_LENGTH]; + result_bytes.copy_from_slice(&bytes); + Ok(Id(result_bytes)) + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Id { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + Self::from_str(&s).map_err(|_| { + de::Error::custom(format!( + "expected {}-character hex string, got {:?}", + ID_LENGTH * 2, + s + )) + }) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Id { + fn serialize(&self, serializer: S) -> Result { + self.to_string().serialize(serializer) + } +} diff --git a/tendermint-rs/src/node/info.rs b/tendermint-rs/src/node/info.rs new file mode 100644 index 0000000..46e8eeb --- /dev/null +++ b/tendermint-rs/src/node/info.rs @@ -0,0 +1,88 @@ +//! Node information (used in RPC responses) + +use crate::{chain, channel::Channels, net, node, rpc, Moniker, Version}; +use serde::{Deserialize, Serialize}; + +/// Node information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Info { + /// Protocol version information + pub protocol_version: ProtocolVersionInfo, + + /// Node ID + pub id: node::Id, + + /// Listen address + pub listen_addr: net::Address, + + /// Tendermint network / chain ID, + pub network: chain::Id, + + /// Tendermint version + pub version: Version, + + /// Channels + pub channels: Channels, + + /// Moniker + pub moniker: Moniker, + + /// Other status information + pub other: OtherInfo, +} + +/// Protocol version information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ProtocolVersionInfo { + /// P2P protocol version + #[serde( + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub p2p: u64, + + /// Block version + #[serde( + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub block: u64, + + /// App version + #[serde( + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub app: u64, +} + +/// Other information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct OtherInfo { + /// TX index status + pub tx_index: TxIndexStatus, + + /// RPC address + pub rpc_address: net::Address, +} + +/// Transaction index status +#[derive(Copy, Clone, Debug, Deserialize, Serialize)] +pub enum TxIndexStatus { + /// Index is on + #[serde(rename = "on")] + On, + + /// Index is off + #[serde(rename = "off")] + Off, +} + +impl From for bool { + fn from(status: TxIndexStatus) -> bool { + match status { + TxIndexStatus::On => true, + TxIndexStatus::Off => false, + } + } +} diff --git a/tendermint-rs/src/rpc.rs b/tendermint-rs/src/rpc.rs index 87ed2c6..ebf08c1 100644 --- a/tendermint-rs/src/rpc.rs +++ b/tendermint-rs/src/rpc.rs @@ -2,5 +2,8 @@ //! //! Wraps the RPC API described at: +pub mod endpoint; pub mod request; pub mod response; + +pub use self::{request::Request, response::Response}; diff --git a/tendermint-rs/src/rpc/endpoint.rs b/tendermint-rs/src/rpc/endpoint.rs new file mode 100644 index 0000000..79b9a79 --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint.rs @@ -0,0 +1,5 @@ +//! Tendermint JSONRPC endpoints + +mod status; + +pub use status::{StatusRequest, StatusResponse}; diff --git a/tendermint-rs/src/rpc/endpoint/status.rs b/tendermint-rs/src/rpc/endpoint/status.rs new file mode 100644 index 0000000..ffefe34 --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint/status.rs @@ -0,0 +1,101 @@ +//! `/status` endpoint JSONRPC wrapper + +use crate::{account, block, node, rpc, Hash, PublicKey, Timestamp}; +use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; + +/// Node status request +#[derive(Default)] +pub struct StatusRequest; + +impl rpc::Request for StatusRequest { + type Response = StatusResponse; + + fn path(&self) -> rpc::request::Path { + "/status".parse().unwrap() + } +} + +/// Status responses +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct StatusResponse { + /// Node information + pub node_info: node::Info, + + /// Sync information + pub sync_info: SyncInfo, + + /// Validator information + pub validator_info: ValidatorInfo, +} + +impl rpc::Response for StatusResponse {} + +/// Sync information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct SyncInfo { + /// Latest block hash + pub latest_block_hash: Hash, + + /// Latest app hash + pub latest_app_hash: Hash, + + /// Latest block height + pub latest_block_height: block::Height, + + /// Latest block time + pub latest_block_time: Timestamp, + + /// Are we catching up? + pub catching_up: bool, +} + +/// Validator information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ValidatorInfo { + /// Validator account address + pub address: account::Id, + + /// Validator public key + pub pub_key: PublicKey, + + /// Validator voting power + pub voting_power: VotingPower, +} + +/// Voting power +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +pub struct VotingPower(u64); + +impl VotingPower { + /// Get the current voting power + pub fn value(self) -> u64 { + self.0 + } + + /// Is the current voting power zero? + pub fn is_zero(self) -> bool { + self.0 == 0 + } +} + +impl From for u64 { + fn from(power: VotingPower) -> u64 { + power.0 + } +} + +impl<'de> Deserialize<'de> for VotingPower { + fn deserialize>(deserializer: D) -> Result { + Ok(VotingPower( + String::deserialize(deserializer)? + .parse() + .map_err(|e| D::Error::custom(format!("{}", e)))?, + )) + } +} + +impl Serialize for VotingPower { + fn serialize(&self, serializer: S) -> Result { + self.0.to_string().serialize(serializer) + } +} diff --git a/tendermint-rs/src/version.rs b/tendermint-rs/src/version.rs new file mode 100644 index 0000000..6c00a21 --- /dev/null +++ b/tendermint-rs/src/version.rs @@ -0,0 +1,14 @@ +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; +use std::fmt::{self, Display}; + +/// Tendermint version +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Version(String); + +impl Display for Version { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} diff --git a/tendermint-rs/tests/rpc.rs b/tendermint-rs/tests/rpc.rs new file mode 100644 index 0000000..91c6817 --- /dev/null +++ b/tendermint-rs/tests/rpc.rs @@ -0,0 +1,25 @@ +//! Tendermint RPC tests + +#[cfg(feature = "rpc")] +mod endpoints { + use std::{fs, path::PathBuf}; + use tendermint::rpc::{endpoint::StatusResponse, Response}; + + fn read_json_fixture(name: &str) -> String { + fs::read_to_string(PathBuf::from("./tests/support/").join(name.to_owned() + ".json")) + .unwrap() + } + + #[test] + fn status() { + let status_json = read_json_fixture("status"); + let status_response = StatusResponse::from_json(&status_json).unwrap(); + + assert_eq!(status_response.node_info.network.as_str(), "cosmoshub-1"); + assert_eq!( + status_response.sync_info.latest_block_height.value(), + 410744 + ); + assert_eq!(status_response.validator_info.voting_power.value(), 0); + } +} diff --git a/tendermint-rs/tests/integration.rs b/tendermint-rs/tests/secret_connection.rs similarity index 100% rename from tendermint-rs/tests/integration.rs rename to tendermint-rs/tests/secret_connection.rs diff --git a/tendermint-rs/tests/support/status.json b/tendermint-rs/tests/support/status.json new file mode 100644 index 0000000..abe08d2 --- /dev/null +++ b/tendermint-rs/tests/support/status.json @@ -0,0 +1,38 @@ +{ + "jsonrpc": "2.0", + "id": "", + "result": { + "node_info": { + "protocol_version": { + "p2p": "7", + "block": "10", + "app": "0" + }, + "id": "6b90d376f9bfdd83c6d9351bf7b2f458b74deacc", + "listen_addr": "tcp://0.0.0.0:26656", + "network": "cosmoshub-1", + "version": "0.30.1", + "channels": "4020212223303800", + "moniker": "technodrome", + "other": { + "tx_index": "on", + "rpc_address": "tcp://0.0.0.0:26657" + } + }, + "sync_info": { + "latest_block_hash": "D4B11143B0C9CB1330BAED825C9FEF13979C91E137DF93C3974A17C9BED663ED", + "latest_app_hash": "38FE3F06E3EB936C2EE14DA6BEA15F97FEF8814824F022EE06635D7B2C39A0BA", + "latest_block_height": "410744", + "latest_block_time": "2019-04-15T13:16:17.316509229Z", + "catching_up": false + }, + "validator_info": { + "address": "C73833E9BD86D34EDAD4AFD571FB5D0926294CD5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "RblzMO4is5L1hZz6wo4kPbptzOyue6LTk4+lPhD1FRk=" + }, + "voting_power": "0" + } + } +} From 7b7ded233ca7c8a2feafc125feda40d739029c6e Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Fri, 19 Apr 2019 20:32:40 -0700 Subject: [PATCH 03/10] tendermint-rs: /net_info RPC endpoint --- tendermint-rs/src/rpc/endpoint.rs | 2 + tendermint-rs/src/rpc/endpoint/net_info.rs | 189 ++++++++++++++++ tendermint-rs/src/rpc/endpoint/status.rs | 2 +- tendermint-rs/src/rpc/response.rs | 7 +- tendermint-rs/tests/rpc.rs | 19 +- tendermint-rs/tests/support/net_info.json | 238 +++++++++++++++++++++ 6 files changed, 450 insertions(+), 7 deletions(-) create mode 100644 tendermint-rs/src/rpc/endpoint/net_info.rs create mode 100644 tendermint-rs/tests/support/net_info.json diff --git a/tendermint-rs/src/rpc/endpoint.rs b/tendermint-rs/src/rpc/endpoint.rs index 79b9a79..69faec7 100644 --- a/tendermint-rs/src/rpc/endpoint.rs +++ b/tendermint-rs/src/rpc/endpoint.rs @@ -1,5 +1,7 @@ //! Tendermint JSONRPC endpoints +mod net_info; mod status; +pub use net_info::{NetInfoRequest, NetInfoResponse}; pub use status::{StatusRequest, StatusResponse}; diff --git a/tendermint-rs/src/rpc/endpoint/net_info.rs b/tendermint-rs/src/rpc/endpoint/net_info.rs new file mode 100644 index 0000000..6ea75ad --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint/net_info.rs @@ -0,0 +1,189 @@ +//! RPC wrapper for `/net_info` endpoint + +use crate::{channel::Channel, node, rpc, Timestamp}; +use serde::{Deserialize, Serialize}; +use std::{ + fmt::{self, Display}, + net::IpAddr, + time::Duration, +}; + +/// Request the status of the node +#[derive(Debug, Default)] +pub struct NetInfoRequest; + +impl rpc::Request for NetInfoRequest { + type Response = NetInfoResponse; + + fn path(&self) -> rpc::request::Path { + "/net_info".parse().unwrap() + } +} + +/// Status responses +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct NetInfoResponse { + /// Are we presently listening? + pub listening: bool, + + /// Active listeners + pub listeners: Vec, + + /// Number of connected peers + #[serde( + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + pub n_peers: u64, + + /// Peer information + pub peers: Vec, +} + +impl rpc::Response for NetInfoResponse {} + +/// Listener information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Listener(String); + +impl Display for Listener { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +/// Peer information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct PeerInfo { + /// Node information + pub node_info: node::Info, + + /// Is this an outbound connection? + pub is_outbound: bool, + + /// Connection status + pub connection_status: ConnectionStatus, + + /// Remote IP address + pub remote_ip: IpAddr, +} + +/// Connection status information +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ConnectionStatus { + /// Duration of this connection + #[serde( + rename = "Duration", + serialize_with = "rpc::response::serialize_duration", + deserialize_with = "rpc::response::parse_duration" + )] + pub duration: Duration, + + /// Send monitor + #[serde(rename = "SendMonitor")] + pub send_monitor: Monitor, + + /// Receive monitor + #[serde(rename = "RecvMonitor")] + pub recv_monitor: Monitor, + + /// Channels + #[serde(rename = "Channels")] + pub channels: Vec, +} + +/// Monitor +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Monitor { + /// Is this monitor active? + #[serde(rename = "Active")] + pub active: bool, + + /// When the monitor started + #[serde(rename = "Start")] + pub start: Timestamp, + + /// Duration of this monitor + #[serde( + rename = "Duration", + serialize_with = "rpc::response::serialize_duration", + deserialize_with = "rpc::response::parse_duration" + )] + pub duration: Duration, + + /// Idle duration for this monitor + #[serde( + rename = "Idle", + serialize_with = "rpc::response::serialize_duration", + deserialize_with = "rpc::response::parse_duration" + )] + pub idle: Duration, + + /// Bytes + #[serde( + rename = "Bytes", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + bytes: u64, + + /// Samples + #[serde( + rename = "Samples", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + samples: u64, + + /// Instant rate + #[serde( + rename = "InstRate", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + inst_rate: u64, + + /// Current rate + #[serde( + rename = "CurRate", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + cur_rate: u64, + + /// Average rate + #[serde( + rename = "AvgRate", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + avg_rate: u64, + + /// Peak rate + #[serde( + rename = "PeakRate", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + peak_rate: u64, + + /// Bytes remaining + #[serde( + rename = "BytesRem", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + bytes_rem: u64, + + /// Time remaining + #[serde( + rename = "TimeRem", + serialize_with = "rpc::response::serialize_u64", + deserialize_with = "rpc::response::parse_u64" + )] + time_rem: u64, + + /// Progress + #[serde(rename = "Progress")] + progress: u64, +} diff --git a/tendermint-rs/src/rpc/endpoint/status.rs b/tendermint-rs/src/rpc/endpoint/status.rs index ffefe34..b16d914 100644 --- a/tendermint-rs/src/rpc/endpoint/status.rs +++ b/tendermint-rs/src/rpc/endpoint/status.rs @@ -4,7 +4,7 @@ use crate::{account, block, node, rpc, Hash, PublicKey, Timestamp}; use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; /// Node status request -#[derive(Default)] +#[derive(Debug, Default)] pub struct StatusRequest; impl rpc::Request for StatusRequest { diff --git a/tendermint-rs/src/rpc/response.rs b/tendermint-rs/src/rpc/response.rs index 1f40a98..21532c9 100644 --- a/tendermint-rs/src/rpc/response.rs +++ b/tendermint-rs/src/rpc/response.rs @@ -1,8 +1,5 @@ //! JSONRPC response types -// TODO(tarcieri): remove this when functions below are all used -#![allow(dead_code)] - use failure::{format_err, Error}; use serde::{ de::{DeserializeOwned, Error as DeError}, @@ -78,7 +75,7 @@ where } /// Parse `Duration` from a JSON string containing a nanosecond count -fn parse_duration<'de, D>(deserializer: D) -> Result +pub(crate) fn parse_duration<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { @@ -91,7 +88,7 @@ where } /// Serialize `Duration` as a JSON string containing a nanosecond count -fn serialize_duration(duration: &Duration, serializer: S) -> Result +pub(crate) fn serialize_duration(duration: &Duration, serializer: S) -> Result where S: Serializer, { diff --git a/tendermint-rs/tests/rpc.rs b/tendermint-rs/tests/rpc.rs index 91c6817..fe0e4f1 100644 --- a/tendermint-rs/tests/rpc.rs +++ b/tendermint-rs/tests/rpc.rs @@ -3,13 +3,30 @@ #[cfg(feature = "rpc")] mod endpoints { use std::{fs, path::PathBuf}; - use tendermint::rpc::{endpoint::StatusResponse, Response}; + use tendermint::rpc::{ + endpoint::{NetInfoResponse, StatusResponse}, + Response, + }; fn read_json_fixture(name: &str) -> String { fs::read_to_string(PathBuf::from("./tests/support/").join(name.to_owned() + ".json")) .unwrap() } + #[test] + fn net_info() { + let net_info_json = read_json_fixture("net_info"); + let net_info_response = NetInfoResponse::from_json(&net_info_json).unwrap(); + + println!("net_info_response: {:?}", net_info_response); + + assert_eq!(net_info_response.n_peers, 2); + assert_eq!( + net_info_response.peers[0].node_info.network.as_str(), + "cosmoshub-1" + ); + } + #[test] fn status() { let status_json = read_json_fixture("status"); diff --git a/tendermint-rs/tests/support/net_info.json b/tendermint-rs/tests/support/net_info.json new file mode 100644 index 0000000..6d36723 --- /dev/null +++ b/tendermint-rs/tests/support/net_info.json @@ -0,0 +1,238 @@ +{ + "jsonrpc": "2.0", + "id": "", + "result": { + "listening": true, + "listeners": [ + "Listener(@)" + ], + "n_peers": "2", + "peers": [ + { + "node_info": { + "protocol_version": { + "p2p": "7", + "block": "10", + "app": "0" + }, + "id": "9d55f7d40ba4925cca86e3880bc287f30451230e", + "listen_addr": "tcp://11.22.33.44:26656", + "network": "cosmoshub-1", + "version": "0.30.1", + "channels": "4020212223303800", + "moniker": "shredder", + "other": { + "tx_index": "on", + "rpc_address": "tcp://0.0.0.0:26657" + } + }, + "is_outbound": true, + "connection_status": { + "Duration": "3350648332604", + "SendMonitor": { + "Active": true, + "Start": "2019-04-19T12:57:18.04Z", + "Duration": "3350640000000", + "Idle": "3350640000000", + "Bytes": "19", + "Samples": "1", + "InstRate": "0", + "CurRate": "0", + "AvgRate": "0", + "PeakRate": "0", + "BytesRem": "0", + "TimeRem": "0", + "Progress": 0 + }, + "RecvMonitor": { + "Active": true, + "Start": "2019-04-19T12:57:18.04Z", + "Duration": "3350640000000", + "Idle": "3350640000000", + "Bytes": "0", + "Samples": "1", + "InstRate": "0", + "CurRate": "0", + "AvgRate": "0", + "PeakRate": "0", + "BytesRem": "0", + "TimeRem": "0", + "Progress": 0 + }, + "Channels": [ + { + "ID": 48, + "SendQueueCapacity": "1", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 64, + "SendQueueCapacity": "1000", + "SendQueueSize": "0", + "Priority": "10", + "RecentlySent": "19" + }, + { + "ID": 32, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 33, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "10", + "RecentlySent": "0" + }, + { + "ID": 34, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 35, + "SendQueueCapacity": "2", + "SendQueueSize": "0", + "Priority": "1", + "RecentlySent": "0" + }, + { + "ID": 56, + "SendQueueCapacity": "1", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 0, + "SendQueueCapacity": "10", + "SendQueueSize": "0", + "Priority": "1", + "RecentlySent": "0" + } + ] + }, + "remote_ip": "11.22.33.44" + }, + { + "node_info": { + "protocol_version": { + "p2p": "7", + "block": "10", + "app": "0" + }, + "id": "a5ceaad3a1907665b2514db4e741939f0a5ab7dd", + "listen_addr": "tcp://0.0.0.0:26656", + "network": "cosmoshub-1", + "version": "0.30.1", + "channels": "4020212223303800", + "moniker": "kraang", + "other": { + "tx_index": "on", + "rpc_address": "tcp://0.0.0.0:26657" + } + }, + "is_outbound": true, + "connection_status": { + "Duration": "20412582851", + "SendMonitor": { + "Active": true, + "Start": "2019-04-19T13:52:48.28Z", + "Duration": "20400000000", + "Idle": "3100000000", + "Bytes": "209809", + "Samples": "56", + "InstRate": "0", + "CurRate": "1505", + "AvgRate": "10285", + "PeakRate": "210610", + "BytesRem": "0", + "TimeRem": "0", + "Progress": 0 + }, + "RecvMonitor": { + "Active": true, + "Start": "2019-04-19T13:52:48.28Z", + "Duration": "20400000000", + "Idle": "2920000000", + "Bytes": "222732", + "Samples": "53", + "InstRate": "0", + "CurRate": "1823", + "AvgRate": "10918", + "PeakRate": "106300", + "BytesRem": "0", + "TimeRem": "0", + "Progress": 0 + }, + "Channels": [ + { + "ID": 48, + "SendQueueCapacity": "1", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 64, + "SendQueueCapacity": "1000", + "SendQueueSize": "0", + "Priority": "10", + "RecentlySent": "0" + }, + { + "ID": 32, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "4804" + }, + { + "ID": 33, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "10", + "RecentlySent": "17208" + }, + { + "ID": 34, + "SendQueueCapacity": "100", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "43624" + }, + { + "ID": 35, + "SendQueueCapacity": "2", + "SendQueueSize": "0", + "Priority": "1", + "RecentlySent": "36" + }, + { + "ID": 56, + "SendQueueCapacity": "1", + "SendQueueSize": "0", + "Priority": "5", + "RecentlySent": "0" + }, + { + "ID": 0, + "SendQueueCapacity": "10", + "SendQueueSize": "0", + "Priority": "1", + "RecentlySent": "0" + } + ] + }, + "remote_ip": "77.66.55.44" + } + ] + } +} + From edc3b59434b7a276d664e6c8a73ff5dea02c63ee Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 20 Apr 2019 09:43:44 -0700 Subject: [PATCH 04/10] tendermint-rs: /block RPC endpoint and related types Initial support for querying blocks through the RPC API. Blocks comprise a number of different types which are generally useful (e.g. transactions), so many of them have been peppered throughout the `tendermint` crate where applicable. This commit also includes some debug output improvements, and factors algorithm types under the relevant modules. --- src/chain/state/mod.rs | 2 +- tendermint-rs/src/account.rs | 10 +- tendermint-rs/src/algorithm.rs | 18 - tendermint-rs/src/amino_types/block_id.rs | 34 +- tendermint-rs/src/block.rs | 30 +- tendermint-rs/src/block/header.rs | 100 +++ tendermint-rs/src/block/id.rs | 40 +- tendermint-rs/src/block/meta.rs | 16 + tendermint-rs/src/block/parts.rs | 33 + tendermint-rs/src/channel.rs | 18 +- tendermint-rs/src/commit.rs | 64 ++ tendermint-rs/src/evidence.rs | 86 +++ tendermint-rs/src/hash.rs | 60 +- tendermint-rs/src/lib.rs | 10 +- tendermint-rs/src/node/id.rs | 10 +- tendermint-rs/src/node/info.rs | 14 +- tendermint-rs/src/rpc/endpoint.rs | 8 +- tendermint-rs/src/rpc/endpoint/block.rs | 40 + tendermint-rs/src/rpc/endpoint/net_info.rs | 62 +- tendermint-rs/src/rpc/endpoint/status.rs | 10 +- tendermint-rs/src/rpc/response.rs | 55 +- tendermint-rs/src/serializers.rs | 52 ++ tendermint-rs/src/signature.rs | 60 ++ tendermint-rs/src/transaction.rs | 86 +++ tendermint-rs/tests/rpc.rs | 30 +- tendermint-rs/tests/support/block.json | 801 +++++++++++++++++++++ 26 files changed, 1560 insertions(+), 189 deletions(-) delete mode 100644 tendermint-rs/src/algorithm.rs create mode 100644 tendermint-rs/src/block/header.rs create mode 100644 tendermint-rs/src/block/meta.rs create mode 100644 tendermint-rs/src/block/parts.rs create mode 100644 tendermint-rs/src/commit.rs create mode 100644 tendermint-rs/src/evidence.rs create mode 100644 tendermint-rs/src/rpc/endpoint/block.rs create mode 100644 tendermint-rs/src/serializers.rs create mode 100644 tendermint-rs/src/signature.rs create mode 100644 tendermint-rs/src/transaction.rs create mode 100644 tendermint-rs/tests/support/block.json diff --git a/src/chain/state/mod.rs b/src/chain/state/mod.rs index aee1278..6d17ab7 100644 --- a/src/chain/state/mod.rs +++ b/src/chain/state/mod.rs @@ -98,7 +98,7 @@ impl State { new_state.height, new_state.round, new_state.step, - self.consensus_state.block_id.unwrap(), + self.consensus_state.block_id.as_ref().unwrap(), new_state.block_id.unwrap() ) } diff --git a/tendermint-rs/src/account.rs b/tendermint-rs/src/account.rs index b3304c9..5efbd5e 100644 --- a/tendermint-rs/src/account.rs +++ b/tendermint-rs/src/account.rs @@ -6,7 +6,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use sha2::{Digest, Sha256}; use signatory::ecdsa::curve::secp256k1; use std::{ - fmt::{self, Display}, + fmt::{self, Debug, Display}, str::FromStr, }; use subtle::{self, ConstantTimeEq}; @@ -16,7 +16,7 @@ use subtle_encoding::hex; pub const ID_LENGTH: usize = 20; /// Account IDs -#[derive(Copy, Clone, Debug, Hash)] +#[derive(Copy, Clone, Hash)] pub struct Id([u8; ID_LENGTH]); impl Id { @@ -53,6 +53,12 @@ impl Display for Id { } } +impl Debug for Id { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "account::Id({})", self) + } +} + impl From for Id { fn from(pk: secp256k1::PublicKey) -> Id { let digest = Sha256::digest(pk.as_bytes()); diff --git a/tendermint-rs/src/algorithm.rs b/tendermint-rs/src/algorithm.rs deleted file mode 100644 index 899e68f..0000000 --- a/tendermint-rs/src/algorithm.rs +++ /dev/null @@ -1,18 +0,0 @@ -//! Algorithm registry - -/// Hash algorithms -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum HashAlgorithm { - /// SHA-256 - Sha256, -} - -/// Digital signature algorithms -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum SignatureAlgorithm { - /// ECDSA over secp256k1 - EcdsaSecp256k1, - - /// EdDSA over Curve25519 - Ed25519, -} diff --git a/tendermint-rs/src/amino_types/block_id.rs b/tendermint-rs/src/amino_types/block_id.rs index 30a5cb3..4306496 100644 --- a/tendermint-rs/src/amino_types/block_id.rs +++ b/tendermint-rs/src/amino_types/block_id.rs @@ -1,8 +1,8 @@ use super::validate::{ConsensusMessage, ValidationError, ValidationErrorKind::*}; use crate::{ - algorithm::HashAlgorithm, block, error::Error, + hash, hash::{Hash, SHA256_HASH_SIZE}, }; @@ -16,8 +16,12 @@ pub struct BlockId { impl block::ParseId for BlockId { fn parse_block_id(&self) -> Result { - let hash = Hash::new(HashAlgorithm::Sha256, &self.hash)?; - Ok(block::Id::new(hash)) + let hash = Hash::new(hash::Algorithm::Sha256, &self.hash)?; + let parts_header = self + .parts_header + .as_ref() + .and_then(PartsSetHeader::parse_parts_header); + Ok(block::Id::new(hash, parts_header)) } } @@ -43,8 +47,12 @@ pub struct CanonicalBlockId { impl block::ParseId for CanonicalBlockId { fn parse_block_id(&self) -> Result { - let hash = Hash::new(HashAlgorithm::Sha256, &self.hash)?; - Ok(block::Id::new(hash)) + let hash = Hash::new(hash::Algorithm::Sha256, &self.hash)?; + let parts_header = self + .parts_header + .as_ref() + .and_then(CanonicalPartSetHeader::parse_parts_header); + Ok(block::Id::new(hash, parts_header)) } } @@ -56,6 +64,14 @@ pub struct PartsSetHeader { pub hash: Vec, } +impl PartsSetHeader { + fn parse_parts_header(&self) -> Option { + Hash::new(hash::Algorithm::Sha256, &self.hash) + .map(|hash| block::parts::Header::new(self.total as u64, hash)) + .ok() + } +} + impl ConsensusMessage for PartsSetHeader { fn validate_basic(&self) -> Result<(), ValidationError> { if self.total < 0 { @@ -76,3 +92,11 @@ pub struct CanonicalPartSetHeader { #[prost(int64, tag = "2")] pub total: i64, } + +impl CanonicalPartSetHeader { + fn parse_parts_header(&self) -> Option { + Hash::new(hash::Algorithm::Sha256, &self.hash) + .map(|hash| block::parts::Header::new(self.total as u64, hash)) + .ok() + } +} diff --git a/tendermint-rs/src/block.rs b/tendermint-rs/src/block.rs index 67f89a4..9bd1801 100644 --- a/tendermint-rs/src/block.rs +++ b/tendermint-rs/src/block.rs @@ -1,9 +1,31 @@ //! Blocks within the chains of a Tendermint network +pub mod header; mod height; mod id; +mod meta; +pub mod parts; -pub use self::{ - height::*, - id::{Id, ParseId}, -}; +pub use self::height::*; +pub use self::id::{Id, ParseId}; +pub use self::{header::Header, meta::Meta}; +use crate::{commit::LastCommit, evidence, transaction}; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +/// Block data +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[derive(Clone, Debug)] +pub struct Block { + /// Block header + pub header: Header, + + /// Data (i.e. transactions) + pub data: transaction::Collection, + + /// Evidence of Byzantine behavior + pub evidence: evidence::Collection, + + /// Last commit + pub last_commit: LastCommit, +} diff --git a/tendermint-rs/src/block/header.rs b/tendermint-rs/src/block/header.rs new file mode 100644 index 0000000..190121f --- /dev/null +++ b/tendermint-rs/src/block/header.rs @@ -0,0 +1,100 @@ +//! Block headers + +use crate::{account, block, chain, Hash, Timestamp}; +#[cfg(feature = "serde")] +use { + crate::serializers, + serde::{Deserialize, Serialize}, +}; + +/// Block header +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct Header { + /// Header version + pub version: Version, + + /// Chain ID + pub chain_id: chain::Id, + + /// Current block height + pub height: block::Height, + + /// Current timestamp + pub time: Timestamp, + + /// Number of transactions in block + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub num_txs: u64, + + /// Total number of transactions + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub total_txs: u64, + + /// Last block ID + pub last_block_id: block::Id, + + /// Last commit hash + pub last_commit_hash: Hash, + + /// Data hash + pub data_hash: Hash, + + /// Validators hash + pub validators_hash: Hash, + + /// Next validators hash + pub next_validators_hash: Hash, + + /// Consensus hash + pub consensus_hash: Hash, + + /// App hash + pub app_hash: Hash, + + /// Last results hash + pub last_results_hash: Hash, + + /// Evidence hash + pub evidence_hash: Hash, + + /// Proposer address + pub proposer_address: account::Id, +} + +/// Block header versions +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct Version { + /// Block version + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub block: u64, + + /// App version + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub app: u64, +} diff --git a/tendermint-rs/src/block/id.rs b/tendermint-rs/src/block/id.rs index 1c8b501..eb0bc99 100644 --- a/tendermint-rs/src/block/id.rs +++ b/tendermint-rs/src/block/id.rs @@ -1,23 +1,30 @@ +use super::parts; +use crate::{ + error::Error, + hash::{Algorithm, Hash}, +}; #[cfg(feature = "serde")] -use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; +use serde::{Deserialize, Serialize}; use std::{ fmt::{self, Display}, str::{self, FromStr}, }; -use crate::{algorithm::HashAlgorithm, error::Error, hash::Hash}; - /// Block identifiers -#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Hash, Eq, PartialEq)] pub struct Id { /// Hash which identifies this block - pub hash: Hash, // TODO: parts set header? + pub hash: Hash, + + /// Parts header (if available) + pub parts: Option, } impl Id { /// Create a new `Id` from a hash byte slice - pub fn new(hash: Hash) -> Self { - Self { hash } + pub fn new(hash: Hash, parts: Option) -> Self { + Self { hash, parts } } } @@ -33,22 +40,7 @@ impl FromStr for Id { type Err = Error; fn from_str(s: &str) -> Result { - Ok(Self::new(Hash::from_hex_upper(HashAlgorithm::Sha256, s)?)) - } -} - -#[cfg(feature = "serde")] -impl Serialize for Id { - fn serialize(&self, serializer: S) -> Result { - self.to_string().serialize(serializer) - } -} - -#[cfg(feature = "serde")] -impl<'de> Deserialize<'de> for Id { - fn deserialize>(deserializer: De) -> Result { - Self::from_str(&String::deserialize(deserializer)?) - .map_err(|e| De::Error::custom(format!("{}", e))) + Ok(Self::new(Hash::from_hex_upper(Algorithm::Sha256, s)?, None)) } } @@ -69,7 +61,7 @@ mod tests { fn parses_hex_strings() { let id = Id::from_str(EXAMPLE_SHA256_ID).unwrap(); assert_eq!( - id.hash.as_slice(), + id.hash.as_slice().unwrap(), b"\x26\xC0\xA4\x1F\x32\x43\xC6\xBC\xD7\xAD\x2D\xFF\x8A\x8D\x83\xA7\ \x1D\x29\xD3\x07\xB5\x32\x6C\x22\x7F\x73\x4A\x1A\x51\x2F\xE4\x7D" .as_ref() diff --git a/tendermint-rs/src/block/meta.rs b/tendermint-rs/src/block/meta.rs new file mode 100644 index 0000000..05dafe7 --- /dev/null +++ b/tendermint-rs/src/block/meta.rs @@ -0,0 +1,16 @@ +//! Block metadata + +use super::{Header, Id}; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +/// Block metadata +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct Meta { + /// ID of the block + pub block_id: Id, + + /// Header of the block + pub header: Header, +} diff --git a/tendermint-rs/src/block/parts.rs b/tendermint-rs/src/block/parts.rs new file mode 100644 index 0000000..9fc7935 --- /dev/null +++ b/tendermint-rs/src/block/parts.rs @@ -0,0 +1,33 @@ +//! Block parts + +use crate::Hash; +#[cfg(feature = "serde")] +use { + crate::serializers, + serde::{Deserialize, Serialize}, +}; + +/// Block parts header +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct Header { + /// Number of parts in this block + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub total: u64, + + /// Hash of the parts set header, + pub hash: Hash, +} + +impl Header { + /// Create a new parts header + pub fn new(total: u64, hash: Hash) -> Self { + Header { total, hash } + } +} diff --git a/tendermint-rs/src/channel.rs b/tendermint-rs/src/channel.rs index d529721..331dfc8 100644 --- a/tendermint-rs/src/channel.rs +++ b/tendermint-rs/src/channel.rs @@ -3,7 +3,7 @@ mod id; pub use self::id::Id; -use crate::rpc; +use crate::serializers; pub use serde::{Deserialize, Serialize}; use std::fmt::{self, Display}; @@ -17,32 +17,32 @@ pub struct Channel { /// Capacity of the send queue #[serde( rename = "SendQueueCapacity", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub send_queue_capacity: u64, /// Size of the send queue #[serde( rename = "SendQueueSize", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub send_queue_size: u64, /// Priority value #[serde( rename = "Priority", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub priority: u64, /// Amount of data recently sent #[serde( rename = "RecentlySent", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub recently_sent: u64, } diff --git a/tendermint-rs/src/commit.rs b/tendermint-rs/src/commit.rs new file mode 100644 index 0000000..5ecee07 --- /dev/null +++ b/tendermint-rs/src/commit.rs @@ -0,0 +1,64 @@ +//! Commit messages used for updating chain state + +use crate::{account, block, Signature, Timestamp}; +#[cfg(feature = "serde")] +use { + crate::serializers, + serde::{Deserialize, Serialize}, +}; + +/// Last commit +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct LastCommit { + /// Block ID of the last commit + pub block_id: block::Id, + + /// Precommits + pub precommits: Vec>, +} + +/// Precommits +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct Precommit { + /// Type of precommit + // TODO(tarcieri): use an `enum` for this? + #[cfg_attr(feature = "serde", serde(rename = "type"))] + pub precommit_type: u64, + + /// Block height + pub height: block::Height, + + /// Round + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub round: u64, + + /// Block ID + pub block_id: block::Id, + + /// Timestamp + pub timestamp: Timestamp, + + /// Validator address + pub validator_address: account::Id, + + /// Validator index + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub validator_index: u64, + + /// Signature + pub signature: Signature, +} diff --git a/tendermint-rs/src/evidence.rs b/tendermint-rs/src/evidence.rs new file mode 100644 index 0000000..4c75e8f --- /dev/null +++ b/tendermint-rs/src/evidence.rs @@ -0,0 +1,86 @@ +//! Evidence of Byzantine behavior + +use std::slice; +#[cfg(feature = "serde")] +use { + serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}, + subtle_encoding::base64, +}; + +/// Evidence data +// TODO(tarcieri): parse evidence (amino?) +#[derive(Clone, Debug)] +pub struct Evidence(Vec); + +impl Evidence { + /// Create a new raw evidence value from a byte vector + pub fn new(into_vec: V) -> Evidence + where + V: Into>, + { + // TODO(tarcieri): parse/validate evidence contents + Evidence(into_vec.into()) + } + + /// Serialize this evidence as a bytestring + pub fn to_bytes(&self) -> Vec { + self.0.clone() + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Evidence { + fn deserialize>(deserializer: D) -> Result { + let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) + .map_err(|e| D::Error::custom(format!("{}", e)))?; + + Ok(Evidence::new(bytes)) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Evidence { + fn serialize(&self, serializer: S) -> Result { + String::from_utf8(base64::encode(self.to_bytes())) + .unwrap() + .serialize(serializer) + } +} + +/// Evidence collection +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[derive(Clone, Debug)] +pub struct Collection { + evidence: Option>, +} + +impl Collection { + /// Create a new evidence collection + pub fn new(into_evidence: I) -> Collection + where + I: Into>, + { + Collection { + evidence: Some(into_evidence.into()), + } + } + + /// Convert this collection into a vector + pub fn into_vec(self) -> Vec { + self.evidence.unwrap_or_else(|| vec![]) + } + + /// Iterate over the evidence in the collection + pub fn iter(&self) -> slice::Iter { + self.as_ref().iter() + } +} + +impl AsRef<[Evidence]> for Collection { + fn as_ref(&self) -> &[Evidence] { + self.evidence + .as_ref() + .map(|evidence| evidence.as_slice()) + .unwrap_or_else(|| &[]) + } +} diff --git a/tendermint-rs/src/hash.rs b/tendermint-rs/src/hash.rs index 37fc178..915db9c 100644 --- a/tendermint-rs/src/hash.rs +++ b/tendermint-rs/src/hash.rs @@ -1,10 +1,10 @@ //! Hash functions and their outputs -use crate::{algorithm::HashAlgorithm, error::Error}; +use crate::error::Error; #[cfg(feature = "serde")] use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; use std::{ - fmt::{self, Display}, + fmt::{self, Debug, Display}, str::FromStr, }; use subtle_encoding::{Encoding, Hex}; @@ -12,19 +12,29 @@ use subtle_encoding::{Encoding, Hex}; /// Output size for the SHA-256 hash function pub const SHA256_HASH_SIZE: usize = 32; -/// Hashes used for computing BlockIDs -#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] +/// Hash algorithms +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Algorithm { + /// SHA-256 + Sha256, +} + +/// Hash digests +#[derive(Copy, Clone, Hash, Eq, PartialEq)] pub enum Hash { /// SHA-256 hashes Sha256([u8; SHA256_HASH_SIZE]), + + /// NULL (i.e. all-zero) hashes + Null, } impl Hash { #[allow(clippy::new_ret_no_self)] /// Create a new `Hash` with the given algorithm type - pub fn new(alg: HashAlgorithm, bytes: &[u8]) -> Result { + pub fn new(alg: Algorithm, bytes: &[u8]) -> Result { match alg { - HashAlgorithm::Sha256 => { + Algorithm::Sha256 => { if bytes.len() == SHA256_HASH_SIZE { let mut h = [0u8; SHA256_HASH_SIZE]; h.copy_from_slice(bytes); @@ -37,9 +47,9 @@ impl Hash { } /// Decode a `Hash` from upper-case hexadecimal - pub fn from_hex_upper(alg: HashAlgorithm, s: &str) -> Result { + pub fn from_hex_upper(alg: Algorithm, s: &str) -> Result { match alg { - HashAlgorithm::Sha256 => { + Algorithm::Sha256 => { let mut h = [0u8; SHA256_HASH_SIZE]; Hex::upper_case().decode_to_slice(s.as_bytes(), &mut h)?; Ok(Hash::Sha256(h)) @@ -47,17 +57,29 @@ impl Hash { } } + /// Return the digest algorithm used to produce this hash + pub fn algorithm(self) -> Option { + match self { + Hash::Sha256(_) => Some(Algorithm::Sha256), + Hash::Null => None, + } + } + /// Borrow the `Hash` as a byte slice - pub fn as_slice(&self) -> &[u8] { + pub fn as_slice(&self) -> Option<&[u8]> { match self { - Hash::Sha256(ref h) => h.as_ref(), + Hash::Sha256(ref h) => Some(h.as_ref()), + Hash::Null => None, } } } -impl AsRef<[u8]> for Hash { - fn as_ref(&self) -> &[u8] { - self.as_slice() +impl Debug for Hash { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + Hash::Sha256(_) => write!(f, "Hash::Sha256({})", self), + Hash::Null => write!(f, "Hash::Null"), + } } } @@ -65,6 +87,7 @@ impl Display for Hash { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let hex = match self { Hash::Sha256(ref h) => Hex::upper_case().encode_to_string(h).unwrap(), + Hash::Null => "".to_owned(), }; write!(f, "{}", hex) @@ -75,15 +98,20 @@ impl FromStr for Hash { type Err = Error; fn from_str(s: &str) -> Result { - Self::from_hex_upper(HashAlgorithm::Sha256, s) + Self::from_hex_upper(Algorithm::Sha256, s) } } #[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Hash { fn deserialize>(deserializer: D) -> Result { - Ok(Self::from_str(&String::deserialize(deserializer)?) - .map_err(|e| D::Error::custom(format!("{}", e)))?) + let hex = String::deserialize(deserializer)?; + + if hex.is_empty() { + Ok(Hash::Null) + } else { + Ok(Self::from_str(&hex).map_err(|e| D::Error::custom(format!("{}", e)))?) + } } } diff --git a/tendermint-rs/src/lib.rs b/tendermint-rs/src/lib.rs index 299f180..e927589 100644 --- a/tendermint-rs/src/lib.rs +++ b/tendermint-rs/src/lib.rs @@ -26,14 +26,15 @@ extern crate prost_amino as prost; extern crate prost_amino_derive as prost_derive; pub mod account; -pub mod algorithm; #[cfg(feature = "amino-types")] pub mod amino_types; pub mod block; pub mod chain; #[cfg(feature = "rpc")] pub mod channel; +pub mod commit; pub mod error; +pub mod evidence; pub mod hash; mod moniker; pub mod net; @@ -43,17 +44,22 @@ pub mod public_keys; pub mod rpc; #[cfg(feature = "secret-connection")] pub mod secret_connection; +#[cfg(feature = "serde")] +mod serializers; +pub mod signature; pub mod timestamp; +pub mod transaction; mod version; #[cfg(feature = "secret-connection")] pub use crate::secret_connection::SecretConnection; pub use crate::{ - algorithm::{HashAlgorithm, SignatureAlgorithm}, + block::Block, error::Error, hash::Hash, moniker::Moniker, public_keys::{PublicKey, TendermintKey}, + signature::Signature, timestamp::Timestamp, version::Version, }; diff --git a/tendermint-rs/src/node/id.rs b/tendermint-rs/src/node/id.rs index 99c4f1e..d6e0569 100644 --- a/tendermint-rs/src/node/id.rs +++ b/tendermint-rs/src/node/id.rs @@ -6,7 +6,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use sha2::{Digest, Sha256}; use signatory::ed25519; use std::{ - fmt::{self, Display}, + fmt::{self, Debug, Display}, str::FromStr, }; use subtle::{self, ConstantTimeEq}; @@ -16,7 +16,7 @@ use subtle_encoding::hex; pub const ID_LENGTH: usize = 20; /// Node IDs -#[derive(Copy, Clone, Debug, Hash)] +#[derive(Copy, Clone, Hash)] pub struct Id([u8; ID_LENGTH]); impl Id { @@ -53,6 +53,12 @@ impl Display for Id { } } +impl Debug for Id { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "node::Id({})", self) + } +} + impl From for Id { fn from(pk: ed25519::PublicKey) -> Id { let digest = Sha256::digest(pk.as_bytes()); diff --git a/tendermint-rs/src/node/info.rs b/tendermint-rs/src/node/info.rs index 46e8eeb..2735ea5 100644 --- a/tendermint-rs/src/node/info.rs +++ b/tendermint-rs/src/node/info.rs @@ -1,6 +1,6 @@ //! Node information (used in RPC responses) -use crate::{chain, channel::Channels, net, node, rpc, Moniker, Version}; +use crate::{chain, channel::Channels, net, node, serializers, Moniker, Version}; use serde::{Deserialize, Serialize}; /// Node information @@ -36,22 +36,22 @@ pub struct Info { pub struct ProtocolVersionInfo { /// P2P protocol version #[serde( - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub p2p: u64, /// Block version #[serde( - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub block: u64, /// App version #[serde( - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub app: u64, } diff --git a/tendermint-rs/src/rpc/endpoint.rs b/tendermint-rs/src/rpc/endpoint.rs index 69faec7..827131d 100644 --- a/tendermint-rs/src/rpc/endpoint.rs +++ b/tendermint-rs/src/rpc/endpoint.rs @@ -1,7 +1,5 @@ //! Tendermint JSONRPC endpoints -mod net_info; -mod status; - -pub use net_info::{NetInfoRequest, NetInfoResponse}; -pub use status::{StatusRequest, StatusResponse}; +pub mod block; +pub mod net_info; +pub mod status; diff --git a/tendermint-rs/src/rpc/endpoint/block.rs b/tendermint-rs/src/rpc/endpoint/block.rs new file mode 100644 index 0000000..ac904d7 --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint/block.rs @@ -0,0 +1,40 @@ +//! `/block` endpoint JSONRPC wrapper + +use crate::{ + block::{self, Block}, + rpc, +}; +use serde::{Deserialize, Serialize}; + +/// Get information about a specific block +pub struct Request { + height: block::Height, +} + +impl Request { + /// Create a new request for information about a particular block + pub fn new(height: block::Height) -> Self { + Self { height } + } +} + +impl rpc::Request for Request { + type Response = Response; + + fn path(&self) -> rpc::request::Path { + // TODO(tarcieri): use a `uri` crate to construct this? + format!("/block?height={}", self.height).parse().unwrap() + } +} + +/// Block responses +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Response { + /// Block metadata + pub block_meta: block::Meta, + + /// Block data + pub block: Block, +} + +impl rpc::Response for Response {} diff --git a/tendermint-rs/src/rpc/endpoint/net_info.rs b/tendermint-rs/src/rpc/endpoint/net_info.rs index 6ea75ad..d90b823 100644 --- a/tendermint-rs/src/rpc/endpoint/net_info.rs +++ b/tendermint-rs/src/rpc/endpoint/net_info.rs @@ -1,6 +1,6 @@ -//! RPC wrapper for `/net_info` endpoint +//! `/net_info` endpoint JSONRPC wrapper -use crate::{channel::Channel, node, rpc, Timestamp}; +use crate::{channel::Channel, node, rpc, serializers, Timestamp}; use serde::{Deserialize, Serialize}; use std::{ fmt::{self, Display}, @@ -10,10 +10,10 @@ use std::{ /// Request the status of the node #[derive(Debug, Default)] -pub struct NetInfoRequest; +pub struct Request; -impl rpc::Request for NetInfoRequest { - type Response = NetInfoResponse; +impl rpc::Request for Request { + type Response = Response; fn path(&self) -> rpc::request::Path { "/net_info".parse().unwrap() @@ -22,7 +22,7 @@ impl rpc::Request for NetInfoRequest { /// Status responses #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct NetInfoResponse { +pub struct Response { /// Are we presently listening? pub listening: bool, @@ -31,8 +31,8 @@ pub struct NetInfoResponse { /// Number of connected peers #[serde( - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub n_peers: u64, @@ -40,7 +40,7 @@ pub struct NetInfoResponse { pub peers: Vec, } -impl rpc::Response for NetInfoResponse {} +impl rpc::Response for Response {} /// Listener information #[derive(Clone, Debug, Deserialize, Serialize)] @@ -74,8 +74,8 @@ pub struct ConnectionStatus { /// Duration of this connection #[serde( rename = "Duration", - serialize_with = "rpc::response::serialize_duration", - deserialize_with = "rpc::response::parse_duration" + serialize_with = "serializers::serialize_duration", + deserialize_with = "serializers::parse_duration" )] pub duration: Duration, @@ -106,80 +106,80 @@ pub struct Monitor { /// Duration of this monitor #[serde( rename = "Duration", - serialize_with = "rpc::response::serialize_duration", - deserialize_with = "rpc::response::parse_duration" + serialize_with = "serializers::serialize_duration", + deserialize_with = "serializers::parse_duration" )] pub duration: Duration, /// Idle duration for this monitor #[serde( rename = "Idle", - serialize_with = "rpc::response::serialize_duration", - deserialize_with = "rpc::response::parse_duration" + serialize_with = "serializers::serialize_duration", + deserialize_with = "serializers::parse_duration" )] pub idle: Duration, /// Bytes #[serde( rename = "Bytes", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] bytes: u64, /// Samples #[serde( rename = "Samples", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] samples: u64, /// Instant rate #[serde( rename = "InstRate", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] inst_rate: u64, /// Current rate #[serde( rename = "CurRate", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] cur_rate: u64, /// Average rate #[serde( rename = "AvgRate", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] avg_rate: u64, /// Peak rate #[serde( rename = "PeakRate", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] peak_rate: u64, /// Bytes remaining #[serde( rename = "BytesRem", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] bytes_rem: u64, /// Time remaining #[serde( rename = "TimeRem", - serialize_with = "rpc::response::serialize_u64", - deserialize_with = "rpc::response::parse_u64" + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] time_rem: u64, diff --git a/tendermint-rs/src/rpc/endpoint/status.rs b/tendermint-rs/src/rpc/endpoint/status.rs index b16d914..17a6bea 100644 --- a/tendermint-rs/src/rpc/endpoint/status.rs +++ b/tendermint-rs/src/rpc/endpoint/status.rs @@ -5,10 +5,10 @@ use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializ /// Node status request #[derive(Debug, Default)] -pub struct StatusRequest; +pub struct Request; -impl rpc::Request for StatusRequest { - type Response = StatusResponse; +impl rpc::Request for Request { + type Response = Response; fn path(&self) -> rpc::request::Path { "/status".parse().unwrap() @@ -17,7 +17,7 @@ impl rpc::Request for StatusRequest { /// Status responses #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct StatusResponse { +pub struct Response { /// Node information pub node_info: node::Info, @@ -28,7 +28,7 @@ pub struct StatusResponse { pub validator_info: ValidatorInfo, } -impl rpc::Response for StatusResponse {} +impl rpc::Response for Response {} /// Sync information #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/tendermint-rs/src/rpc/response.rs b/tendermint-rs/src/rpc/response.rs index 21532c9..265998a 100644 --- a/tendermint-rs/src/rpc/response.rs +++ b/tendermint-rs/src/rpc/response.rs @@ -1,14 +1,8 @@ //! JSONRPC response types use failure::{format_err, Error}; -use serde::{ - de::{DeserializeOwned, Error as DeError}, - Deserialize, Deserializer, Serialize, Serializer, -}; -use std::{ - fmt::{self, Display}, - time::Duration, -}; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use std::fmt::{self, Display}; /// JSONRPC responses pub trait Response: Serialize + DeserializeOwned + Sized { @@ -54,48 +48,3 @@ impl AsRef for Id { self.0.as_ref() } } - -/// Parse `u64` from a JSON string -pub(crate) fn parse_u64<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - String::deserialize(deserializer)? - .parse::() - .map_err(|e| D::Error::custom(format!("{}", e))) -} - -/// Serialize `u64` as a JSON string -#[allow(clippy::trivially_copy_pass_by_ref)] -pub(crate) fn serialize_u64(value: &u64, serializer: S) -> Result -where - S: Serializer, -{ - format!("{}", value).serialize(serializer) -} - -/// Parse `Duration` from a JSON string containing a nanosecond count -pub(crate) fn parse_duration<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - // TODO(tarcieri): handle 64-bit overflow? - let nanos = String::deserialize(deserializer)? - .parse::() - .map_err(|e| D::Error::custom(format!("{}", e)))?; - - Ok(Duration::from_nanos(nanos)) -} - -/// Serialize `Duration` as a JSON string containing a nanosecond count -pub(crate) fn serialize_duration(duration: &Duration, serializer: S) -> Result -where - S: Serializer, -{ - // TODO(tarcieri): use `as_nanos` when we're Rust 1.33+ - format!( - "{}", - (duration.as_secs() * 1_000_000_000) + duration.subsec_nanos() as u64 - ) - .serialize(serializer) -} diff --git a/tendermint-rs/src/serializers.rs b/tendermint-rs/src/serializers.rs new file mode 100644 index 0000000..5ccaffb --- /dev/null +++ b/tendermint-rs/src/serializers.rs @@ -0,0 +1,52 @@ +//! Serde serializers + +use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; +#[cfg(feature = "rpc")] +use std::time::Duration; + +/// Parse `u64` from a JSON string +pub(crate) fn parse_u64<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + String::deserialize(deserializer)? + .parse::() + .map_err(|e| D::Error::custom(format!("{}", e))) +} + +/// Serialize `u64` as a JSON string +#[allow(clippy::trivially_copy_pass_by_ref)] +pub(crate) fn serialize_u64(value: &u64, serializer: S) -> Result +where + S: Serializer, +{ + format!("{}", value).serialize(serializer) +} + +/// Parse `Duration` from a JSON string containing a nanosecond count +#[cfg(feature = "rpc")] +pub(crate) fn parse_duration<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + // TODO(tarcieri): handle 64-bit overflow? + let nanos = String::deserialize(deserializer)? + .parse::() + .map_err(|e| D::Error::custom(format!("{}", e)))?; + + Ok(Duration::from_nanos(nanos)) +} + +/// Serialize `Duration` as a JSON string containing a nanosecond count +#[cfg(feature = "rpc")] +pub(crate) fn serialize_duration(duration: &Duration, serializer: S) -> Result +where + S: Serializer, +{ + // TODO(tarcieri): use `as_nanos` when we're Rust 1.33+ + format!( + "{}", + (duration.as_secs() * 1_000_000_000) + u64::from(duration.subsec_nanos()) + ) + .serialize(serializer) +} diff --git a/tendermint-rs/src/signature.rs b/tendermint-rs/src/signature.rs new file mode 100644 index 0000000..47a1d11 --- /dev/null +++ b/tendermint-rs/src/signature.rs @@ -0,0 +1,60 @@ +//! Cryptographic (a.k.a. digital) signatures + +#[cfg(feature = "serde")] +use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; +#[cfg(feature = "serde")] +use signatory::Signature as SignatureTrait; +#[cfg(feature = "serde")] +use subtle_encoding::base64; + +/// Digital signature algorithms +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Algorithm { + /// ECDSA over secp256k1 + EcdsaSecp256k1, + + /// EdDSA over Curve25519 + Ed25519, +} + +/// Signatures +#[derive(Clone, Debug)] +pub enum Signature { + /// Ed25519 block signature + Ed25519(signatory::ed25519::Signature), +} + +impl Signature { + /// Return the algorithm used to create this particular signature + pub fn algorithm(self) -> Algorithm { + match self { + Signature::Ed25519(_) => Algorithm::Ed25519, + } + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Signature { + fn deserialize>(deserializer: D) -> Result { + let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) + .map_err(|e| D::Error::custom(format!("{}", e)))?; + + Ok(Signature::Ed25519( + signatory::ed25519::Signature::from_bytes(&bytes) + .map_err(|e| D::Error::custom(format!("{}", e)))?, + )) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Signature { + fn serialize(&self, serializer: S) -> Result { + let sig_bytes = match self { + Signature::Ed25519(sig) => sig.as_bytes(), + }; + + String::from_utf8(base64::encode(&sig_bytes[..])) + .unwrap() + .serialize(serializer) + } +} diff --git a/tendermint-rs/src/transaction.rs b/tendermint-rs/src/transaction.rs new file mode 100644 index 0000000..7009594 --- /dev/null +++ b/tendermint-rs/src/transaction.rs @@ -0,0 +1,86 @@ +//! Transactions + +use std::slice; +#[cfg(feature = "serde")] +use { + serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}, + subtle_encoding::base64, +}; + +/// Transactions +// TODO(tarcieri): parse transactions (amino?) +#[derive(Clone, Debug)] +pub struct Transaction(Vec); + +impl Transaction { + /// Create a new raw transaction from a byte vector + pub fn new(into_vec: V) -> Transaction + where + V: Into>, + { + // TODO(tarcieri): parse/validate transaction contents + Transaction(into_vec.into()) + } + + /// Serialize this transaction as a bytestring + pub fn to_bytes(&self) -> Vec { + self.0.clone() + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Transaction { + fn deserialize>(deserializer: D) -> Result { + let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) + .map_err(|e| D::Error::custom(format!("{}", e)))?; + + Ok(Transaction::new(bytes)) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Transaction { + fn serialize(&self, serializer: S) -> Result { + String::from_utf8(base64::encode(self.to_bytes())) + .unwrap() + .serialize(serializer) + } +} + +/// Transaction collections +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[derive(Clone, Debug)] +pub struct Collection { + txs: Option>, +} + +impl Collection { + /// Create a new evidence collection + pub fn new(into_evidence: I) -> Collection + where + I: Into>, + { + Collection { + txs: Some(into_evidence.into()), + } + } + + /// Convert this collection into a vector + pub fn into_vec(self) -> Vec { + self.txs.unwrap_or_else(|| vec![]) + } + + /// Iterate over the transactions in the collection + pub fn iter(&self) -> slice::Iter { + self.as_ref().iter() + } +} + +impl AsRef<[Transaction]> for Collection { + fn as_ref(&self) -> &[Transaction] { + self.txs + .as_ref() + .map(|txs| txs.as_slice()) + .unwrap_or_else(|| &[]) + } +} diff --git a/tendermint-rs/tests/rpc.rs b/tendermint-rs/tests/rpc.rs index fe0e4f1..645bb54 100644 --- a/tendermint-rs/tests/rpc.rs +++ b/tendermint-rs/tests/rpc.rs @@ -4,7 +4,7 @@ mod endpoints { use std::{fs, path::PathBuf}; use tendermint::rpc::{ - endpoint::{NetInfoResponse, StatusResponse}, + endpoint::{block, net_info, status}, Response, }; @@ -13,12 +13,32 @@ mod endpoints { .unwrap() } + #[test] + fn block() { + let block_json = read_json_fixture("block"); + let block_response = block::Response::from_json(&block_json).unwrap(); + + let tendermint::Block { + header, + data, + evidence, + last_commit, + } = block_response.block; + + assert_eq!(header.version.block, 10); + assert_eq!(header.chain_id.as_str(), "cosmoshub-1"); + assert_eq!(header.height.value(), 15); + assert_eq!(header.num_txs, 2); + + assert_eq!(data.iter().len(), 2); + assert_eq!(evidence.iter().len(), 0); + assert_eq!(last_commit.precommits.len(), 65); + } + #[test] fn net_info() { let net_info_json = read_json_fixture("net_info"); - let net_info_response = NetInfoResponse::from_json(&net_info_json).unwrap(); - - println!("net_info_response: {:?}", net_info_response); + let net_info_response = net_info::Response::from_json(&net_info_json).unwrap(); assert_eq!(net_info_response.n_peers, 2); assert_eq!( @@ -30,7 +50,7 @@ mod endpoints { #[test] fn status() { let status_json = read_json_fixture("status"); - let status_response = StatusResponse::from_json(&status_json).unwrap(); + let status_response = status::Response::from_json(&status_json).unwrap(); assert_eq!(status_response.node_info.network.as_str(), "cosmoshub-1"); assert_eq!( diff --git a/tendermint-rs/tests/support/block.json b/tendermint-rs/tests/support/block.json new file mode 100644 index 0000000..527c424 --- /dev/null +++ b/tendermint-rs/tests/support/block.json @@ -0,0 +1,801 @@ +{ + "jsonrpc": "2.0", + "id": "", + "result": { + "block_meta": { + "block_id": { + "hash": "17F6492281A1F30A553A0FFE4D69D52B5BEA7C3F1ED0F56FBE32F30049568C04", + "parts": { + "total": "1", + "hash": "4805F8EADB7CA931CF86F9D91D4C30FA22FB5047A781C3B9B6B92A3D552BF9C3" + } + }, + "header": { + "version": { + "block": "10", + "app": "0" + }, + "chain_id": "cosmoshub-1", + "height": "15", + "time": "2019-03-13T23:09:34.503701042Z", + "num_txs": "2", + "total_txs": "4", + "last_block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "last_commit_hash": "C499C138BCABA4D40D68A1446F6E5DE1965E07DF17EEACE1A69C1C9B1B8AC5AB", + "data_hash": "AC6A27A91A6EF9057D1A33F7944DD9EDD5FC1A3CA49E04EF0801A17FF01B4412", + "validators_hash": "EB25B1ACF639219180EB77AFC67E75A51A7CA0D666123E514B6882EC38868652", + "next_validators_hash": "EB25B1ACF639219180EB77AFC67E75A51A7CA0D666123E514B6882EC38868652", + "consensus_hash": "29C5629148426FB74676BE07F40F2ED79674A67F5833E4C9CCBF759C9372E99C", + "app_hash": "0A5826D21A3B0B341C843A0E4946AC787EC9B42A7DC1BEAA344C03C43943B179", + "last_results_hash": "", + "evidence_hash": "", + "proposer_address": "CC05882978FC5FDD6A7721687E14C0299AE004B8" + } + }, + "block": { + "header": { + "version": { + "block": "10", + "app": "0" + }, + "chain_id": "cosmoshub-1", + "height": "15", + "time": "2019-03-13T23:09:34.503701042Z", + "num_txs": "2", + "total_txs": "4", + "last_block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "last_commit_hash": "C499C138BCABA4D40D68A1446F6E5DE1965E07DF17EEACE1A69C1C9B1B8AC5AB", + "data_hash": "AC6A27A91A6EF9057D1A33F7944DD9EDD5FC1A3CA49E04EF0801A17FF01B4412", + "validators_hash": "EB25B1ACF639219180EB77AFC67E75A51A7CA0D666123E514B6882EC38868652", + "next_validators_hash": "EB25B1ACF639219180EB77AFC67E75A51A7CA0D666123E514B6882EC38868652", + "consensus_hash": "29C5629148426FB74676BE07F40F2ED79674A67F5833E4C9CCBF759C9372E99C", + "app_hash": "0A5826D21A3B0B341C843A0E4946AC787EC9B42A7DC1BEAA344C03C43943B179", + "last_results_hash": "", + "evidence_hash": "", + "proposer_address": "CC05882978FC5FDD6A7721687E14C0299AE004B8" + }, + "data": { + "txs": [ + "wAHwYl3uCkiSHS5OChT/QZS7Fj7sZdayTPyZhJNLCpVxZBIUQNGfkmhTNMis4j+dyMDIWXdIPiYaFgoFdWF0b20SDTEwMTc2NzUwMDAwMDASBBDAmgwaagom61rphyECp4MiFF2GguiK5rZJsP6Nj6VCUUDYF8FLQDJM+ZL8aTMSQHwyTUll2Z/qytHIKawf0vDBNH06mnTfY3UHS4JptrhiUeb1D11cPRQU7d4FJyF34PSiQbE2rqseBD048vf0rq8=", + "0AHwYl3uCkeSHS5OChTXnF0trN9F2zXWcrlPKV7Lec/1WBIUr96Q6iUnGp/XQu8Yw47CkhtePFYaFQoFdWF0b20SDDEyNjE0MDAwMDAwMBIVCg8KBXVhdG9tEgY1MDAwMDAQwJoMGmoKJuta6YchArpZkCzdlZbia15dulbX2t/O87jhpK2dUhT5htQHOh9MEkCNInlBh5148oh3wFLd2tln04N5A8ThUK3xaA0ktGWwQGQ5/kRH5x6TrYhgHOvjcbzlMKhnnAjBI+ZT3LzfBP3/" + ] + }, + "evidence": { + "evidence": null + }, + "last_commit": { + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "precommits": [ + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.429740033Z", + "validator_address": "000001E443FD237E4B616E2FA69DF4EE3D49A94F", + "validator_index": "0", + "signature": "JYNB62/IuChC794od9nzlHQbPUpyWexLSJrFmdnfAXoNpWHODlxXw4bPhbEXXYDfPN1966OpM8VHfEzVO8JAAA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.325756771Z", + "validator_address": "000AA5ABF590A815EBCBDAE070AFF50BE571EB8B", + "validator_index": "1", + "signature": "+wZVrNYZtsK07jXFAHns0B+Y1lr07Sh6SID3qeUWYoVbA8mfYYJQTp5nOFDqOzfoLpSf0+52ffPpuvkInVPKAA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.49422755Z", + "validator_address": "02A248C86C78ED6A824D510A8B7AA4C1D290D2DC", + "validator_index": "2", + "signature": "LJVGnGsl/myWDsrun847RsRmsSFcDgdc001lJ0sG9NVXlUIBTzpNugtqsJc5af/Ex+wVUHoBLo1nOaVvzwO4Dg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.519603896Z", + "validator_address": "064CF05857B556FED63AC32821FF904312D0F2C8", + "validator_index": "3", + "signature": "Jc9LRgEypfL3ngUqv68BW+bIZc3ma3gtCFYA3uFB/ZQrUl6lHq+avGK9x9APXXSX+yn1iR8xde+jZjjevpjCAg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.597921595Z", + "validator_address": "099E2B09583331AFDE35E5FA96673D2CA7DEA316", + "validator_index": "4", + "signature": "WPVJGOP7QkJvcCu2D12t/qDpZNCyVT8ILaUfYrTc5wn7BS3D+75EagCYs6t9SsIuUcFblQRpGQ+2t4/rJ+9RAA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.419082678Z", + "validator_address": "18C78D135C9D81D74F6234DBD268C47F0F89E844", + "validator_index": "5", + "signature": "i9F3DhxFJousyY5j0bbIQqpSZGizNAjxq/SKV8LymHPzmJ4WshzThoQ77fODgghHBVXMPrGuze6mGezyhHS+AA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.35575858Z", + "validator_address": "1E9CE94FD0BA5CFEB901F90BC658D64D85B134D2", + "validator_index": "6", + "signature": "CL68/VRJry+OGtuDan81N8p9LgKaz0nJxGSvS0vdlUHDGxhMjkM24UZB6lkEKhXL3noScXFs7qAfBbkMGL2SCw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.392230628Z", + "validator_address": "2199EAE894CA391FA82F01C2C614BFEB103D056C", + "validator_index": "7", + "signature": "7HWHvy3qgJZTqrU6NKDhCV9Chyp5wG+KyuXzDb8BEQ1SmZcYjGvSa1cRgC2mNFiBUyM7rf1KAXYUjM59iF5DAQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.438684613Z", + "validator_address": "2B19594437F1920B5AF6461FAB81AEC99790FEB1", + "validator_index": "8", + "signature": "x12gylFfGbRmC5Pb5V54vfctIT4gX9lRPBCraahkbzX4YiZ6ppZyqRgTMrZJ2q/kkM29oI2eDAH+7+fuFmC8Bw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.772118693Z", + "validator_address": "2C9CCC317FB283D54AC748838A64F29106039E51", + "validator_index": "9", + "signature": "PPF9fLEntIH57ySt5URknQPapLgxYh8uf6sgA4PsZaBBHXmedY5Z/IX/Q8M5+keiOvoFBr1OqyMh27i+vWTFDw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.434828086Z", + "validator_address": "31920F9BC3A39B66876CC7D6D5E589E10393BF0E", + "validator_index": "10", + "signature": "oZaDZjYIZTOp501oD5y91yhqLALCFT6l9N4UDcA6dD7QUBjzv/+DA04S9VudfVfv54oBFHcI/B2iweCzynWLBw==" + }, + null, + null, + null, + null, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.424108252Z", + "validator_address": "4E9CB39F4B1FA617339744A5600B62802652D69C", + "validator_index": "16", + "signature": "HxOewGhlGQyEoCpGZTi/4OWmiR9KPuAwFwc8AQKlwC59nmd/KUjos2KEMSrQAP+uJEjdJNyH8HuA25dKF40SCg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.450112723Z", + "validator_address": "51DB2566204EE266427EA8A6CB719835AB170BE9", + "validator_index": "17", + "signature": "sfgBpNuUA5KmiidfjxAaC98KBgLfTv6K1y4/El1sK3Az450gWRMoAN3VgwSTGdr4PjmyndO34l8NmPTs02GBBg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.489790253Z", + "validator_address": "57FEB2461AA77EC70036C636890B8F47CB4FCB0D", + "validator_index": "18", + "signature": "2XZvp5Qkl8Og9HdX3TINLvDI4lg0hEQN7ARDiG3RfdoJY7f6cHN4rz8LxNl+c6uR9CmOI78a4MaCdQe7LdpEBw==" + }, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.509137189Z", + "validator_address": "671460930CCDC9B06C5D055E4D550EB8DAF2291E", + "validator_index": "20", + "signature": "xORdNVZoufKykKt9JVMmi4G8OsUBhjk7ONUAFOJ92IWA1/xeiOVaVFI1BNu7olFc0nMiF2WLs55/LFSaQOUkBg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.566431449Z", + "validator_address": "679B89785973BE94D4FDF8B66F84A929932E91C5", + "validator_index": "21", + "signature": "cFcK+oaQBk+pWD+bmUwjR26+yr3mIMBS4mn7q3nVaMmZ0c2o2rIET41jg5bMFpa6I1uJw4fxIrQCpXLgWcC+DQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.521323901Z", + "validator_address": "696ABC95186FD65A07050C28AB00C9358A315030", + "validator_index": "22", + "signature": "acH9Tb+6H3WhPVpudwU7BF803StUmme0QXmjrp6kUq2GUGpG1/l17lPgrXXw0IJ39Pol1nYbFQEMxzwHem78BQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.549957418Z", + "validator_address": "6F5F44F6FD7CD1642FFB8B12215BAE814A1BE08C", + "validator_index": "23", + "signature": "GuhDo7L7jqMQR/9AueYdHU3/2SVk0M30RXiSIsxctueuoHD88Pp5gRoVkY1cWnQoECSWHU3iYYDsAoWaBX8LAQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.474915138Z", + "validator_address": "70C5B4E6779C59A24CFD9146581E27021C2AEC26", + "validator_index": "24", + "signature": "hOuLMUJ9kpDfOoJ9N1BOPd0781IzML2/FKu02r9ZKc2nVZM0D9jqFNQnqc4VX54v3Pbo9tvl6K1lbod8fSBIAA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.565381595Z", + "validator_address": "732CEEF54C374DDC6ADECBFD707AEFD07FEDC143", + "validator_index": "25", + "signature": "q6sdXcWHh3AmlRse5rXp5ijYlmkqApyXKlyg7VVObmI8iY7rv+GE1RidoID25NK0Prd0MbSvQuXvj33yebtnBQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.552568666Z", + "validator_address": "77064757FCC7828F98B33525B4599DB0FD08DC37", + "validator_index": "26", + "signature": "iXlDNKWGyeWwyAMJFDYV91k9TEpXqqTgAWoK/6oXA3FQ4OQmE8eH6wG/44cCtuXvmhCuo1adU4VZLZXUXdYPCA==" + }, + null, + null, + null, + null, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.567810449Z", + "validator_address": "91C823A744DE50F91C17A46B624EDF8F7150A7DD", + "validator_index": "32", + "signature": "PLola34fW7DiZoWDf3x6+/fiMniUQzU5k7s38oE7Li8GMgbijosPH7zWrZ4n7VBVQUk7z66iwOWT2CadIQqxDQ==" + }, + null, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.473478994Z", + "validator_address": "9C17C94F7313BB4D6E064287BEEDE5D3888E8855", + "validator_index": "35", + "signature": "iIW3EmTEN1V+Go2dsMm6w+b7OhpNNKIgx7oBI1Nu4jNzOHDRlgWnrs1wPWLjCElk0hM4GXzNKHSTKuZega97DA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.529584734Z", + "validator_address": "9D07B301D23C547266D55D1B6C5A78CA473383A1", + "validator_index": "36", + "signature": "j6MEWIMbDVr6R95zDB1gB/eTZ3hCGUBNndK9JJYLT+16AEQ49vYcE2+YFO5wfmBzvL1lDoBNdcgLLTbwg5IEDQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.475709787Z", + "validator_address": "9EE94DBB86F72337192BF291B0E767FD2729F00A", + "validator_index": "37", + "signature": "fj/wqL+3ZUROknFf2bsN4MtIAoAYq8zBqK7+FL5tyv/lpfWSrCRcr8dvmSCKm9CJPGF8IiCJvTJNYk0dS3SkCQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.574879465Z", + "validator_address": "AC2D56057CD84765E6FBE318979093E8E44AA18F", + "validator_index": "38", + "signature": "1qjA5AdVg9gk5yEX0s1xXTRKcFabvYXLNlp7sak3FjQ3l0AymqM2SOgo3NUvPQ0mvN+CgCvrgJLOFAWKuh5bAA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.386040521Z", + "validator_address": "B00A6323737F321EB0B8D59C6FD497A14B60938A", + "validator_index": "39", + "signature": "3aBvrm6AxJi069J+t+e8BikyqIhDm4qpmnKPISHV2qYJI6wMPv0QQdz/ufVo/6ZytknsWfj/24R2xUAJuaD7BQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.483466131Z", + "validator_address": "B0155252D73B7EEB74D2A8CC814397E66970A839", + "validator_index": "40", + "signature": "NnezKWLx3Ed3VTYGzRYc+KmI1anhNAwzL7A72q1SSLTih02AJ5jZK8NMm1nKVaH5AX3pkJ5jXeH8114dBRLCDQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.568197612Z", + "validator_address": "B0765A2F6FCC11D8AC46275FAC06DD35F54217C1", + "validator_index": "41", + "signature": "GorFi9MdD2sD8v9kUVPS0Lb+QfF0RdPfJhrO4muEDNA3B8tBQtlBGcHp657TCBUnwp5/cFXpHpdIvPsFuxfaBQ==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.457659949Z", + "validator_address": "B34591DA79AAD0213534E2E915F50DE5CDBDF250", + "validator_index": "42", + "signature": "1pBTMT87h5PekPstk2FomC2OSr11ERANb8/U5RSouAiV8MQJD0kzf3S6F2BsKlyIcEatQamIDjc0JhwcBV1UBg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.356812709Z", + "validator_address": "B4E1085F1C9EBB0EA994452CB1B8124BA89BED1A", + "validator_index": "43", + "signature": "MLTjtLKbTymQ3JiMDdmV0fDN9hJRcSzf47ergqAKeaEyfgR7J2I/YE74p7xgkyrH+6AeCFjCkCqIb3NmyD98Aw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.363475862Z", + "validator_address": "B543A7DF48780AEFEF593A003CD060B593C4E6B5", + "validator_index": "44", + "signature": "r8ax2ZuuFulXlTKca+iJF1QuhB2dD5oQdjIFnJgYsMzDxOopeMCamDDORUtTo/6qXfIMcGi9M0lDi/RsQl55Ag==" + }, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.591339123Z", + "validator_address": "BAC33F340F3497751F124868F049EC2E8930AC2F", + "validator_index": "46", + "signature": "XIikW52zbVELpqnhQosIn3bcZcxJXDgk5myyvhVoIinB1gE9d7GnEv6zRSS6D35jWrak0rhD6/Hw6z2uidByAg==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.310365176Z", + "validator_address": "BF4CB4D59D19D451CF5E7BC49349DF4AA222D78B", + "validator_index": "47", + "signature": "sDW+F5v8kf5lmhyX4VLhMviF2Jy6T+BbTrCFCphHkuy0EnbwIckMs10KRmr4V4SXCTpslS6Z2Kn9Fc9Y8UCwCA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.45191482Z", + "validator_address": "C2356622B495725961B5B201A382DD57CD3305EC", + "validator_index": "48", + "signature": "q6PEFAMDN+ez2d+VtEKMRdtGJwj+fzqohf15Y01VtTGYfRPVNpDgY5DLDu/o7eL6p07wS7kb8Olcs04yx+IcDg==" + }, + null, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.496651213Z", + "validator_address": "CA6696F5FE66A480BF21460319BE979930852DD0", + "validator_index": "51", + "signature": "NFdX0QmZjy0D4RcGK7aCjEW8s5b0wBlqGxWb8EasaIs6mgrAdxyHurFtzTEa8TQMka1gyb7I4AeUis3UOJ86Dw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.503701042Z", + "validator_address": "CC05882978FC5FDD6A7721687E14C0299AE004B8", + "validator_index": "52", + "signature": "I8MvANlqZoZgcEwhyPoSSJ9RWr36A9oVVatpD9ocPHI4F5fu+6s4JnQehfYucwUhvPSmQ1Ig9qlUNdAeKwedDg==" + }, + null, + null, + null, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.525770475Z", + "validator_address": "D9F8A41B782AA6A66ADC81F953923C7DCE7B6001", + "validator_index": "57", + "signature": "3d7j/xvxijkthW1mBBH0IzM/A63gEKQ6bIMEeS+TBDhl5jy4n3SFuP6nPztDlTm4pruJDKAjcIyKl890nXCbDA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.58724098Z", + "validator_address": "DA6AAAA959C9EF88A3EB37B1F107CB2667EBBAAB", + "validator_index": "58", + "signature": "We6czDgjaMzAlLVaa32j3olx7mocKcrj3OeV+HT/D01BjFZ+seArtlKWXTFsrjdc1awbPXVdEcLGS/27Mf1jDw==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.430140694Z", + "validator_address": "E800740C68C81B30345C3AE2BA638FA56FF67EEF", + "validator_index": "59", + "signature": "khC8DA3PFVLx1bXoSHuNIhzWERhXkFH3TidaqA8NgWZ71+oYzb2qa8P3zyZ0FaRqxradQKbV2EOWeU2yAokFCA==" + }, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:37.416201554Z", + "validator_address": "EE73A19751D58C5EC044C11E3FB7AE685A10D2C1", + "validator_index": "60", + "signature": "tOWNOLP/qV+MJAjKH7Gur4Hhomc5VFbAz9SuDywUtduHOe1MwjTtpxw/WKMoFg7Xr8rfh1tGaTaRf83dCv7wBQ==" + }, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.338041736Z", + "validator_address": "F4CAB410DE5567DB203BD56C694FB78D482479A1", + "validator_index": "62", + "signature": "9G/dfz9GZiGMQhUH4bq9doh4F2NYFSiy9z7OeKTVuUXXR7gMToDWTRDN64yBPdESNOadLHWqTiDB9yXr8o+kCQ==" + }, + null, + { + "type": 2, + "height": "14", + "round": "0", + "block_id": { + "hash": "42C70F10EF1835CED7248114514B4EF3D06F0D7FD24F6486E3315DEE310D305C", + "parts": { + "total": "1", + "hash": "F51D1B8E6ED859CE23F6B0539E0101653ED4025B13DAA3E76FCC779D5FD96ABE" + } + }, + "timestamp": "2019-03-13T23:09:34.521027944Z", + "validator_address": "FA0E5DFACCDCF74957A742144FE55BE61D433377", + "validator_index": "64", + "signature": "x6DBSeurBOyc7brlGLrGMruXq+tq9q45A8zSFvo5jakVUXIT/IfhO4586D/l7cE3t3O6q04mJmjkmd6SbV3eDg==" + } + ] + } + } + } +} From b10d5c9a9f6f91db8c15aaae7c001dd058334b37 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 20 Apr 2019 13:05:04 -0700 Subject: [PATCH 05/10] tendermint-rs: /genesis RPC endpoint and related types Adds support for parsing genesis files from RPC responses. Genesis files are generic over the underlying application, and by default use `serde_json::Value` to model arbitrary JSON data. --- .circleci/config.yml | 2 +- src/chain/state/mod.rs | 23 +- tendermint-rs/src/amino_types/ed25519.rs | 2 +- tendermint-rs/src/amino_types/proposal.rs | 6 +- tendermint-rs/src/amino_types/signature.rs | 4 +- tendermint-rs/src/amino_types/vote.rs | 6 +- tendermint-rs/src/block.rs | 11 +- tendermint-rs/src/block/size.rs | 32 + tendermint-rs/src/chain.rs | 2 - tendermint-rs/src/chain/state.rs | 22 - tendermint-rs/src/consensus.rs | 6 + tendermint-rs/src/consensus/params.rs | 27 + tendermint-rs/src/consensus/state.rs | 99 + tendermint-rs/src/evidence.rs | 16 + tendermint-rs/src/genesis.rs | 23 + tendermint-rs/src/hash.rs | 2 +- tendermint-rs/src/lib.rs | 9 +- .../src/{public_keys.rs => public_key.rs} | 59 +- tendermint-rs/src/rpc/endpoint.rs | 1 + tendermint-rs/src/rpc/endpoint/genesis.rs | 25 + tendermint-rs/src/serializers.rs | 19 + tendermint-rs/src/signature.rs | 20 +- tendermint-rs/tests/rpc.rs | 26 +- tendermint-rs/tests/support/genesis.json | 19169 ++++++++++++++++ 24 files changed, 19543 insertions(+), 68 deletions(-) create mode 100644 tendermint-rs/src/block/size.rs delete mode 100644 tendermint-rs/src/chain/state.rs create mode 100644 tendermint-rs/src/consensus.rs create mode 100644 tendermint-rs/src/consensus/params.rs create mode 100644 tendermint-rs/src/consensus/state.rs create mode 100644 tendermint-rs/src/genesis.rs rename tendermint-rs/src/{public_keys.rs => public_key.rs} (84%) create mode 100644 tendermint-rs/src/rpc/endpoint/genesis.rs create mode 100644 tendermint-rs/tests/support/genesis.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 109f156..2ae1938 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -40,7 +40,7 @@ jobs: rustc --version cargo --version cargo test --all --all-features -- --test-threads 1 - cd tendermint-rs && cargo test --release --features=rpc + cd tendermint-rs && cargo test --release --all-features - run: name: audit command: | diff --git a/src/chain/state/mod.rs b/src/chain/state/mod.rs index 6d17ab7..b19718f 100644 --- a/src/chain/state/mod.rs +++ b/src/chain/state/mod.rs @@ -15,11 +15,11 @@ use std::{ io::{self, prelude::*}, path::{Path, PathBuf}, }; -use tendermint::chain::ConsensusState; +use tendermint::consensus; /// State tracking for double signing prevention pub struct State { - consensus_state: ConsensusState, + consensus_state: consensus::State, state_file_path: PathBuf, } @@ -30,7 +30,7 @@ impl State { P: AsRef, { let mut lst = State { - consensus_state: ConsensusState::default(), + consensus_state: consensus::State::default(), state_file_path: path.as_ref().to_owned(), }; @@ -58,8 +58,11 @@ impl State { } /// Check and update the chain's height, round, and step - pub fn update_consensus_state(&mut self, new_state: ConsensusState) -> Result<(), StateError> { - // TODO(tarcieri): impl `PartialOrd` on `ConsensusState` to simplify this logic? + pub fn update_consensus_state( + &mut self, + new_state: consensus::State, + ) -> Result<(), StateError> { + // TODO(tarcieri): rewrite this using `Ord` impl on `consensus::State` if new_state.height < self.consensus_state.height { fail!( StateErrorKind::HeightRegression, @@ -127,7 +130,7 @@ impl State { let delta = hook_height - last_height; if delta < hook::BLOCK_HEIGHT_SANITY_LIMIT { - let mut new_state = ConsensusState::default(); + let mut new_state = consensus::State::default(); new_state.height = output.latest_block_height; self.consensus_state = new_state; @@ -178,7 +181,7 @@ mod tests { #[test] fn hrs_test() { let mut last_sign_state = State { - consensus_state: ConsensusState { + consensus_state: consensus::State { height: 1i64.into(), round: 1, step: 0, @@ -189,7 +192,7 @@ mod tests { assert_eq!( last_sign_state - .update_consensus_state(ConsensusState { + .update_consensus_state(consensus::State { height: 2i64.into(), round: 0, step: 0, @@ -203,7 +206,7 @@ mod tests { #[test] fn hrs_test_double_sign() { let mut last_sign_state = State { - consensus_state: ConsensusState { + consensus_state: consensus::State { height: 1i64.into(), round: 1, step: 0, @@ -212,7 +215,7 @@ mod tests { state_file_path: EXAMPLE_PATH.into(), }; let double_sign_block = block::Id::from_str(EXAMPLE_DOUBLE_SIGN_BLOCK_ID).unwrap(); - let err = last_sign_state.update_consensus_state(ConsensusState { + let err = last_sign_state.update_consensus_state(consensus::State { height: 1i64.into(), round: 1, step: 1, diff --git a/tendermint-rs/src/amino_types/ed25519.rs b/tendermint-rs/src/amino_types/ed25519.rs index c170217..1de61e4 100644 --- a/tendermint-rs/src/amino_types/ed25519.rs +++ b/tendermint-rs/src/amino_types/ed25519.rs @@ -1,4 +1,4 @@ -use crate::public_keys::PublicKey; +use crate::public_key::PublicKey; use signatory::ed25519::PUBLIC_KEY_SIZE; // Note:On the golang side this is generic in the sense that it could everything that implements diff --git a/tendermint-rs/src/amino_types/proposal.rs b/tendermint-rs/src/amino_types/proposal.rs index c930dac..a77f239 100644 --- a/tendermint-rs/src/amino_types/proposal.rs +++ b/tendermint-rs/src/amino_types/proposal.rs @@ -7,7 +7,7 @@ use super::{ }; use crate::{ block::{self, ParseId}, - chain::{self, ConsensusState}, + chain, consensus, error::Error, }; use bytes::BufMut; @@ -133,9 +133,9 @@ impl SignableMsg for SignProposalRequest { None => Err(MissingConsensusMessage.into()), } } - fn consensus_state(&self) -> Option { + fn consensus_state(&self) -> Option { match self.proposal { - Some(ref p) => Some(ConsensusState { + Some(ref p) => Some(consensus::State { height: match block::Height::try_from_i64(p.height) { Ok(h) => h, Err(_err) => return None, // TODO(tarcieri): return an error? diff --git a/tendermint-rs/src/amino_types/signature.rs b/tendermint-rs/src/amino_types/signature.rs index 6b458b1..08dd289 100644 --- a/tendermint-rs/src/amino_types/signature.rs +++ b/tendermint-rs/src/amino_types/signature.rs @@ -1,5 +1,5 @@ use super::validate::ValidationError; -use crate::chain::{self, ConsensusState}; +use crate::{chain, consensus}; use bytes::BufMut; use prost::{DecodeError, EncodeError}; use signatory::ed25519; @@ -16,7 +16,7 @@ pub trait SignableMsg { /// Set the Ed25519 signature on the underlying message fn set_signature(&mut self, sig: &ed25519::Signature); fn validate(&self) -> Result<(), ValidationError>; - fn consensus_state(&self) -> Option; + fn consensus_state(&self) -> Option; fn height(&self) -> Option; } diff --git a/tendermint-rs/src/amino_types/vote.rs b/tendermint-rs/src/amino_types/vote.rs index 61bb3b3..d743d79 100644 --- a/tendermint-rs/src/amino_types/vote.rs +++ b/tendermint-rs/src/amino_types/vote.rs @@ -8,7 +8,7 @@ use super::{ }; use crate::{ block::{self, ParseId}, - chain::{self, ConsensusState}, + chain, consensus, error::Error, }; use bytes::BufMut; @@ -154,9 +154,9 @@ impl SignableMsg for SignVoteRequest { None => Err(MissingConsensusMessage.into()), } } - fn consensus_state(&self) -> Option { + fn consensus_state(&self) -> Option { match self.vote { - Some(ref v) => Some(ConsensusState { + Some(ref v) => Some(consensus::State { height: match block::Height::try_from_i64(v.height) { Ok(h) => h, Err(_err) => return None, // TODO(tarcieri): return an error? diff --git a/tendermint-rs/src/block.rs b/tendermint-rs/src/block.rs index 9bd1801..acc171b 100644 --- a/tendermint-rs/src/block.rs +++ b/tendermint-rs/src/block.rs @@ -5,10 +5,15 @@ mod height; mod id; mod meta; pub mod parts; +mod size; -pub use self::height::*; -pub use self::id::{Id, ParseId}; -pub use self::{header::Header, meta::Meta}; +pub use self::{ + header::Header, + height::*, + id::{Id, ParseId}, + meta::Meta, + size::Size, +}; use crate::{commit::LastCommit, evidence, transaction}; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; diff --git a/tendermint-rs/src/block/size.rs b/tendermint-rs/src/block/size.rs new file mode 100644 index 0000000..f7533bf --- /dev/null +++ b/tendermint-rs/src/block/size.rs @@ -0,0 +1,32 @@ +//! Block size parameters + +#[cfg(feature = "serde")] +use { + crate::serializers, + serde::{Deserialize, Serialize}, +}; + +/// Block size parameters +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Size { + /// Maximum number of bytes in a block + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub max_bytes: u64, + + /// Maximum amount of gas which can be spent on a block + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub max_gas: u64, +} diff --git a/tendermint-rs/src/chain.rs b/tendermint-rs/src/chain.rs index ea43039..f8550a1 100644 --- a/tendermint-rs/src/chain.rs +++ b/tendermint-rs/src/chain.rs @@ -2,10 +2,8 @@ pub mod id; mod info; -pub mod state; pub use self::{ id::{Id, ParseId}, info::*, - state::ConsensusState, }; diff --git a/tendermint-rs/src/chain/state.rs b/tendermint-rs/src/chain/state.rs deleted file mode 100644 index 9cd1e04..0000000 --- a/tendermint-rs/src/chain/state.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! State of a particular Tendermint network (a.k.a. chain) - -use crate::block; -#[cfg(feature = "serde")] -use serde::{Deserialize, Serialize}; - -/// Tendermint consensus state -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Default, Eq, PartialEq)] -pub struct ConsensusState { - /// Current block height - pub height: block::Height, - - /// Current consensus round - pub round: i64, - - /// Current consensus step - pub step: i8, - - /// Block ID being proposed (if available) - pub block_id: Option, -} diff --git a/tendermint-rs/src/consensus.rs b/tendermint-rs/src/consensus.rs new file mode 100644 index 0000000..1f23d91 --- /dev/null +++ b/tendermint-rs/src/consensus.rs @@ -0,0 +1,6 @@ +//! Tendermint consensus + +mod params; +mod state; + +pub use self::{params::Params, state::State}; diff --git a/tendermint-rs/src/consensus/params.rs b/tendermint-rs/src/consensus/params.rs new file mode 100644 index 0000000..47752a4 --- /dev/null +++ b/tendermint-rs/src/consensus/params.rs @@ -0,0 +1,27 @@ +//! Tendermint consensus parameters + +use crate::{block, evidence, public_key}; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +/// Tendermint consensus parameters +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Params { + /// Block size parameters + pub block_size: block::Size, + + /// Evidence parameters + pub evidence: evidence::Params, + + /// Validator parameters + pub validator: ValidatorParams, +} + +/// Validator consensus parameters +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ValidatorParams { + /// Allowed algorithms for validator signing + pub pub_key_types: Vec, +} diff --git a/tendermint-rs/src/consensus/state.rs b/tendermint-rs/src/consensus/state.rs new file mode 100644 index 0000000..ef67cb7 --- /dev/null +++ b/tendermint-rs/src/consensus/state.rs @@ -0,0 +1,99 @@ +//! Tendermint consensus state + +pub use crate::block; +pub use std::cmp::Ordering; +#[cfg(feature = "serde")] +use { + crate::serializers, + serde::{Deserialize, Serialize}, +}; + +/// Tendermint consensus state +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub struct State { + /// Current block height + pub height: block::Height, + + /// Current consensus round + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_i64", + deserialize_with = "serializers::parse_i64" + ) + )] + pub round: i64, + + /// Current consensus step + pub step: i8, + + /// Block ID being proposed (if available) + pub block_id: Option, +} + +impl Ord for State { + fn cmp(&self, other: &State) -> Ordering { + if self.height < other.height { + Ordering::Less + } else if self.height == other.height { + if self.round < other.round { + Ordering::Less + } else if self.round == other.round { + self.step.cmp(&other.step) + } else { + Ordering::Greater + } + } else { + Ordering::Greater + } + } +} + +impl PartialOrd for State { + fn partial_cmp(&self, other: &State) -> Option { + Some(self.cmp(other)) + } +} + +#[cfg(test)] +mod tests { + use super::State; + use crate::block; + + #[test] + fn state_ord_test() { + let new = State { + height: block::Height::from(9001u64), + round: 0, + step: 0, + block_id: None, + }; + + let old = State { + height: block::Height::from(1001u64), + round: 1, + step: 0, + block_id: None, + }; + + let older = State { + height: block::Height::from(1001u64), + round: 0, + step: 0, + block_id: None, + }; + + let oldest = State { + height: block::Height::default(), + round: 0, + step: 0, + block_id: None, + }; + + assert!(old < new); + assert!(older < old); + assert!(oldest < older); + assert!(oldest < new); + } +} diff --git a/tendermint-rs/src/evidence.rs b/tendermint-rs/src/evidence.rs index 4c75e8f..e3d3adf 100644 --- a/tendermint-rs/src/evidence.rs +++ b/tendermint-rs/src/evidence.rs @@ -3,6 +3,7 @@ use std::slice; #[cfg(feature = "serde")] use { + crate::serializers, serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}, subtle_encoding::base64, }; @@ -84,3 +85,18 @@ impl AsRef<[Evidence]> for Collection { .unwrap_or_else(|| &[]) } } + +/// Evidence collection parameters +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Params { + /// Maximum allowed age for evidence to be collected + #[cfg_attr( + feature = "serde", + serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" + ) + )] + pub max_age: u64, +} diff --git a/tendermint-rs/src/genesis.rs b/tendermint-rs/src/genesis.rs new file mode 100644 index 0000000..faa8e5e --- /dev/null +++ b/tendermint-rs/src/genesis.rs @@ -0,0 +1,23 @@ +//! Genesis data + +use crate::{chain, consensus, Hash, Timestamp}; +use serde::{Deserialize, Serialize}; + +/// Genesis data +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct Genesis { + /// Time of genesis + pub genesis_time: Timestamp, + + /// Chain ID + pub chain_id: chain::Id, + + /// Consensus parameters + pub consensus_params: consensus::Params, + + /// App hash + pub app_hash: Hash, + + /// App state + pub app_state: AppState, +} diff --git a/tendermint-rs/src/hash.rs b/tendermint-rs/src/hash.rs index 915db9c..11ff242 100644 --- a/tendermint-rs/src/hash.rs +++ b/tendermint-rs/src/hash.rs @@ -13,7 +13,7 @@ use subtle_encoding::{Encoding, Hex}; pub const SHA256_HASH_SIZE: usize = 32; /// Hash algorithms -#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)] pub enum Algorithm { /// SHA-256 Sha256, diff --git a/tendermint-rs/src/lib.rs b/tendermint-rs/src/lib.rs index e927589..d1f93db 100644 --- a/tendermint-rs/src/lib.rs +++ b/tendermint-rs/src/lib.rs @@ -33,13 +33,16 @@ pub mod chain; #[cfg(feature = "rpc")] pub mod channel; pub mod commit; +pub mod consensus; pub mod error; pub mod evidence; +#[cfg(feature = "rpc")] +pub mod genesis; pub mod hash; mod moniker; pub mod net; pub mod node; -pub mod public_keys; +pub mod public_key; #[cfg(feature = "rpc")] pub mod rpc; #[cfg(feature = "secret-connection")] @@ -51,6 +54,8 @@ pub mod timestamp; pub mod transaction; mod version; +#[cfg(feature = "rpc")] +pub use crate::genesis::Genesis; #[cfg(feature = "secret-connection")] pub use crate::secret_connection::SecretConnection; pub use crate::{ @@ -58,7 +63,7 @@ pub use crate::{ error::Error, hash::Hash, moniker::Moniker, - public_keys::{PublicKey, TendermintKey}, + public_key::{PublicKey, TendermintKey}, signature::Signature, timestamp::Timestamp, version::Version, diff --git a/tendermint-rs/src/public_keys.rs b/tendermint-rs/src/public_key.rs similarity index 84% rename from tendermint-rs/src/public_keys.rs rename to tendermint-rs/src/public_key.rs index 35bcbee..d478f31 100644 --- a/tendermint-rs/src/public_keys.rs +++ b/tendermint-rs/src/public_key.rs @@ -4,7 +4,11 @@ use crate::error::Error; #[cfg(feature = "serde")] use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; use signatory::{ecdsa::curve::secp256k1, ed25519}; -use std::ops::Deref; +use std::{ + fmt::{self, Display}, + ops::Deref, + str::FromStr, +}; #[cfg(feature = "serde")] use subtle_encoding::base64; use subtle_encoding::{bech32, hex}; @@ -175,6 +179,59 @@ impl Deref for TendermintKey { } } +/// Public key algorithms +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Algorithm { + /// ed25519 + Ed25519, + + /// secp256k1 + Secp256k1, +} + +impl Algorithm { + /// Get the string label for this algorithm + pub fn as_str(&self) -> &str { + match self { + Algorithm::Ed25519 => "ed25519", + Algorithm::Secp256k1 => "secp256k1", + } + } +} + +impl FromStr for Algorithm { + type Err = Error; + + fn from_str(s: &str) -> Result { + match s { + "ed25519" => Ok(Algorithm::Ed25519), + "secp256k1" => Ok(Algorithm::Secp256k1), + _ => Err(Error::Parse), + } + } +} + +impl Display for Algorithm { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.as_str()) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Algorithm { + fn serialize(&self, serializer: S) -> Result { + self.as_str().serialize(serializer) + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Algorithm { + fn deserialize>(deserializer: D) -> Result { + Self::from_str(&String::deserialize(deserializer)?) + .map_err(|e| D::Error::custom(format!("{}", e))) + } +} + #[cfg(test)] mod tests { use super::{PublicKey, TendermintKey}; diff --git a/tendermint-rs/src/rpc/endpoint.rs b/tendermint-rs/src/rpc/endpoint.rs index 827131d..874f92c 100644 --- a/tendermint-rs/src/rpc/endpoint.rs +++ b/tendermint-rs/src/rpc/endpoint.rs @@ -1,5 +1,6 @@ //! Tendermint JSONRPC endpoints pub mod block; +pub mod genesis; pub mod net_info; pub mod status; diff --git a/tendermint-rs/src/rpc/endpoint/genesis.rs b/tendermint-rs/src/rpc/endpoint/genesis.rs new file mode 100644 index 0000000..659ee8f --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint/genesis.rs @@ -0,0 +1,25 @@ +//! `/genesis` endpoint JSONRPC wrapper + +use crate::{rpc, Genesis}; +use serde::{Deserialize, Serialize}; + +/// Get the genesis state for the current chain +#[derive(Default)] +pub struct Request; + +impl rpc::Request for Request { + type Response = Response; + + fn path(&self) -> rpc::request::Path { + "/genesis".parse().unwrap() + } +} + +/// Block responses +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Response { + /// Genesis data + pub genesis: Genesis, +} + +impl rpc::Response for Response {} diff --git a/tendermint-rs/src/serializers.rs b/tendermint-rs/src/serializers.rs index 5ccaffb..34a5e9d 100644 --- a/tendermint-rs/src/serializers.rs +++ b/tendermint-rs/src/serializers.rs @@ -4,6 +4,25 @@ use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializ #[cfg(feature = "rpc")] use std::time::Duration; +/// Parse `i64` from a JSON string +pub(crate) fn parse_i64<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + String::deserialize(deserializer)? + .parse::() + .map_err(|e| D::Error::custom(format!("{}", e))) +} + +/// Serialize `i64` as a JSON string +#[allow(clippy::trivially_copy_pass_by_ref)] +pub(crate) fn serialize_i64(value: &i64, serializer: S) -> Result +where + S: Serializer, +{ + format!("{}", value).serialize(serializer) +} + /// Parse `u64` from a JSON string pub(crate) fn parse_u64<'de, D>(deserializer: D) -> Result where diff --git a/tendermint-rs/src/signature.rs b/tendermint-rs/src/signature.rs index 47a1d11..0b5bfbb 100644 --- a/tendermint-rs/src/signature.rs +++ b/tendermint-rs/src/signature.rs @@ -7,16 +7,6 @@ use signatory::Signature as SignatureTrait; #[cfg(feature = "serde")] use subtle_encoding::base64; -/// Digital signature algorithms -#[derive(Copy, Clone, Debug, Eq, PartialEq)] -pub enum Algorithm { - /// ECDSA over secp256k1 - EcdsaSecp256k1, - - /// EdDSA over Curve25519 - Ed25519, -} - /// Signatures #[derive(Clone, Debug)] pub enum Signature { @@ -58,3 +48,13 @@ impl Serialize for Signature { .serialize(serializer) } } + +/// Digital signature algorithms +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +pub enum Algorithm { + /// ECDSA over secp256k1 + EcdsaSecp256k1, + + /// EdDSA over Curve25519 + Ed25519, +} diff --git a/tendermint-rs/tests/rpc.rs b/tendermint-rs/tests/rpc.rs index 645bb54..60dc46d 100644 --- a/tendermint-rs/tests/rpc.rs +++ b/tendermint-rs/tests/rpc.rs @@ -3,10 +3,7 @@ #[cfg(feature = "rpc")] mod endpoints { use std::{fs, path::PathBuf}; - use tendermint::rpc::{ - endpoint::{block, net_info, status}, - Response, - }; + use tendermint::rpc::{endpoint, Response}; fn read_json_fixture(name: &str) -> String { fs::read_to_string(PathBuf::from("./tests/support/").join(name.to_owned() + ".json")) @@ -16,7 +13,7 @@ mod endpoints { #[test] fn block() { let block_json = read_json_fixture("block"); - let block_response = block::Response::from_json(&block_json).unwrap(); + let block_response = endpoint::block::Response::from_json(&block_json).unwrap(); let tendermint::Block { header, @@ -35,10 +32,25 @@ mod endpoints { assert_eq!(last_commit.precommits.len(), 65); } + #[test] + fn genesis() { + let genesis_json = read_json_fixture("genesis"); + let genesis_response = endpoint::genesis::Response::from_json(&genesis_json).unwrap(); + + let tendermint::Genesis { + chain_id, + consensus_params, + .. + } = genesis_response.genesis; + + assert_eq!(chain_id.as_str(), "cosmoshub-1"); + assert_eq!(consensus_params.block_size.max_bytes, 150000); + } + #[test] fn net_info() { let net_info_json = read_json_fixture("net_info"); - let net_info_response = net_info::Response::from_json(&net_info_json).unwrap(); + let net_info_response = endpoint::net_info::Response::from_json(&net_info_json).unwrap(); assert_eq!(net_info_response.n_peers, 2); assert_eq!( @@ -50,7 +62,7 @@ mod endpoints { #[test] fn status() { let status_json = read_json_fixture("status"); - let status_response = status::Response::from_json(&status_json).unwrap(); + let status_response = endpoint::status::Response::from_json(&status_json).unwrap(); assert_eq!(status_response.node_info.network.as_str(), "cosmoshub-1"); assert_eq!( diff --git a/tendermint-rs/tests/support/genesis.json b/tendermint-rs/tests/support/genesis.json new file mode 100644 index 0000000..3cbf426 --- /dev/null +++ b/tendermint-rs/tests/support/genesis.json @@ -0,0 +1,19169 @@ +{ + "jsonrpc": "2.0", + "id": "", + "result": { + "genesis": { + "genesis_time": "2019-03-13T23:00:00Z", + "chain_id": "cosmoshub-1", + "consensus_params": { + "block_size": { + "max_bytes": "150000", + "max_gas": "1500000" + }, + "evidence": { + "max_age": "1000000" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + } + }, + "app_hash": "", + "app_state": { + "accounts": [ + { + "address": "cosmos1000ya26q2cmh399q4c5aaacd9lmmdqp92z6l7q", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos102ruvpv2srmunfffxavttxnhezln6fnc3pf7tt", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos103vxut865hpn6x0wjly9ds6dmdtgkhp9gjsj88", + "coins": [ + { + "denom": "uatom", + "amount": "10402000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1049ye8lese3s2a6rr2quh3des6pynmqp99zwqa", + "coins": [ + { + "denom": "uatom", + "amount": "2723000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos104fnttxcgxtrfvvqcqgwydgrf9wn0m9w3u3ekj", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1065smngmfh2fftdcj8xz7quh54ks4pfhmw93sh", + "coins": [ + { + "denom": "uatom", + "amount": "26306000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "26306000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos108jad2hgswv2vneynsjvasvpqckme27dgqhvxt", + "coins": [ + { + "denom": "uatom", + "amount": "15378000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos108r3ynz6rak56nznqf6ls37kxxjgnns2h6ymx9", + "coins": [ + { + "denom": "uatom", + "amount": "2711000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos109myyszkdktaq0qdfwnm208qy6pm245s0vfvnn", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos109v835fljyapuwryhqxy89gflhp2vjx56yhwrv", + "coins": [ + { + "denom": "uatom", + "amount": "221627000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10a7evyydck42nhta93tnmv7yu4haqzt94xyu54", + "coins": [ + { + "denom": "uatom", + "amount": "930790690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10e4vsut6suau8tk9m6dnrm0slgd6npe3hjqndl", + "coins": [ + { + "denom": "uatom", + "amount": "10000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10l3rfs5eya90utgm6g3lrtf6pzff3muc7l8y3n", + "coins": [ + { + "denom": "uatom", + "amount": "46530690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10mp0mt5ek4k8z7tqkfh7cmu29hc2jxmuzmwrre", + "coins": [ + { + "denom": "uatom", + "amount": "2051632000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10nsjrvfqdvqhra9uzyuaaclc5uqqlyauklzxgp", + "coins": [ + { + "denom": "uatom", + "amount": "9225600000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10ugq8d7yw0f0gcsd25c9wcryqpkxdcgz22t6uh", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10usg8tf3hhtarjmzs4ughrgkknhe58cylce7pf", + "coins": [ + { + "denom": "uatom", + "amount": "20353000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10wd6rhh4fh6a2axq4he54ll73rl8627n0rc30p", + "coins": [ + { + "denom": "uatom", + "amount": "13952690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10whs4lsz6yjc90nzs6t4re5jv6lj59qr6zuxf8", + "coins": [ + { + "denom": "uatom", + "amount": "355507000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10ygh5qkn8ra69nxrm5403rxeaz6dwd58xhqw3l", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos10yp5yw0rz2j7khfgmgwzs4fe4tsg72nge4f0ml", + "coins": [ + { + "denom": "uatom", + "amount": "10825785580000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos120nzke36a2s44w0f0dhndknndhu5ytyx9rz6yk", + "coins": [ + { + "denom": "uatom", + "amount": "7499000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "7499000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1249al7mnuq4g3k52n855xcx8nj57vzv0q2uvg9", + "coins": [ + { + "denom": "uatom", + "amount": "7689000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos124l86n9n9pg6p2rhpu857c8awmxmzcen39j7hd", + "coins": [ + { + "denom": "uatom", + "amount": "180000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos125pyl8p6ctvp842ce90gvlegwp53flcmeyefca", + "coins": [ + { + "denom": "uatom", + "amount": "34886380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos126luz90z8mundzfflcftm83k8arrzs6rdvkrz2", + "coins": [ + { + "denom": "uatom", + "amount": "494478190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12d7jwuwt08wwwuatzufnyet0zhzgap8qdjw0sk", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12dtspk5796vy7fqcjcwsnzxtlzredwehuh9cqg", + "coins": [ + { + "denom": "uatom", + "amount": "1279840690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12e0xvvw3e6ewng9qdx74vha08yshvmwcs4vg4g", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12e35ffmrt4eme0qqre5ump4njfg4mkkuafc4ch", + "coins": [ + { + "denom": "uatom", + "amount": "49552250000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12eedqrmxxsx4s26yzeqs36se5dwwg2tc75vm35", + "coins": [ + { + "denom": "uatom", + "amount": "15830000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12em6sewqxw25l9c02a6x88k7hezj6hv6qh0hup", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12fl8s9u3ftxpfxuapyg9x6wqdngqssqdh3r6kc", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12fpuvxnn5mxx30sxxhqefue2d6rxer7zx4d987", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12g8djmnre0l52mujgk2ref7ecugfltfwwwf4yk", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12hckndrdpwrnsuffvce7d6ssratle74pt6t6h2", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12kdrflk5ddskc8j666a2exst6zez6ctrctzusf", + "coins": [ + { + "denom": "uatom", + "amount": "3166000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12ku50gw846ekxxhn9n7qrktq3gahp2zzkrzgf9", + "coins": [ + { + "denom": "uatom", + "amount": "303000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12mnpnxjsy480ujxamclj8rvg87veg6m89e69pm", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12ntkpe8tehyh6ty7m6x79phnmx697xzmtchn35", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12pghteu99x784msy3ps5hltrxegaur5mndxkg3", + "coins": [ + { + "denom": "uatom", + "amount": "2584980000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12pr483dv5qd33x2yhv9lxkgje0njnkpgj0a9je", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12qvd909wn082yzhmyn42h8uwatqts4qcgxsvwu", + "coins": [ + { + "denom": "uatom", + "amount": "25525780000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12sn63d5jtfsv9evu2arag6h34ajavk7960fr5v", + "coins": [ + { + "denom": "uatom", + "amount": "100410000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12t7f7sh0ndyzhdkhxe06kr7kxfa5zx7c09lzp6", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos12usue8q9w5mmvuteh0k40h0zzutlm9k0s2fddc", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos12xkncrkjwywe4vwq67g4n36k5mycrp7a9gg5sz", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos130mdu9a0etmeuw52qfxk73pn0ga6gawkryh2z6", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos132juzk0gdmwuxvx4phug7m3ymyatxlh9m9paea", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos132nxt46shylwr23e7cdewa86htsyfmlvxhq6y9", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos132wwxvsye3amhnvs3f630e3uuyxpz6d22adfsy", + "coins": [ + { + "denom": "uatom", + "amount": "1154930000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1343vv986xal749dk2je566rkntwt3x7lrx9vla", + "coins": [ + { + "denom": "uatom", + "amount": "29685210000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13653whhw8c99dmap4h92reshhfs58e3970rfe5", + "coins": [ + { + "denom": "uatom", + "amount": "18092000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos136r8930vl5jdr42fehkclc68amkt7f5quvwjzp", + "coins": [ + { + "denom": "uatom", + "amount": "1385000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos138a2ulzndl7gezsd6symywvdpzes4awj9eypkr", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1399zgcq58j20jth3r0hnjq2lswem60jmjs7u36", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos139vgquqa2dvxxzpdtv5a8mcclhznc9hmprkhcj", + "coins": [ + { + "denom": "uatom", + "amount": "20156190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13a8q24rpwyjvsthw6x2gk74s0xma7tedeuhknx", + "coins": [ + { + "denom": "uatom", + "amount": "11753680000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13avdh7zs9uxwuyvp543n7p3zdkavz74fre0vt7", + "coins": [ + { + "denom": "uatom", + "amount": "14844000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13c25u0p4nwntkk2l7mry70ler4tzascvsrjv52", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13fxkvaqmgatzmmxne5czk6y8tws3dxgcuvjpeq", + "coins": [ + { + "denom": "uatom", + "amount": "104705690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13fz2d2cduwl8jepmp5cnyzk5298k90m3ahkqpe", + "coins": [ + { + "denom": "uatom", + "amount": "46530690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13gvqalusnmapjgp3e6gnk9q832qv3g3u6jytaz", + "coins": [ + { + "denom": "uatom", + "amount": "24876000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13h2s49rmyykemegd3gh0ml2sjunrcdxfkuv2rw", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13hfzclxsgzywxfyh5tvhxff3mnnr6jsky39sjs", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13jvkw96h2269pv7dgarjp2y6ev5k62l69eqlml", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13jwgjxl9nfvpcy5gv6nec9z9w6mwv6l0s4u8xy", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13jysux652pcwychuquzqn374l4uh4mpetvrlrg", + "coins": [ + { + "denom": "uatom", + "amount": "54140000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13lfwqjqfzfe2muq3j273y2l2tuzgkrp86s8zew", + "coins": [ + { + "denom": "uatom", + "amount": "46413180000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13ljx4j80w0p0d6527eylh67ngdthkwak8s7q06", + "coins": [ + { + "denom": "uatom", + "amount": "779536970000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13lte99fy0lqxu9pzsytafhlym0ncznsmncqkpa", + "coins": [ + { + "denom": "uatom", + "amount": "33922000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13m4eevru9jc8afdzh2kpgf4g9agl6h0d4p56qw", + "coins": [ + { + "denom": "uatom", + "amount": "2969690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13m92q3fyyuw57nv65deet8sw9xu7rekmv4h9y8", + "coins": [ + { + "denom": "uatom", + "amount": "5294270000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13meq2luhcz9dlxn6z6tsgwd5ha537xj8aetqhm", + "coins": [ + { + "denom": "uatom", + "amount": "2332950270000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13mp6etxn35ktemydsd82y2j7jy8r4jnmphczg0", + "coins": [ + { + "denom": "uatom", + "amount": "149222700000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13njcc8ah92x9wmfz0mvufz9qxz09sqpg2l5m8c", + "coins": [ + { + "denom": "uatom", + "amount": "63322000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13nr7ma9t97e5c2klyv0ku68ncmqj6farj2keru", + "coins": [ + { + "denom": "uatom", + "amount": "30711000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13pg04h95h968hmahq9dclwaf6ejt0nl9kkgywn", + "coins": [ + { + "denom": "uatom", + "amount": "135000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13qdh6c34um99ay72lujy56cf0n0auvwky7q3p8", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13rdh0y4fz47qhvy9crlax82403dk8e76mypj89", + "coins": [ + { + "denom": "uatom", + "amount": "5807030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13rqwctds7e5cgleey2vzz454t9l02nklrwvs9l", + "coins": [ + { + "denom": "uatom", + "amount": "67845000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13s3ju03wz7p6rxup20ptne0u9wshm3r2mmf5rs", + "coins": [ + { + "denom": "uatom", + "amount": "2972730000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13uus00dk300jg7n02rdh9dxzfkgfyj90vpn049", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13vr90q8r76gxzlyq0zr234qef4cslwasmv9gdl", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13vv6uxe5mx8wyva7s0qh820a57uxwkjr5zcm6j", + "coins": [ + { + "denom": "uatom", + "amount": "2939000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13vwzpmmada8aangxtjyfschf04fh7mfjz5kt3a", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13w57ennhf6mq76238ycstwvxqvtkk4m65rz092", + "coins": [ + { + "denom": "uatom", + "amount": "22412050000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13wddek9f98equjehldud0k87q2fhjw2ar626f4", + "coins": [ + { + "denom": "uatom", + "amount": "904600000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13xjrerteau5qrtr8a53zd0aj969xzw5qp5th0h", + "coins": [ + { + "denom": "uatom", + "amount": "60476060000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos13xvmkjdq3vd2zfk78ft607tjex8qjxhcjlyrz3", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos144tjhlagc0mks85ljzffv5986zw0ls8f3ly2wu", + "coins": [ + { + "denom": "uatom", + "amount": "350531000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14605ap767058cydlu9dywdwe7vz85wskp83q56", + "coins": [ + { + "denom": "uatom", + "amount": "39830000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos146l37udxpsph626spp5cdz4fnnttyyqgvpvhek", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos147n9qc39ms7detmqkdju5wjj97vp5uf62vmqxz", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos147ufwtj67wm8a0nmkjsutxaepp3vs2d680nxn6", + "coins": [ + { + "denom": "uatom", + "amount": "34868930000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos149g2tl9xakprzs5f854ntu5fthdgmuqd9ad0gn", + "coins": [ + { + "denom": "uatom", + "amount": "18605530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14az9dmutwtz4vuycvae8csm4wwwtm0au7lt5d2", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14d6d0m49c4hvvqc7mc9ktxvkyfll3ztk5pghfh", + "coins": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos14dmelcmvwq8sefu5tr4atv98u6ur9c20auhmzf", + "coins": [ + { + "denom": "uatom", + "amount": "17391000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14dycjypj98nvmx9w8ps8tdc9fgfkktfxp7g8v2", + "coins": [ + { + "denom": "uatom", + "amount": "4975000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14eucqq0vc07kfazl93lm562350vwt3pdu2mp9n", + "coins": [ + { + "denom": "uatom", + "amount": "22162000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14fqtpynvp6vcn4hwu5k6fw3rtxzp5yd55w29gr", + "coins": [ + { + "denom": "uatom", + "amount": "13116000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14hncmchnakqwgsfla866kztd2qmd6puarp3r5y", + "coins": [ + { + "denom": "uatom", + "amount": "17443190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14jg5e6ahcdsfr0hr9ql6gyut023zwwmh5ykhv8", + "coins": [ + { + "denom": "uatom", + "amount": "20433000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14kl66vhskfats6le7ucjsruec7a3xyj45t3629", + "coins": [ + { + "denom": "uatom", + "amount": "32113000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14kn0kk33szpwus9nh8n87fjel8djx0y0mmswhp", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14l0fp639yudfl46zauvv8rkzjgd4u0zk0fyvgr", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14lultfckehtszvzw4ehu0apvsr77afvyhgqhwh", + "coins": [ + { + "denom": "uatom", + "amount": "10000000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14n5qjt9lv58ug47swld8k2w3k36mxq8f9s8fkq", + "coins": [ + { + "denom": "uatom", + "amount": "70192000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14p5wpgcj4cmcva433dqw6thmdmk5ssjqtj0a4l", + "coins": [ + { + "denom": "uatom", + "amount": "9298690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14qyqets0c94u9hjmvrm4n8s2v5pgnk9kjh93ay", + "coins": [ + { + "denom": "uatom", + "amount": "139610690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14r9svgnadnm3ugnhpyz6369xpg98ug5sedplf7", + "coins": [ + { + "denom": "uatom", + "amount": "8495810000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14sur0djjxka7n6vhkglyz0xh92lvdhumf589jv", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14tcxx9z6gtdslajzz5qjlxu3vl3v23djyl6tgh", + "coins": [ + { + "denom": "uatom", + "amount": "1163475340000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14tlwg7f4zjkfs7jg4dqzp0y7gsuxgzklzvldem", + "coins": [ + { + "denom": "uatom", + "amount": "465390690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14w6c55cm0lc5sthhmghuw59c62lf2y7s6zf0dy", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14xgdfdnpjtulj6p7rkc75ekxqjq8hc5c7x6hpd", + "coins": [ + { + "denom": "uatom", + "amount": "36184000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos14yu02qh35pqln6j0tdlzw43c275nhpvtjkhlnr", + "coins": [ + { + "denom": "uatom", + "amount": "2817000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1542lar7ctncwk4582emyryyx8jxkt4etmt8h3q", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15498qsjzr8qnn7fdcnp3l2el96awtteh5d09xf", + "coins": [ + { + "denom": "uatom", + "amount": "93070690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos155c0rxqvazlqz29q3kdp2c03h59np3zfrh4ns0", + "coins": [ + { + "denom": "uatom", + "amount": "12031000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15640fe3gjatury4ukzkpjl9uq22jers2rha3tv", + "coins": [ + { + "denom": "uatom", + "amount": "904000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos157zu0weeafysgq5akhnn3w2p0723avlgnm2emf", + "coins": [ + { + "denom": "uatom", + "amount": "4975000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1589h7tesukedazlr2k2767rsrn8qgz40z0fca6", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15a5tj5frnnmme58up7ll537cy9fhnszs3wse0e", + "coins": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos15a84pmu5qa9pps40g7vyzqar0p77mg0e7k05t4", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15apyer7fpajkma6wsjue5k4nf5hfscma3qsvaq", + "coins": [ + { + "denom": "uatom", + "amount": "209420690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15edu5vwav305gd5xufgzt7p7canedwr3j5y88c", + "coins": [ + { + "denom": "uatom", + "amount": "5698000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15f6nvuqsun8ky9tz57dhphleta68hu3pym88qz", + "coins": [ + { + "denom": "uatom", + "amount": "1990000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15fg2xq8c7zt48kv35fq0pzf0ve8j7mhya3249z", + "coins": [ + { + "denom": "uatom", + "amount": "174515690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15hsjyah8c64l8fdywk5hhnu7hjwttu2kumuwpp", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15jk238qpc8se629rqng24g2uszchw4zkn426qw", + "coins": [ + { + "denom": "uatom", + "amount": "1156000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15lrq7w0fh8w4slej7e5qch2ksk7qtkesvn2u78", + "coins": [ + { + "denom": "uatom", + "amount": "1356000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15mt02vt236qxzxaju6artpzxd7kqx6qaemdt8r", + "coins": [ + { + "denom": "uatom", + "amount": "17443190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15mw9e2hwnh0um26595fdxtpfh8x7tqgjlpej46", + "coins": [ + { + "denom": "uatom", + "amount": "113000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15mwh7k9u5u6047f6lytkx8z9tfvshqk9wqw9f8", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15njsc4lap2h94xum2xatf9xmex4088u9jcmpv9", + "coins": [ + { + "denom": "uatom", + "amount": "5027000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15nz5gqx6f9nu3tf3dc8hyzwrrqkyxkznlfwdc7", + "coins": [ + { + "denom": "uatom", + "amount": "208058000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15p7e92cd3qeqvgfhw9cd7424rn4et6g5p9cv0c", + "coins": [ + { + "denom": "uatom", + "amount": "18499000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15q85hu222eest9d7mysq2jd7yffm5cywsm54gy", + "coins": [ + { + "denom": "uatom", + "amount": "6056000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15r4tc0m6hc7z8drq3dzlrtcs6rq2q9l2kc6z4s", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15t5u0vk50ujxqe3d4wqwyzn6umsdk3yewqhqrq", + "coins": [ + { + "denom": "uatom", + "amount": "40713190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15ta770k4kca7plh8gtyc94gekr8h3gmzjusdyx", + "coins": [ + { + "denom": "uatom", + "amount": "113029000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15u5luvsrzry8njes6l5kd98kmz9mnd7d22guk6", + "coins": [ + { + "denom": "uatom", + "amount": "142309000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15ukrvfdpmnl8dhvnfjudp7dezw3hmzdl2n8hh3", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15urq2dtp9qce4fyc85m6upwm9xul3049um7trd", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15vanqrcgxen0eunnfrkha0ewsyslhj7ktdj7u7", + "coins": [ + { + "denom": "uatom", + "amount": "293976000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15waw4v3fdgyhxhfv7h5fp0u3s0x3emcj2c44a7", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15wpkctst9nhk7q49622dn0vl9ym2qyxsjkntt0", + "coins": [ + { + "denom": "uatom", + "amount": "10037000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15yyv20r0hkxscpl6tw6jlgjh3589mpmtcz5zpj", + "coins": [ + { + "denom": "uatom", + "amount": "87253190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos15z6pz2tyzfupsup5xja3dc2sspf6tfvstkhdy9", + "coins": [ + { + "denom": "uatom", + "amount": "164659000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos160eegxaskfk5cyvl5rny65f0q3jxevje9czad3", + "coins": [ + { + "denom": "uatom", + "amount": "41566000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1634uur2zeh0q9kce8j7kyq486hm2wvdt5cee4t", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1648ynlpdw7fqa2axt0w2yp3fk542junlmhyevf", + "coins": [ + { + "denom": "uatom", + "amount": "1756875690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos164z7wwzv84h4hwn6rvjjkns6j4ht43jv9e3ljy", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos167w96tdvmazakdwkw2u57227eduula2cy572lf", + "coins": [ + { + "denom": "uatom", + "amount": "226150000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos168la4terfg7598ajhyet2dcjhe6v9m4d5wqlpv", + "coins": [ + { + "denom": "uatom", + "amount": "223390000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos169pk2vtg08k8dsvqmt52mem6u84ljsrd8k8mjp", + "coins": [ + { + "denom": "uatom", + "amount": "6811000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16d8d6ecv09p0vcz929njadk6ct9pwwmwu25gp6", + "coins": [ + { + "denom": "uatom", + "amount": "75618190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16gdxm24ht2mxtpz9cma6tr6a6d47x63hlq4pxt", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16gs3yutfffcskc48dux7262t66y8ylc95sr282", + "coins": [ + { + "denom": "uatom", + "amount": "1428210000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16heu2ax3ssxyhyjmy43earlc4n64w9awyvk3y3", + "coins": [ + { + "denom": "uatom", + "amount": "51184690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16kwean73rups2kl9t7dnmfwukvww52peduale7", + "coins": [ + { + "denom": "uatom", + "amount": "2896362500000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16m93gjfqvnjajzrfyszml8qm92a0w67ntjhd3d", + "coins": [ + { + "denom": "uatom", + "amount": "13624911290000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16na5gpcj80tafv5gycm4gk7garj8jjsgydtkmj", + "coins": [ + { + "denom": "uatom", + "amount": "466666670000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16pcypfvnhwquutclt0y284khtyfvlynr2nuv43", + "coins": [ + { + "denom": "uatom", + "amount": "104705690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16qafqaz50cphh4jluvv30apz3fjdd4hqurh6z7", + "coins": [ + { + "denom": "uatom", + "amount": "4296000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16qj60akpj9dvzfnm4c23qxfa69fkfler09qa6n", + "coins": [ + { + "denom": "uatom", + "amount": "407000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16r39ghhwqjcwxa8q3yswlz8jhzldygy6jhvt3c", + "coins": [ + { + "denom": "uatom", + "amount": "791534000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16r59uz69f3006gqwgzzem7n78mvfv4m80v582e", + "coins": [ + { + "denom": "uatom", + "amount": "8500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "8500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos16re42uxxlrw6ptgv3gpccv9ww0yvlhuluh638g", + "coins": [ + { + "denom": "uatom", + "amount": "2893620000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16sfwt5t6gk8j5rsx6anx9qvjxxarr68znwrfp6", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16sknqh6mfamcymz5pjc4pe9xg0zrl8pr5a0d92", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16t6u2fkfql9440gerty037e0d75h69jfzdk8jg", + "coins": [ + { + "denom": "uatom", + "amount": "17443190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16uwqfvgt29fxv3jv3gz09kra8rv2tqey7ysm2w", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16w9ugjqnju79vm33s8gte4lzc972fuswq2qqmk", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16xj9d3jsdp89qnkmgav4t5dhxr4mnpgzll4n05", + "coins": [ + { + "denom": "uatom", + "amount": "210584190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16xt45qxt5mm2z9dep4yrx4dxe7lelfuyxevjty", + "coins": [ + { + "denom": "uatom", + "amount": "54276000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16y860wllmfr8t45uj9zfegzfgwsyumu5mwnr8q", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos16yavjgx79knn5czkh0xv304p4q9lc0pjzv6cud", + "coins": [ + { + "denom": "uatom", + "amount": "474820000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos173v5nqwvttldamaawmtcn2qnr5f7d2pfpaqejr", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos174ca596awzt8u8w3kn2gr247kex8dmuph0yuc9", + "coins": [ + { + "denom": "uatom", + "amount": "814440690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos175n3650g909aag3xhmjqfdj3j8jp5da39td5xf", + "coins": [ + { + "denom": "uatom", + "amount": "113074000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos176m2p8l3fps3dal7h8gf9jvrv98tu3rqfdht86", + "coins": [ + { + "denom": "uatom", + "amount": "21842188810000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "21842188810000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "1557788400", + "end_time": "1615676400" + }, + { + "address": "cosmos176w785udmwnq9swpgtmzl3vgldr5g8cqlycj2m", + "coins": [ + { + "denom": "uatom", + "amount": "3481190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos177yhnrfg63um7fmwv2x2kzlf3jw3rjlpus5zgv", + "coins": [ + { + "denom": "uatom", + "amount": "9950000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos178657tufcc8smgh5wd78k7j6w3amnazgvqxj53", + "coins": [ + { + "denom": "uatom", + "amount": "113000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17ajqzn97x4vjgwtcgh8ny3nk5tmzsm0zh2e56k", + "coins": [ + { + "denom": "uatom", + "amount": "53511690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17axtdgu8pc30s5j82v5f7t3sldnyfg4vp9lxm0", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17cdej4cyqcrx7d67c8y4y4sa0jp5lqhnnat6qt", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17dhmf3p7lrn7tccg65ljkk6396e80ww3epgj00", + "coins": [ + { + "denom": "uatom", + "amount": "24424000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17e9zmwe3gj2lmedhxeh473laaylknazaqzjgy7", + "coins": [ + { + "denom": "uatom", + "amount": "85032000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17etxqeq0s8eupvtppfspmk3rhfp7m9fhqe4p48", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17f2s4enn4kmhl3cc5wkys7xjg09uun6l8ss2wp", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17hcr54xe42f4qw9pllj20lzu2e0v7940rx0prj", + "coins": [ + { + "denom": "uatom", + "amount": "29078190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17hnhqra0xmferdjqz0ypkgj76t4fmx78u7x2hc", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17knx6xzq7l3sanrxymvpyep3nzumvmn6e4flec", + "coins": [ + { + "denom": "uatom", + "amount": "6500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "6500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos17mggn4znyeyg25wd7498qxl7r2jhgue8ep585n", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17n2de80m3mtz7yheygggqw2wnta5665t00u884", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17s3zkmz6d42rgvtxj3mxaqqtl6dtn4c75lwl4k", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17tj0c8eg9z9jxnuf4uqcsa9uxexd4m2dkk4mts", + "coins": [ + { + "denom": "uatom", + "amount": "3618000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17txgxvrqvh5w5k42d02z2g0tud8t4g6rknut3a", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17uj09xu5n47lxj4c63jckn9luj8mkytc0473z9", + "coins": [ + { + "denom": "uatom", + "amount": "877000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17vfjhvgqy2lpsh36rxuu9lknxvqv3gcgnpl5nu", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17vqcum09r9a3tqhjhzd9x595g7u5ytq3we8urm", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17vz69tgz6ld6m8c3dm4yvu2a8psvrjzvml5ksx", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17wjj4e4xjlk6qtdk3uw432vs3pmvkv0de6z7f6", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos17y0pkw9khjew0hjvzwd3gzz8rmvshnshys9yqy", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos180temxfldsrfa66aljp083nsru48q8829f6j6y", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18209hfrqcwvu9gufukf73v0y0kmwlzzevqvnrh", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos183cmyc8jkxcfu6nlv96pgx8kpznvdwyg35r9gd", + "coins": [ + { + "denom": "uatom", + "amount": "1658865310000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos183njknhc0swepfsk7pe3fl5a460flchngjadxj", + "coins": [ + { + "denom": "uatom", + "amount": "4621850000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1849m9wncrqp6v4tkss6a3j8uzvuv0cp7wcgvqa", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos187449y3w8dhknd2juecf6p36fa4h0puqcgqk57", + "coins": [ + { + "denom": "uatom", + "amount": "2479420000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos188n58739vj8l255e003geywxgxmlf2cvdts98j", + "coins": [ + { + "denom": "uatom", + "amount": "20091190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos189n8jcs42t56rzs7cur9wtz9pfz3sxacs5fcq9", + "coins": [ + { + "denom": "uatom", + "amount": "11669000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18aey0ctrk62clagpkx9g8gjl95y5nwcrp0wm5z", + "coins": [ + { + "denom": "uatom", + "amount": "45229000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18d7qc52nrtqs37z23lue5vkjhm4dsg6jz4nkuq", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18da7h02z3e46ulee5prg5zl6pr9va0ytv6w46k", + "coins": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos18fg6lnzr2pa8fdgx59we6mjx8j9xazamnhahmr", + "coins": [ + { + "denom": "uatom", + "amount": "34035000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18fml63ahzjfksvm8xvzjrn2mwt5lees29ydzyd", + "coins": [ + { + "denom": "uatom", + "amount": "904000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18h0d669kf2jray4tc9hmw6hhgedjht57czcaa9", + "coins": [ + { + "denom": "uatom", + "amount": "2315360000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18hlpxdl3qfqesa6elyt8ve5ajermylmt5re9mt", + "coins": [ + { + "denom": "uatom", + "amount": "18092000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18jjw9lhf9ukdkkpyzf4pnlt8u0jm2azynzq96e", + "coins": [ + { + "denom": "uatom", + "amount": "8317000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18mcq4np40nsaq8xz30ttydwkn4up6grdtxwxcj", + "coins": [ + { + "denom": "uatom", + "amount": "13342000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18mpuylanyjgmn93qhpf32hl8zwctg3tc4z5pj0", + "coins": [ + { + "denom": "uatom", + "amount": "67473690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18msk2v9uc07qawxmpn3esqwfw7q3pu6scvjs3u", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18npp0s2tffdx29qc0wrw8d48xrgcx2apw6dmv4", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18p0pre4n0v443v63uhqzsq7dd89p3r6xpqlk40", + "coins": [ + { + "denom": "uatom", + "amount": "9136000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18ptg027t5cumqzkhpn726uhdqdadh88ss7ytv3", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18t9m2k2k4uvstya9395k9ksh77q6ea7qp4j4cn", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18tsmk4temy707cdm24a3nvsl93zwhfelx44qzz", + "coins": [ + { + "denom": "uatom", + "amount": "29392000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18tzqax6f8hzzee2lq5xxszqn9dfqkj2jhup4tu", + "coins": [ + { + "denom": "uatom", + "amount": "20353000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18uqr3vkuvdjf7h429r5pg7wlxhfrefpp5y399k", + "coins": [ + { + "denom": "uatom", + "amount": "361840000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18uyeklnyra8l490dgd5cwqt9gapldt6ludg5jq", + "coins": [ + { + "denom": "uatom", + "amount": "197785690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18v9z53lxlwzc2mq0e4h45cmr64gu2g6w6yd4fx", + "coins": [ + { + "denom": "uatom", + "amount": "24521930000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18vpv7ah7fd6uyza4sfvmtjyl8jyvn29p00dudt", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18xynl3ttqus798h9swq4m0zh6ydtggu6jfs0pz", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos18y0lmghlznvzsvc0shgyhx4crpfw8gzdr6mk5q", + "coins": [ + { + "denom": "uatom", + "amount": "9943760000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos18yejf5zqwdlyltgggl5w59pfjgsak9tcf4kqsg", + "coins": [ + { + "denom": "uatom", + "amount": "40703880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos192seuxmvm9q6ffxc3gwphrfrsy4hjexnvcuszg", + "coins": [ + { + "denom": "uatom", + "amount": "77117000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19324cndnlqnjh5mzmg6kfccw8em6x488cqmgtu", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19326pupkn08hesezwz4wq84p7uw9arlsmtr0v6", + "coins": [ + { + "denom": "uatom", + "amount": "31661000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos194nez388h7mf9ncs4m8kaxyg23l5pgt9nftqxt", + "coins": [ + { + "denom": "uatom", + "amount": "42968000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1967cxqqs02p2zg0ea42tp0yr96hwdlxx2nn3x9", + "coins": [ + { + "denom": "uatom", + "amount": "8718000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1978ntmxhx5mq3ek8tua5354qlg04e7rdp7rvxv", + "coins": [ + { + "denom": "uatom", + "amount": "23293000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos197fx7exczhnxy5t5qc2q7z3c4ph3yc567tgytw", + "coins": [ + { + "denom": "uatom", + "amount": "13952690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos197gw9ztm6vznn6u2f4k6spg8zzcqyee220sup2", + "coins": [ + { + "denom": "uatom", + "amount": "206248000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos198a3unr79svl8xhwjxf6q3fpytdwl2wqc8naqe", + "coins": [ + { + "denom": "uatom", + "amount": "4975000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos199843dmw5r4nkt6ld00y0wdm0rnnwump4lgs30", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19c08vkd2qr6trpjt38yktr8yv93fu635qarmwk", + "coins": [ + { + "denom": "uatom", + "amount": "2899440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19et5tu2zamw20aeppxh0v9kdxzqvxypczv0x9f", + "coins": [ + { + "denom": "uatom", + "amount": "316000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19gnlu9qg0h5zhxf58lmpyegyjp6em5wh0pgd35", + "coins": [ + { + "denom": "uatom", + "amount": "226602000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19h4ngd2y80mp9ud66len698n88qq56dz6wcw7f", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19hgskf0cfpsn5dx9m2wpwem600d60wyqtjdjmm", + "coins": [ + { + "denom": "uatom", + "amount": "5427000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19hv3h65nlvpqfum4jgugct78ak8wfemjfeyygj", + "coins": [ + { + "denom": "uatom", + "amount": "27119000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19j2hd230c3hw6ds843yu8akc0xgvdvyu83c6xl", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19js2k5v45js5ezxmtts8mgnrz558zfk2cxzwju", + "coins": [ + { + "denom": "uatom", + "amount": "223390000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19jt06nj50nv59w3w39y2fwuw2j4g9jgzkju0uu", + "coins": [ + { + "denom": "uatom", + "amount": "3916000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19kwwdw0j64xhrmgkz49l0lmu5uyujjayrfzmuq", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19kxfw669usn8lv3fshw24cr9vczv5lrz9w57ng", + "coins": [ + { + "denom": "uatom", + "amount": "20353000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19lnlh0uhzyeuufgja68m7vw4962zlwz6vpkwru", + "coins": [ + { + "denom": "uatom", + "amount": "1763000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19mvahxc84g2kkjfe9f746v325qj03hnw3z0sv7", + "coins": [ + { + "denom": "uatom", + "amount": "639906380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19npgxaxnl6jp307pj672amxm3w9m6wlwuhl8gr", + "coins": [ + { + "denom": "uatom", + "amount": "9091000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19qc25l2nwztml9nvhqpg7y55420uvg59yur42v", + "coins": [ + { + "denom": "uatom", + "amount": "11668740000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19qde837rqx64kcvnazzywrdhx460dvah0nw9q3", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19w55ez8454gzl2z2ffr37asns4vc3pg58yxv8l", + "coins": [ + { + "denom": "uatom", + "amount": "7192350000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19wlk8gkfjckqr8d73dyp4n0f0k89q4h7xr3uwj", + "coins": [ + { + "denom": "uatom", + "amount": "2260000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19wnt5h3ae6953k2xlayxdwytaddt0fss99vshs", + "coins": [ + { + "denom": "uatom", + "amount": "79152000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19xk778d40u60w0jt7x6jchmha9fr726xpeqcxh", + "coins": [ + { + "denom": "uatom", + "amount": "19846660000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos19yp3j6zm9g82afwh8wqz07p4zmpxf0udk0rz2f", + "coins": [ + { + "denom": "uatom", + "amount": "23267840000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a0l4p968xx6z054n4z9l7kqsncw7zjyf8fq6kn", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1a2404s0kwanud0gu0d0tg8zw4e0hp595m9z9an", + "coins": [ + { + "denom": "uatom", + "amount": "1085520000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a4eeuuk38z45wqxpc2kxzrnpvlnrrjg74lj76x", + "coins": [ + { + "denom": "uatom", + "amount": "5226440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a55nuwfqa66hz5f6c6f8ehmwh9dfmnku6dvttm", + "coins": [ + { + "denom": "uatom", + "amount": "11758000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a5exrzmtda036c7vwnrnj6lycagsxgyzpn4hpd", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a5rsatuv2gqcwmzfd5w8texgzlms5vh4r0wk4w", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a5v8jyh23j4vzgdra00xyxwpc99zn4lz52uvvk", + "coins": [ + { + "denom": "uatom", + "amount": "362981130000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a6kfadt24cgm9fy8z564jrglc27vtfz9kuphjf", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a835w4qv05epzaezl6mlhmwrfek3fxergp8pjt", + "coins": [ + { + "denom": "uatom", + "amount": "1154190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1a9l4dq6s44k7dk4lx0us6g7xsunartz8rscnx3", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1aaxx3hwch6g32258s07a57tx9vd26f8nagwt8e", + "coins": [ + { + "denom": "uatom", + "amount": "32783000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1acz4u36dwj8sufz3kettxad3ukpel2skquvelz", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ad32hmndh6g3a9pj99cq6guqereyg84j7ke99j", + "coins": [ + { + "denom": "uatom", + "amount": "6750860000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ads4ttzyv2xgtesg4q78h56s8stdndhyf7fnru", + "coins": [ + { + "denom": "uatom", + "amount": "67845000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1afzj42vde5yae8uht4qqxhw747w8k4dd05x5eq", + "coins": [ + { + "denom": "uatom", + "amount": "20726640000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ajhsgsx3hs2ph5wcfmus539hrsset7vam8vw6r", + "coins": [ + { + "denom": "uatom", + "amount": "10022064000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ak0henvtfcvgeztfuwdxk4m5dzyvympedkpnc3", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ak0v68rxfdug9tdkalxks674gm2hrn0lzh47cj", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1aksvus854fr2kss97lvqnnkmv906yfnx07tyyq", + "coins": [ + { + "denom": "uatom", + "amount": "90007000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ammw6wexx4uzhy9akkdvtdxrn9x7yerf9nsuax", + "coins": [ + { + "denom": "uatom", + "amount": "678000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ap5m3nw7rd3f5pfc38cg3vwau5wz98adqvr956", + "coins": [ + { + "denom": "uatom", + "amount": "122628000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1apvnx0qxfvccx87sx0cdva9wj587txamw6rs7u", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1aq4j6gz0tcj039nn74pdfefgksnqlld030lkhf", + "coins": [ + { + "denom": "uatom", + "amount": "26751190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1arzft4x9l030g8u4d90x0p5lng348w2tqavvx7", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1atceykap8x00pyyfhq86ju9q3avkm4zq23yw09", + "coins": [ + { + "denom": "uatom", + "amount": "31661000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1avy9rn9nr08xsm0c46lm8avqdfe4wdyyc26ydx", + "coins": [ + { + "denom": "uatom", + "amount": "12556490000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1aw99lzepmhwlt3d3dy4qp55kjr75d0e3v6vmth", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1awk0u59cq3667pdxm7vchwwe7fg27caf5ega6t", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1axf80dwgpdwxjfmy08pu94q27kl6qguxmpt9vj", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ayx28ayl80skzs207xcydtfx5s75p09fwysrlm", + "coins": [ + { + "denom": "uatom", + "amount": "11029980000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1azeer78z96rsv495e7rge4vzts0l9hwg9qdqfx", + "coins": [ + { + "denom": "uatom", + "amount": "7236000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c0829zzzlm7lujdf8nn3mrhmg9zjugqnrrtzdg", + "coins": [ + { + "denom": "uatom", + "amount": "995060000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c3f2nwrvgmp2hnat67xunh06gr0vn5mw9u89vm", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c3ynnn0ra95ehaakss2ultxf7tsw79j9yh8e3d", + "coins": [ + { + "denom": "uatom", + "amount": "22250000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "22250000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1c4f2cd42ttmx5ehntddlc7g6cj3cpwtmsqk6um", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c6n05ya4s3z8tws4spxfzzvefj5h9qquc0dvud", + "coins": [ + { + "denom": "uatom", + "amount": "10321000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c777qqzngczeq3r4nl9sd4dy33c8smzekm4uzv", + "coins": [ + { + "denom": "uatom", + "amount": "4522000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1c8md8kv77089p9ww3aeq8s9f5vfmthyzekwuyp", + "coins": [ + { + "denom": "uatom", + "amount": "3827090000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ca2vjnl75ew97xkm9wdps4lcexflzeucupg3wv", + "coins": [ + { + "denom": "uatom", + "amount": "338757000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cakgyd9pwshggsf4rysl7kuv2z94k7plkq456x", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1carjumua0ut4xugapz0qptvdz0pxs2jy0ur3z5", + "coins": [ + { + "denom": "uatom", + "amount": "6356810000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cawhs2t43pvp9rstva6fceg6nzgr6g8mfmrjnn", + "coins": [ + { + "denom": "uatom", + "amount": "2250000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "2250000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1ccz8r75ktu2g3c39l3yjyx45g22y5mzctp7tpk", + "coins": [ + { + "denom": "uatom", + "amount": "5217130000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cd9ra2h8r2flmkm3fpek4hpgjkaxvsey36d5s4", + "coins": [ + { + "denom": "uatom", + "amount": "221054530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ce2gkxuug6g388qd535tk3p70ej2xkkvf5jm6r", + "coins": [ + { + "denom": "uatom", + "amount": "269767000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cf9yqlamxgeza4nsn7y08vpkcs7qqjp4lzw9ac", + "coins": [ + { + "denom": "uatom", + "amount": "135690000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cfz907vjr334a3k0r2sxveeu3fa2uz4hnlta82", + "coins": [ + { + "denom": "uatom", + "amount": "104705690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cg37yfw5dkyj8xpa0mpqmdkr905srspcrvfmz9", + "coins": [ + { + "denom": "uatom", + "amount": "180920000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cgdwmxhp9ry6gzghr89kgd4gpjemq4e6894c8r", + "coins": [ + { + "denom": "uatom", + "amount": "21257000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cgh5ksjwy2sd407lyre4l3uj2fdrqhpk84m04f", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cgnkhljjjylg2k3399xzug6accr3h2cgq8j4ka", + "coins": [ + { + "denom": "uatom", + "amount": "452752000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cgr23u765dxxh066t39ds9xl2rrk4mdqtywa3y", + "coins": [ + { + "denom": "uatom", + "amount": "13116000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cj7u0wpe45j0udnsy306sna7peah054upxtkzk", + "coins": [ + { + "denom": "uatom", + "amount": "11081350000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ck7h62s26z4xtuqgtdxesw5axjjcmaw2g0c0ht", + "coins": [ + { + "denom": "uatom", + "amount": "8135190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1clpqr4nrk4khgkxj78fcwwh6dl3uw4ep4tgu9q", + "coins": [ + { + "denom": "uatom", + "amount": "2163429000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cnc0m7dj95rxz0s8y30yxnyd4kzjm0gw5hmem9", + "coins": [ + { + "denom": "uatom", + "amount": "6342690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cq5de34d4ylcdwg7mllhrzk7n0ut4mkr5c2e7w", + "coins": [ + { + "denom": "uatom", + "amount": "18665810000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cql9ska0xl2rkg6gcv0np4333gn6fygs3qf90r", + "coins": [ + { + "denom": "uatom", + "amount": "447001690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cqqdwg3sqx67z5thv8e94a0vhr8c2dhj7uexf3", + "coins": [ + { + "denom": "uatom", + "amount": "858465000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cs22ajqnf7vy020rzyhhxrmssltpgdqmkvkfm0", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cuj93ht7jgnhj9w95p50avflxs54vzwerlp26v", + "coins": [ + { + "denom": "uatom", + "amount": "51184690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cwpk832c06tktzk3hlezvecnrvg3pvgsvzl29v", + "coins": [ + { + "denom": "uatom", + "amount": "8125880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cwzdvwm3swqt8l45eh92luyfjlxsttg84ctgxe", + "coins": [ + { + "denom": "uatom", + "amount": "213132000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1cy7jye9jkg6k4h9wcurdcx7q4ld03m4853my3u", + "coins": [ + { + "denom": "uatom", + "amount": "26233000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d09xxsg6dg7kn33jf7edv88uhytqpq7p8hxjz3", + "coins": [ + { + "denom": "uatom", + "amount": "50021190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d0aup392g3enru7eash83sedqclaxvp7vkr0y9", + "coins": [ + { + "denom": "uatom", + "amount": "232260200000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d0syacm2y4dv6265z3wr0790gg6s4r4f467mer", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d6ymsqmtrmfw3dmwn7mgfkflldg9q8rkyv7r4f", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d7g8nr79qhm8n2l0hysfnfwazwmpvl3kglwklq", + "coins": [ + { + "denom": "uatom", + "amount": "5421000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d8mzdtl4eet2zhy9d4fttx92thrl6at4q60wvz", + "coins": [ + { + "denom": "uatom", + "amount": "36184000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1d9ql5ny5vas8fgtu3m6ua78ky8ygrss8v3pp99", + "coins": [ + { + "denom": "uatom", + "amount": "243795000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "243795000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1dafhhp2a5dmud90r5r5ws5fmh4hkptkt7szm02", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dany3yuj5qzcyl33qjcxwc6m478a3wftv347sh", + "coins": [ + { + "denom": "uatom", + "amount": "26000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "26000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1dc9zkd4ssrlnvktx8k97yz7hr2x6ewj6ju7zak", + "coins": [ + { + "denom": "uatom", + "amount": "500295690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dcjfpgrhkws5pudchn57vacelm6qzch6elxuqt", + "coins": [ + { + "denom": "uatom", + "amount": "248765000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1depqpgtsj23yd7d43hrt8l0965v29ktxmcf7xj", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dfhdn08a4f999nhk0yh7vdjtn92x2vlgljalfy", + "coins": [ + { + "denom": "uatom", + "amount": "1154190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dh25cx369a26phe0vfr7742rnvumkvqa9humf6", + "coins": [ + { + "denom": "uatom", + "amount": "9065990000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dh9g0lze0spa3zwx7ug673e4l98hxyyss7aa70", + "coins": [ + { + "denom": "uatom", + "amount": "22250000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "22250000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1dnapr4ckuajc6dajnm9th32jz5uw2auk2smfwj", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dp780ugw75g4l70ghgxl2qqxh8mjat6nslcz0q", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dphn9lt2pz4ulh8q9xw00n25g09lsd72762a4h", + "coins": [ + { + "denom": "uatom", + "amount": "11043940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dtq0y9reqst7d99fd3c7x6dflh4eazm4ha8qqh", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1du246y64t906m3gnd3l9zqdx4zfzkzmk95j846", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1duza60r8w3vl23xkzpk33anenj8kzejvxa8srh", + "coins": [ + { + "denom": "uatom", + "amount": "1151860000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dweyhr49jt0c3napejxknl36regjhv6jzxvgp5", + "coins": [ + { + "denom": "uatom", + "amount": "696927190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dwnxpdce69kyyfyfh0myygg46ka5egst60f45s", + "coins": [ + { + "denom": "uatom", + "amount": "62500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dydep8eafk3yxwvdqkr0fupfrga3x7cfjk7tw2", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dyptg9vsj92w5l9xn60kgw6ue4e6f9kh9mwrvt", + "coins": [ + { + "denom": "uatom", + "amount": "46530690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1dz6wztnz84a505ht25970w7htlp7ek7fjsycwf", + "coins": [ + { + "denom": "uatom", + "amount": "16463000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e2fyddrp9mxng9lk8kpqs38hcusrsnwel0cqkq", + "coins": [ + { + "denom": "uatom", + "amount": "36048720000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e52gjsd2r7rxuetvce9jygdhrzt77swvssnryv", + "coins": [ + { + "denom": "uatom", + "amount": "63797030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e5h4hqp298z6m0mm9ycnaawacmspgvujncqyyt", + "coins": [ + { + "denom": "uatom", + "amount": "8141000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e5mnjg4d6qprkash7vuseahgk2grrj43nk56sj", + "coins": [ + { + "denom": "uatom", + "amount": "23509680000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e6m4qmhyzj8v8j2yfdcz04qnewna4npsa3rvh5", + "coins": [ + { + "denom": "uatom", + "amount": "75986000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e873vumcqx00swf69wjqlkp22tww4jemdcmkkw", + "coins": [ + { + "denom": "uatom", + "amount": "6288690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1e9jlmhjnhv0z5wj64gz0dwn6q523xyxexne9dq", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ea3exnxgkmwgjjd74ran5434humf6kd8arr57s", + "coins": [ + { + "denom": "uatom", + "amount": "14021000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ec3p6a75mqwkv33zt543n6cnxqwun37rxqj2vl", + "coins": [ + { + "denom": "uatom", + "amount": "6500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ec95g0hxhxey9pen8wtqeggxce8r2wj59qskz3", + "coins": [ + { + "denom": "uatom", + "amount": "4062940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ecxqsd0mt5mrc3649zy42kff5ethtrrgua0fkw", + "coins": [ + { + "denom": "uatom", + "amount": "19937030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ed32ulmk32n079m9hx7sankadlf7wrdg5wql65", + "coins": [ + { + "denom": "uatom", + "amount": "1899000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eez6ks7upkjf8w3eaz0vah7x3d8zkade206xa6", + "coins": [ + { + "denom": "uatom", + "amount": "11624530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eh5mwu044gd5ntkkc2xgfg8247mgc56f8pycyz", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eh6l0lzaw29rvkwt5wcazhddhfuq4qt8jyq8q6", + "coins": [ + { + "denom": "uatom", + "amount": "166481000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ehkfl7palwrh6w2hhr2yfrgrq8jetguceek792", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ehmcn2t856kn2ls2kpsr4lj6ev3unxrwf8zr7r", + "coins": [ + { + "denom": "uatom", + "amount": "290877170000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ehs0p8tlq2mnvef4wx2hfprwamfrauxy5y3yp8", + "coins": [ + { + "denom": "uatom", + "amount": "333333330000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ehwjr5rym9lftlfhgaelre5pkynjhtalctrxpz", + "coins": [ + { + "denom": "uatom", + "amount": "14788190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1elwl77g7uzxfmpdg54m7s3mx8gtm5et0d6maqm", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1emaa7mwgpnpmc7yptm728ytp9quamsvuz92x5u", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eq9dymmd8x04khj8a8qd6xmtp2yjna0v236waw", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eqaeazuat8cpzs2fy79mkpf5j00axq59zey5c5", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eqltfeluftz2r4xa86vnakvqzq2nkdmzdfycra", + "coins": [ + { + "denom": "uatom", + "amount": "572440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1erynlmy8crgpgvkgy2su2r7e6p5dlkfq7v32mg", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1et93zj3z539acj3vzrfaysh9qs6lx883cwwxtf", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1eva437c5hw4kx9wd8wya7ykpkrktypu8d9kz9f", + "coins": [ + { + "denom": "uatom", + "amount": "17833870000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ewmayyze0svkhhsq7gs5yc9gv8uezn3tlrekqv", + "coins": [ + { + "denom": "uatom", + "amount": "29399000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1exmthnluucpdk9qjewm0de0chhyuvfpmjmu78v", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ey69r37gfxvxg62sh4r0ktpuc46pzjrmz29g45", + "coins": [ + { + "denom": "uatom", + "amount": "29500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "29500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1f0kwe42k9xdmlxt939m6nq7h9shj0rygnldusg", + "coins": [ + { + "denom": "uatom", + "amount": "217104000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f0zwrlfjjl8twrsyxv22p8jdqtym9njaksfs2y", + "coins": [ + { + "denom": "uatom", + "amount": "217352000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f2r27aau0kaa69mjqvacuzdmutly0k87399jg7", + "coins": [ + { + "denom": "uatom", + "amount": "75081000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f2w8yef59ptjwh0lygs75vlezhd0s6lulmhydt", + "coins": [ + { + "denom": "uatom", + "amount": "58282040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f4anxz5sphpxcuq644h5hvxf6wsalz36ac454m", + "coins": [ + { + "denom": "uatom", + "amount": "119620000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f4l4najn30la6gytsfrzenyxuxnjgpsx3vwqd7", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f4p03grrcvr9catgnguwx4gpksmyxxx25gqquj", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f4s6960hvjhxkhlzs9h90ehuzg3qm5j3csftzz", + "coins": [ + { + "denom": "uatom", + "amount": "24311000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f4uneac5gaqlzt8vfv5fxz0dfz2zhpppwfkkw5", + "coins": [ + { + "denom": "uatom", + "amount": "5927280000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f63lrmnn4upu722kxdhw04taxa6w50lnchnjp4", + "coins": [ + { + "denom": "uatom", + "amount": "30304000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f70nsqtq0wcd0kymq79ca2p0k5napnm6yqc94x", + "coins": [ + { + "denom": "uatom", + "amount": "944802440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1f7sa4nr5nhlt57vy5553tqzs5dlz7x6jx6uxw5", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fa87w4w5yezm42jph2cuku983wes8379junyhj", + "coins": [ + { + "denom": "uatom", + "amount": "46528360000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fcyx472u3r2cg90zufv9pludp8r6scfwu2hnhx", + "coins": [ + { + "denom": "uatom", + "amount": "7236800000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fdc28n58lqannhd587384pqcahusmscxdumlkg", + "coins": [ + { + "denom": "uatom", + "amount": "981010000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ff0dw8kawsnxkrgj7p65kvw7jxxakyf8kqnyy4", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fghgwhgtxtcshj4a9alp7u2qv6n2wffqj4jdl9", + "coins": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1fgmzta85ud989ksqrch98v4s99mx3u04pjmvxz", + "coins": [ + { + "denom": "uatom", + "amount": "567665860000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fhejq5a3z8kehknrrjupt2wdl4l0wh9y2vayhr", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fj8u0refnfry3y2w8m799txwatzdrkgd22yqxt", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fk8whxged3s54s0850m7se79nlm5d9c53w4lfu", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fnf34rnxl4u3u8fu6z2qzf49d74neteg77zd40", + "coins": [ + { + "denom": "uatom", + "amount": "90007000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fnt8q5k70flcwgwsazz8gd3vc7lmw3qnjq6mu5", + "coins": [ + { + "denom": "uatom", + "amount": "22162000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fshyfd0z0rhqcrf0jjd9yu63um6q5ajl3zq8qc", + "coins": [ + { + "denom": "uatom", + "amount": "60214480000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fujmd6kpgy4az4y6rsduwap0s6sazgd0sndu2e", + "coins": [ + { + "denom": "uatom", + "amount": "31661000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fv0n3e4uww6u2l30ptskx9rgjqklm53l5xsxhw", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fvq93ef35a04an9kpz6rjqryg9ecmvr2xc3zrf", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1fw06varlctvyjuc6884kvjnavq26qpmq4f4tle", + "coins": [ + { + "denom": "uatom", + "amount": "255934450000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g0y2xpyzz4we4zwlafus9vvpd3tey76mhp0pw7", + "coins": [ + { + "denom": "uatom", + "amount": "472401220000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g29wu5nm7hfke3an9uzv9d3upv3zvk5t7hggj9", + "coins": [ + { + "denom": "uatom", + "amount": "34891040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g5435cjhlm4s2nlmwln6ess9x4lc4qgdfep2l6", + "coins": [ + { + "denom": "uatom", + "amount": "52014000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g5c2w65svkcxxat72nscc0mwqj2gsrhrem3cpk", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g5c490lh0syrnq4xqyc83e9sdg7l63emjy6dwj", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g665548pcf7x70avextvkxm5rlk5ekrtegafdp", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1g8622z29zmgsh9cmf56uzq5zyvvt4fnsn295pm", + "coins": [ + { + "denom": "uatom", + "amount": "402094000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ga6hy630ejh2s8p2kvql4jxjt6fcnj0nl5vjqu", + "coins": [ + { + "denom": "uatom", + "amount": "944802440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gdlk85s7dzan6zf7857smkgsdccde5lq9ndnn5", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gdv7kzg2lvx6k5w6nxq84q8r9z2ujpve0krhkm", + "coins": [ + { + "denom": "uatom", + "amount": "29851000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gedwk4nn8d3ge3efjcq54lj8p9r8mq5hlx5m09", + "coins": [ + { + "denom": "uatom", + "amount": "112622000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1getk0gxldkqnphlv7g8pl7xn79v8akwxek6yxf", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gfnd3dq4qaeklznfw6aqkw9rjg9uymqefmh9gw", + "coins": [ + { + "denom": "uatom", + "amount": "53099000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gg3vkw8hp034wer0k7p47pehag3jvnqh62h4v8", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gg5tynt57lf9d69crj0vzf3m6rsqelz46xntp8", + "coins": [ + { + "denom": "uatom", + "amount": "232690690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ggvr6v6cnkmlx4efqcn3ycwjjswkruvyfvnzz9", + "coins": [ + { + "denom": "uatom", + "amount": "76438000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ghykl3xtrum0znvuqdk084hyfywqcqjqmwcs8j", + "coins": [ + { + "denom": "uatom", + "amount": "100410000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gj3zlw8nze9wftanatrj7fneq0ud8y86ftm4un", + "coins": [ + { + "denom": "uatom", + "amount": "40708460000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gk6py8fukt8dnaad00atemjqjlhjlwv9rgw6qz", + "coins": [ + { + "denom": "uatom", + "amount": "90505000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gle4fkzf6wrfzwl3hawd4pg27fcsnh4f7nacdk", + "coins": [ + { + "denom": "uatom", + "amount": "500295690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gp6drj8tmg2hxe70rpdlhqdeamgyjp2gpnvd82", + "coins": [ + { + "denom": "uatom", + "amount": "10402000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gq9yqlhvhtu6a00vydyt8wztx66yvpjy7a862g", + "coins": [ + { + "denom": "uatom", + "amount": "8819000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1grgelyng2v6v3t8z87wu3sxgt9m5s03xvslewd", + "coins": [ + { + "denom": "uatom", + "amount": "1467495660000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gse07606lxxyrgpm0yh0rxqjv3cqhx6jsc04yf", + "coins": [ + { + "denom": "uatom", + "amount": "231178140000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gtquva5nww59ejc3hjvnchslqlsvsmw8wjvgtx", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gttnelxpkehyglfz8ns85j72rm25nvf4gw0drr", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gtzfw4n8m6cr0f42f4psjmngkqm6jfwaukm9dh", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gu0mkhx3w76wz3v2pd0vscsm94zu3htgnmjku8", + "coins": [ + { + "denom": "uatom", + "amount": "62500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1guxp99wf5q7dnh7jc6s7wx4zwqm8z7chwts3nk", + "coins": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1gwuzsm5cccy97gtjze2lzk2jyya8y3xrlgcme2", + "coins": [ + { + "denom": "uatom", + "amount": "54274000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gwywmna0jky46mcj3wvc336qgyk9u2n3c74az7", + "coins": [ + { + "denom": "uatom", + "amount": "70089980000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gxe38pdkz5g2h3g07pwa96zunsyugkgxa7cym8", + "coins": [ + { + "denom": "uatom", + "amount": "8716940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1gzuqry88awndjjsa5exzx4gwnmktcpdrxgdcf6", + "coins": [ + { + "denom": "uatom", + "amount": "10855000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1h40lfv50fmdnge9xy57wgyy985xrwjpmu9t2h7", + "coins": [ + { + "denom": "uatom", + "amount": "226150000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1h8t0vx9kl8vvkldqafct2gw6gehka8y9ks6znu", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1heeama0c774937c85vu4sxxnz9hlqppa8lgdzc", + "coins": [ + { + "denom": "uatom", + "amount": "2311870000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1henglqj5c59wrhezdas8ldwu578a0xs5e74csc", + "coins": [ + { + "denom": "uatom", + "amount": "2894000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1heqh3s79g9c4atf7pmnyhxk20nw2c7j7lmau32", + "coins": [ + { + "denom": "uatom", + "amount": "144283000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hgev2wqdmncqwc6w8nxechk32n8kpahgu49avy", + "coins": [ + { + "denom": "uatom", + "amount": "8135190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hh8dfz9jcvferdkxl8qf9swv3ps4l9p2qnzsxj", + "coins": [ + { + "denom": "uatom", + "amount": "121180000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hj3j4c4728gkznevtzz7n2ageyf94z6kgdg59w", + "coins": [ + { + "denom": "uatom", + "amount": "81429870000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hjct6q7npsspsg3dgvzk3sdf89spmlpfg8wwf7", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hjykmlfysrzyw43nqwc89eyg74q5apuntnqsps", + "coins": [ + { + "denom": "uatom", + "amount": "36183000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hs39xzk0qn73crxgv5vwu884lxn7z99ryrzmrh", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hy7sg2r2apyx7nftljcrt3aaxdha6d0v7pvpk0", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hyup7rv2vqlmzpu3mg34knepfxpnt2yrk8vspz", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hzdne7xvvs8unp497t6x0g32lpz6m5mqk9zq7d", + "coins": [ + { + "denom": "uatom", + "amount": "26292000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1hzzkqn4kpqcvzauhdzlnkkkmr4ryaf8rj6rhkj", + "coins": [ + { + "denom": "uatom", + "amount": "2000000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j0vaeh27t4rll7zhmarwcuq8xtrmvqhughud6h", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j26c4k2jj9tv95whdhva3e8v2fcm4s3dpt77r6", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j2ec43eha7u0nqwd3f7fy4ufehlnh2k5u7c599", + "coins": [ + { + "denom": "uatom", + "amount": "6300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j2yz3qt0589jfffu44djaamj23gvjmt8me5ff4", + "coins": [ + { + "denom": "uatom", + "amount": "1356899000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j468a986hzugntgdf7f95ag2m5part4ngclgmz", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j4mk6l3emyncu84f5fcxgn9n3vdjn23jcnlkdt", + "coins": [ + { + "denom": "uatom", + "amount": "88835550000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j5n75yls5aun28eu02w2hdthmtx29pvesya0gh", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j7u72t4jfwxt5z04uwvf3s68zmaaxqxcxpz6zm", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1j82fa8tkvdr2pjgn3hm367l0z8v2hj738f4fvc", + "coins": [ + { + "denom": "uatom", + "amount": "6903000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jcuur4r62sak3gjv7cj2sdawtyw64hkdaj7tgg", + "coins": [ + { + "denom": "uatom", + "amount": "45297000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1je2h4pjr8tazzmse2lue86lharxktxg466g5c8", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jf0nkx6s8r480kpr084xz3fsj597k6c2czhhk7", + "coins": [ + { + "denom": "uatom", + "amount": "18422620000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jhnz3se4uax336rlku7tpk7kv28n69n6vj7465", + "coins": [ + { + "denom": "uatom", + "amount": "24876000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jhtmsepzh85p355dht204uxqdu7h5d8e5v5g9x", + "coins": [ + { + "denom": "uatom", + "amount": "217104000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jpjacusjyym9txdp6pqug88rcq6tk05ckmc05p", + "coins": [ + { + "denom": "uatom", + "amount": "479360000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jqnqx7gq7gn89r0ysjufnnat85n5f9e5axywfz", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jsdwaf0enwmgl64y200n8pg9w3xs7g9cl2wj38", + "coins": [ + { + "denom": "uatom", + "amount": "62990880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jsgsm6zuwefc6pvmvl8495az4psq7gs7dedqgc", + "coins": [ + { + "denom": "uatom", + "amount": "86337710000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jsu8kqf8pv6pf2rcwylulvp73a453q382wep43", + "coins": [ + { + "denom": "uatom", + "amount": "63983190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jtrpj3aza5myet2vauveehk4nt4e4dgq4pk3md", + "coins": [ + { + "denom": "uatom", + "amount": "31661000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1juhegqg2wltwwlh0gur5p3rlkcm00fpr498p4g", + "coins": [ + { + "denom": "uatom", + "amount": "11094000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jw5gc0jtlmhjqmmjey0kshd5xn967xw3ulpeyj", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jxv0u20scum4trha72c7ltfgfqef6nscj25050", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jy2cq6zdyzwtj2ujdcxpzudwdaenersnl4k77d", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jy2q22yw290efhfsrwlfqanaq52vq59dz0hyke", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jy6mmuqdwaawjc8qlwf3r9ml3zlqxa68azgl4r", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1jymtql33ej852ck06nmxxds8cqlwqws95622yj", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1k6496vg8vd507aukcqrr55nhwxjqmpjsq56mvd", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1k6ddn5mzggf5f87pt70kyk3mkqd7r9fv97pawy", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1k9a0cs97vul8w2vwknlfmpez6prv8klv29tea7", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1k9sjll9g57mw3unhepv50ctfwt5c2743m5vt2m", + "coins": [ + { + "denom": "uatom", + "amount": "1748790000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ka5tua6d6l570vxtttrzhr2jux5uhe2gwe7l4z", + "coins": [ + { + "denom": "uatom", + "amount": "2080000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kckhyem9suhzhah62z2kwzqk5apjtct5w5gawa", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kcy04c0qe8a6h2fuf3f788e6mp34avlhg7efnh", + "coins": [ + { + "denom": "uatom", + "amount": "135690000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kelcz0n9hash8zxcngavehwyzt0c7073655skd", + "coins": [ + { + "denom": "uatom", + "amount": "90229110000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kezzd8q3lc8wek2ks48e36cv57jvtsr74l9uf4", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kfd4x65lanps28wh8dtr39g0uxzqu7wdccxesw", + "coins": [ + { + "denom": "uatom", + "amount": "20933690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kfzj0sr07drru6gpd84qrq2h0d68pkd4mqp3hr", + "coins": [ + { + "denom": "uatom", + "amount": "62417000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kg99k8wd67r0ffxwavgnxup7yk46rvttrvqy7d", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1khlqhj8vkmj5hkap47740xcwmspz7ydpkxtuxn", + "coins": [ + { + "denom": "uatom", + "amount": "85484000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kj0h4kn4z5xvedu2nd9c4a9a559wvpuvemr0vq", + "coins": [ + { + "denom": "uatom", + "amount": "33250000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "33250000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1kjhdx3nkh6krdhryvjzkq33xwh6wsyy785fsga", + "coins": [ + { + "denom": "uatom", + "amount": "17187000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1klmc0xh37pu5ajt53z7l3aekmej39s06ccfgqd", + "coins": [ + { + "denom": "uatom", + "amount": "3362510000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kq5yvze3vx6f2gxdyv3s3c3js72ssf0f5kkqj0", + "coins": [ + { + "denom": "uatom", + "amount": "4520000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kq7fnx7qv93fs9w38e24hkp7jzmrxl9f956ywn", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kquk63vg0c7ugpd4n9l2hfemys9kgywwl67vpf", + "coins": [ + { + "denom": "uatom", + "amount": "290865690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1krfmhqvfzmxex5uw5atjwfs9xpqel6hvqajkyt", + "coins": [ + { + "denom": "uatom", + "amount": "184302910000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ksnnpj9x33hvakuzt02gq0aufacg72w7u5kv3w", + "coins": [ + { + "denom": "uatom", + "amount": "9950000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kucpygly3ynswdf77ersas9ejdlp5erucprymf", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kv7kh4tt9uq728f9rw68dnvjfgvgt8dq0yc296", + "coins": [ + { + "denom": "uatom", + "amount": "107040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kvy9pqu3ul0x9263cgl3x58g3jccqyf2jdu00x", + "coins": [ + { + "denom": "uatom", + "amount": "472401220000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kw3tzazwumt2rhpjg76ud0z2gvuzwmj5ylaf08", + "coins": [ + { + "denom": "uatom", + "amount": "5296250000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kwstysea0p8stxe349hru6hfxc78zsjnekexxn", + "coins": [ + { + "denom": "uatom", + "amount": "20250000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "20250000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1ky7se9m7mpfg638m0sjtd79marsfgkj3vchkza", + "coins": [ + { + "denom": "uatom", + "amount": "13686740000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kz72mcgym3wwcjcqcz05e6uue2842w2npa2t2v", + "coins": [ + { + "denom": "uatom", + "amount": "31986940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1kzzwlps38rgv7gwyye7dy3ppymsrze65vep6qx", + "coins": [ + { + "denom": "uatom", + "amount": "15830000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l0whphamp06f9envh55juf5k8z25h9ju5fpzyu", + "coins": [ + { + "denom": "uatom", + "amount": "1148370000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l2lvpakkxs6dcg4t9kdeyutwyxkaeglx5dj4p2", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l39ln38tehqg2k7ujhalgylz9qk2gr90r5njsz", + "coins": [ + { + "denom": "uatom", + "amount": "36606040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l45lk6uc0vkz3n9ljynnuge29fprymes98036k", + "coins": [ + { + "denom": "uatom", + "amount": "237061000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l4d8nle9eztwsqf5l9mv7exsxe0rlfsp5fjvjz", + "coins": [ + { + "denom": "uatom", + "amount": "630506000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l4tdmtdndhhjae4lkt05vk9t2gx2m742ts7e3m", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1l5e7lk6cj553jzfv4x9k3scnyxzz70vc4222ka", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l6gz5zk8k8s87emf4q5jlr84gp3wq8x3y6lw7t", + "coins": [ + { + "denom": "uatom", + "amount": "7500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "7500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1l72ggdcp99y6z56g4g775a07ff8f3dx4a60ugx", + "coins": [ + { + "denom": "uatom", + "amount": "135690000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1l7knghep9aerjsj6z76wcn2up5p5m6r2quhrcs", + "coins": [ + { + "denom": "uatom", + "amount": "2495196090000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1la4t7jee73a4zqg9ccs2acjt462qjs5xkls4n7", + "coins": [ + { + "denom": "uatom", + "amount": "198147000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1laqefwck8mkxt44jfn7fnpynfv9f2utyw55shy", + "coins": [ + { + "denom": "uatom", + "amount": "1017675000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lcech8j0wnzxh8v7eeyp9jue2m3vy7d8wp62uy", + "coins": [ + { + "denom": "uatom", + "amount": "70099600000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lcsjy2d5s33h0sddd8lpuqvwyz5ruz7jsfj43h", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1lddgsstcvk0myvd77hhl7quxlyzy62qh5twpzl", + "coins": [ + { + "denom": "uatom", + "amount": "5798880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ldp79s287ycz8faf30c2dwllmx27py593yegdh", + "coins": [ + { + "denom": "uatom", + "amount": "2145490000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ldzd5tlpe66vpuc9267uknwrlr7fdw7xjkjykw", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lem6pqkt64ge7yyfs5l2yxxrg78uvvju8afwlr", + "coins": [ + { + "denom": "uatom", + "amount": "90000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lenvpq48ehp83x70nxuw797949twzhcycrucv4", + "coins": [ + { + "denom": "uatom", + "amount": "54241000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lgpsaas2nmgrdtuhhgg7q8fxvlvw3nkp02pptl", + "coins": [ + { + "denom": "uatom", + "amount": "9045000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lh4gmzrpr84rv37jgc7l3jf4zz33l92zscmzaq", + "coins": [ + { + "denom": "uatom", + "amount": "65583000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lh76pvy2ew873hxxnvl5gqpsgwzm53qpf6x78y", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lhpdp3nasvc66nxx7lnq604usfvjxlsm8h6v3l", + "coins": [ + { + "denom": "uatom", + "amount": "17433880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ljfjvdg0hps4ysqtckmx87w3hrwv54kn92waqr", + "coins": [ + { + "denom": "uatom", + "amount": "174514530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lktjhnzkpkz3ehrg8psvmwhafg56kfss5597tg", + "coins": [ + { + "denom": "uatom", + "amount": "1000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "1000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1lkznpljvglyfehzngujl93l0d3elfvua5kdvy9", + "coins": [ + { + "denom": "uatom", + "amount": "67845000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ll9zujtlpzym6m684hyh5hnwn4rnpz4v5fh660", + "coins": [ + { + "denom": "uatom", + "amount": "69800690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lmg2wqnkynmjyszn8vtze6q0082c9sjlplga80", + "coins": [ + { + "denom": "uatom", + "amount": "904000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ln7hw9nk4rreyazuu0fuh63t962xyjddf3rs49", + "coins": [ + { + "denom": "uatom", + "amount": "12663000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lny7p8uw6tcvlnmw2yu0xcqkd32rgunwpqr47k", + "coins": [ + { + "denom": "uatom", + "amount": "568856000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "568856000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1lrkg4yx0sc92z7wsdvtg9kktu9jc55fukq5hkc", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lrkzz8aanx975lrqqzg0cmxyh027qzatu3s2az", + "coins": [ + { + "denom": "uatom", + "amount": "119277000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lsx4x2fdx4vhxz49t9sed8j5untc8yyllmfs4m", + "coins": [ + { + "denom": "uatom", + "amount": "572440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lt83tymrlkcg7jtfrzv5370z9uthttpvhf4jd7", + "coins": [ + { + "denom": "uatom", + "amount": "694280000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lujhkwkpwnsems37697fr9t0aja5gd0sjsxtaf", + "coins": [ + { + "denom": "uatom", + "amount": "90458000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lyc3dacgdsq9mlardxze4883w6uy0yw27txv7n", + "coins": [ + { + "denom": "uatom", + "amount": "18606690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lyqw63pe03ymaccav329g6xg8fxc0l3lg0gx32", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1lzef80fkrqlj02am55yhasas4np8cmtrt0jyv5", + "coins": [ + { + "denom": "uatom", + "amount": "465479120000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1m06fehere8q09sqcj08dcc0xyj3fjlzc2x24y4", + "coins": [ + { + "denom": "uatom", + "amount": "7236000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1m5a8up77kweeynzu0yzpfdczycfvrl4c0fmsf5", + "coins": [ + { + "denom": "uatom", + "amount": "23966440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1m6svdnu0x4jsnmglk7g8jcucqn5guleuffuzlm", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1m8c39v2pwmnx0tuucnyn06wf73ex9qazsygh38", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1m9fk67fjcfukfdjajr9dmf56u4twuwuj6d9vr6", + "coins": [ + { + "denom": "uatom", + "amount": "19675000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ma02nlc7lchu7caufyrrqt4r6v2mpsj92s3mw7", + "coins": [ + { + "denom": "uatom", + "amount": "3614756800000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mamljwqhnsk0z6vv8v0deq5ezpelm3py9hc0nm", + "coins": [ + { + "denom": "uatom", + "amount": "437050000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1matv39l58yuz0wugunzrxeshfp959r7yvm0png", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1md398keg7plc5g3jtzapxld9scmwue5rqu7ca6", + "coins": [ + { + "denom": "uatom", + "amount": "2241000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mgzx4ps4anyuguwqnlw28ak5wr8c25qpce6v76", + "coins": [ + { + "denom": "uatom", + "amount": "221627000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mh74w0gprseer9p7jnp77tpwjzc9e4ur9wzmya", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mhgrudqv6uy3vdwelztu2vmqqqz23wpu76jydr", + "coins": [ + { + "denom": "uatom", + "amount": "87253190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mjal8r2etj7px00469uj53snszng8fayz8y4f4", + "coins": [ + { + "denom": "uatom", + "amount": "40707000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mk8kvqsnge6e3edpx38dqnpn39zmqlsw46fcve", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ml3ajeqj5rhkhzw6ycqvx9r0yq79vg8585av80", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mlvmhj8z78965neevc4akynec0q5ln29a7ryzx", + "coins": [ + { + "denom": "uatom", + "amount": "485450000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mm0pznu93ckr3tfepz77v70pkvgf80w092vhey", + "coins": [ + { + "denom": "uatom", + "amount": "17187000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mmtur9t5y4twz8uhcw4nfqfug2vs9rggw90kph", + "coins": [ + { + "denom": "uatom", + "amount": "23254650000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mn4s582hcktej3xqfm6kmnkruvfn3nd4j4xklg", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mn7gqqweth02pvu73anyqhxt529upvn8c6x8gt", + "coins": [ + { + "denom": "uatom", + "amount": "4522000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mp6n3gay6uae5clywzjjczxakwzykw7yfa9d44", + "coins": [ + { + "denom": "uatom", + "amount": "22162000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mrkn3uug9dm32hyp9tcxs5dmmuspt7nezrdmhz", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mszqfjrh2af5k3jr4r3deukgrzdylkr2sc8pg2", + "coins": [ + { + "denom": "uatom", + "amount": "10430080000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mt9msx5q8wlcmt2qgl6qltk8fgtl995x3pnt7q", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mvvwfnfagp60j25dvqdc4ntslu4nef5cgc4x5k", + "coins": [ + { + "denom": "uatom", + "amount": "3481190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mx7uw3jw3dgky6ty67lgyrstfgte9nrvklws52", + "coins": [ + { + "denom": "uatom", + "amount": "13564000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mxksrhkyqyfathyz2ktv8e8738fygk0yj48a8c", + "coins": [ + { + "denom": "uatom", + "amount": "904000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1mzw42ehfw4md7yn49h329qss04qeq5rgzgkn95", + "coins": [ + { + "denom": "uatom", + "amount": "66940000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n0jpnal3nq2qpep8nh70gmtvqwzzhdqrs0yj6h", + "coins": [ + { + "denom": "uatom", + "amount": "2873000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n2l8pw5zxpa00w6ylrwk2nzgswq6xtpzs86sqs", + "coins": [ + { + "denom": "uatom", + "amount": "27138000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n5ewzhjwhg0j2ay3x7hv0zluqn8hgamz2w0l8s", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n5pu2rtz4e2skaeatcmlexza7kheedzhzf70tu", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n67u3kym9zh02yw9su36a5y8vp4fkpkzu3yhfd", + "coins": [ + { + "denom": "uatom", + "amount": "4517000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n76cq858ywc8nxmzhw0xew2y8uz9ce6a74xtna", + "coins": [ + { + "denom": "uatom", + "amount": "11614060000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n7ty7m0u8vwhg88jflw43wmvz7catru2n5ru4j", + "coins": [ + { + "denom": "uatom", + "amount": "139610690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n7vrughkxs2td00gjvfv2rrz8epu8ssqm6wp22", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n8dzlhvpk689az6hj9ert05hp86lznmuezdvrf", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n9dl7pmfdxae3zfytltd6hw2nn39luvpd8z7rl", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1n9juyach9xvnsnkeale4kc4kjgaedvsaydqe9z", + "coins": [ + { + "denom": "uatom", + "amount": "174515690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nckqhfp8k67qzvats2slqvtaf3kynz66ze6up4", + "coins": [ + { + "denom": "uatom", + "amount": "14874180000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nclw22ywv5l0sng323q2ddxzvwjgn3z4lx76fh", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nemlw7n0engcdlypkp6vsmsrvq8c0me6fhq300", + "coins": [ + { + "denom": "uatom", + "amount": "40707000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nf7ysaj73qfq4hm586zy6np2h9a2vkpz7lfgct", + "coins": [ + { + "denom": "uatom", + "amount": "11262000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1njt7e57gdsej95qqajw5hrkchwe96n354tvzpu", + "coins": [ + { + "denom": "uatom", + "amount": "4954680000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nkq7w53n70c03njwxdxpvr28yh5c5g2z4yhssu", + "coins": [ + { + "denom": "uatom", + "amount": "24914000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nkrsk4e8jlfaprmn282zulhfvw00gagyd7k80r", + "coins": [ + { + "denom": "uatom", + "amount": "81435690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nkwj47xhgwee208uqjzmcuyp6e5pjrsh8xf4gj", + "coins": [ + { + "denom": "uatom", + "amount": "12657000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nmwsvgu0vzmt078sec7c0wsj925ndpsdj6c7tn", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nnha965g72e6hclmdqr0kqnzswa4lx4t0jhchh", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1npu2yuldsgxvg9a7gp9zfszx4rqw4q4p72fdfs", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nqeu6cz8rc0a9sk7ett9ews32pmhcejv0nwlae", + "coins": [ + { + "denom": "uatom", + "amount": "872615690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nrdxgccjqddjg0a8p3xsarmw8fveak6sylqlph", + "coins": [ + { + "denom": "uatom", + "amount": "1151846380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nse3tw56jdxxgn5tkedy5racut3janmwyu3x82", + "coins": [ + { + "denom": "uatom", + "amount": "1130750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nu8wvq4kj6qdwwx77d6dcmfnu3ut8m42xt30d0", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nv9j4uycfhqq278ku6tjam23q2fpc82g3k2hwk", + "coins": [ + { + "denom": "uatom", + "amount": "18092000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nwpde46ud3sthsvs09nj0z6p4s4d3gyqnhxmad", + "coins": [ + { + "denom": "uatom", + "amount": "113029000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nwyeyqudzru5l64e83dnmq79q4stqz7fwl5v5a", + "coins": [ + { + "denom": "uatom", + "amount": "349040690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nx3z56kpyk7xmpt4e8df7gsmd3lerj5t2lltzj", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nysdqwr87tn3znjpygx9g5qcd8wmkunfln9kzr", + "coins": [ + { + "denom": "uatom", + "amount": "81435690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1nyvz6jl826yknlpre8mfsehu96xld46n2t58x7", + "coins": [ + { + "denom": "uatom", + "amount": "17648000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p0c0d7faqjlhw5y07kxwppatahu22wdf2mwn7f", + "coins": [ + { + "denom": "uatom", + "amount": "3931470000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p22hhezk9pevxmluq5kvzkumxk0jwrt7xqu7rz", + "coins": [ + { + "denom": "uatom", + "amount": "12549000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p2de78j5nk3cj480pzeka3unltede3nm0zjpe9", + "coins": [ + { + "denom": "uatom", + "amount": "349040690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p35nu7mzhkrumeyf3evwkyyg37gyvfl6ew752h", + "coins": [ + { + "denom": "uatom", + "amount": "28961840000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p54pu56t3h2r4ecxs863u9xpxwp28x8famg2yp", + "coins": [ + { + "denom": "uatom", + "amount": "4999000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "4999000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1p56ryxvkcmxsxx4ewwqm4gwe86qxtkhakxw358", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p79cw4nehzz469mqdul7dgpn3h8h82rphmpxew", + "coins": [ + { + "denom": "uatom", + "amount": "29078190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p90k8m3vmp3eqv3pc77q5fqsxaa6q7282veacs", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p99fp2s0kfmnx62kvzgzw6jjmzdx3elpjsx3ad", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1p9qh4ldfd6n0qehujsal4k7g0e37kel90rc4ts", + "coins": [ + { + "denom": "uatom", + "amount": "2626020000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1palj9927mttgl7a79vh0et7xarrf5sl7n68lnd", + "coins": [ + { + "denom": "uatom", + "amount": "23545750000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pcf3jd9fevxtayq4hmkqdh7vlqmggymtkpeeaf", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pcm7sjpt8tu85v4hdkk5l3fh96ya9zm87lqvqe", + "coins": [ + { + "denom": "uatom", + "amount": "1842980000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pcp8rz54agefg7pyc8z6330x2k4syl8k8xg4em", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pd6xvv94p2env7laycms2u9a5p6vns3tys0tyx", + "coins": [ + { + "denom": "uatom", + "amount": "5163000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pdracc6yfmdfymy5g0kcfs3rgv3nxn322f8qw0", + "coins": [ + { + "denom": "uatom", + "amount": "572440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pe9um64z55xr0m9kqqkg25k6sfdx5agfyvsduc", + "coins": [ + { + "denom": "uatom", + "amount": "881000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1peq96jqmp9anxft7plu9qp4cpz4yr2k2zc28kk", + "coins": [ + { + "denom": "uatom", + "amount": "11624530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pexrxk6s9aznl8ap2g8jr87ktc3a7dd8ramv8p", + "coins": [ + { + "denom": "uatom", + "amount": "499296240000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pgnnyps08ul0t88sys4ujxj9p3ynkpu2dcdxpa", + "coins": [ + { + "denom": "uatom", + "amount": "11043940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ph3gaf93e5gqrkhp03lzsda480ns0gtlpkzfqp", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pj9e89gc8dkvv72wh5qdsxwrnwzev8tv8h9x3r", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pjmngrwcsatsuyy8m3qrunaun67sr9x78qhlvr", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pjyl4u9wa6kd0uf6rd3v8t24thce07xds5hjs6", + "coins": [ + { + "denom": "uatom", + "amount": "45220000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pmftv9ww3lxsjthrg6jx6ufy0fnr3ktsdupder", + "coins": [ + { + "denom": "uatom", + "amount": "510194000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pqcmhfe2w2nfxrnewytvftmxdvyx4qyrmcmjjh", + "coins": [ + { + "denom": "uatom", + "amount": "14383000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pqn5dkf40pl076j6nlyjxpwugy70fys9u84qn8", + "coins": [ + { + "denom": "uatom", + "amount": "1431990000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ps7dmygt4wm72t8l9kdjetelhggsv8w7m0ezaz", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1psrctylgxcljnznqadmadcer9cww2dwcw7da4x", + "coins": [ + { + "denom": "uatom", + "amount": "6060000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pthu4mfl387qmuw78p4mf3q2e53cfhntjr9jk3", + "coins": [ + { + "denom": "uatom", + "amount": "22609000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ptvxv7mrc2j3d838dqzex6y79muyemgfasdwzg", + "coins": [ + { + "denom": "uatom", + "amount": "18601960000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pun5csgup6utufjcnamcasdksn07sj7pfr23v0", + "coins": [ + { + "denom": "uatom", + "amount": "3618000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1punelxh7ddptn3l7y66ap7jkma7wwucktuky69", + "coins": [ + { + "denom": "uatom", + "amount": "81490190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1py8pz0eqh9jj99dxtxg4tw72hta7j3laks0rys", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pyjq68qvtjknvya00w5lthmpax2rv49veqp5ec", + "coins": [ + { + "denom": "uatom", + "amount": "113073000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pywfvze6804ex9fqn76esgngg8pln2rqmdnncp", + "coins": [ + { + "denom": "uatom", + "amount": "16578250000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pz6yu5vdxfzw85cn6d7rp52me4lu8khx7lpkzd", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1pzvc7f2kyyu308ymmccyjc0qk8rev04rz4ef4t", + "coins": [ + { + "denom": "uatom", + "amount": "984810000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q0856f9c8wap7a9lgc7a8f8zpe8qp9ltqw4uda", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q2whngssgsaar9hepyneca25f8du3qpvd7wvk6", + "coins": [ + { + "denom": "uatom", + "amount": "608648960000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q4jlqdxsd2r0ch9k8e5m0wt0r2lgyjq8s72auf", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q7fqlrrds6dsnz3qgrar9ewfx70cpd6a48qksm", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q7rlfnh2kv8d3cf6jfn857434tmdyax3dkktm5", + "coins": [ + { + "denom": "uatom", + "amount": "20353000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q8zznpjplw28lyl9a4nkelywx2dsc5c6k7zl0y", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1q9jn2rmzvylgd3m7pevnltw25l2na3ym88ktcp", + "coins": [ + { + "denom": "uatom", + "amount": "31770070000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qcgc3qddheqtwapjux77g65zl95mwfdrdxqe8k", + "coins": [ + { + "denom": "uatom", + "amount": "312087000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qd432aem98lvzpjcq78gvzqputgcs0906tltef", + "coins": [ + { + "denom": "uatom", + "amount": "40010000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qfeq0du5mul8xeru8kzrsr9k3dhdcaw5cruy7a", + "coins": [ + { + "denom": "uatom", + "amount": "10000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qhq9k9nze2qj2ssgcqvn2p9dss8gde74dwgv3y", + "coins": [ + { + "denom": "uatom", + "amount": "2108260000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qhutftnqgkgct4gwwugf2flpk5xqhw37zxvw6j", + "coins": [ + { + "denom": "uatom", + "amount": "2974760000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qk93t4j0yyzgqgt6k5qf8deh8fq6smpn3ntu3x", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qltk6ax7knwm2w35heldnh2ac50mwvjucdn3r3", + "coins": [ + { + "denom": "uatom", + "amount": "38445000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qmrcjzskgtlwmfs9pqdrfpmp5l5c8p5r3y3e9t", + "coins": [ + { + "denom": "uatom", + "amount": "127974530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qnjpy999uhmvn99ql45206gxed7j0fz5k33gmv", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qp7mt75j9g3vtq238gkytjc70zpzkz783hhyl2", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qp8danhdx66c9mhnlmsfk9zj45e0yju82r5a7h", + "coins": [ + { + "denom": "uatom", + "amount": "1134000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qq2c4klc6q3cu6nay4y08kxpxz7lx6w22f9vfe", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qqp837a4kvtgplm6uqhdge0zzu6efqgujllfst", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qr37tv743eeagr97qzdy2p26m5gfh34upgx2gk", + "coins": [ + { + "denom": "uatom", + "amount": "271380000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qr5dttjyacpzv9jadtljxumqfxt3n2xz24nlm2", + "coins": [ + { + "denom": "uatom", + "amount": "7088040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qs5jvg0y038dclggauk680ew3dzzjfatkzy4u2", + "coins": [ + { + "denom": "uatom", + "amount": "100775000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qs8tnw2t8l6amtzvdemnnsq9dzk0ag0z37gh3h", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1qtg904z3ewk64dqrurwfy3z5ml2yy7lfntuwlz", + "coins": [ + { + "denom": "uatom", + "amount": "1696000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qus2wghpxqqjmeez9reepxp0f4cpeay446c74c", + "coins": [ + { + "denom": "uatom", + "amount": "232690690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1quzyy8gg59p9epvrlp3ac26y7vmu8snxatlw92", + "coins": [ + { + "denom": "uatom", + "amount": "64226000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qv5u4lpujwzyk5t5dp7plm0vceke4680zdaxad", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qw4wqnpa6dg4lhx37l66zpk9ahxege2jgfrhsl", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qwl879nx9t6kef4supyazayf7vjhennyjqwjgr", + "coins": [ + { + "denom": "uatom", + "amount": "55000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qx2r2hfs6d5pmqrv5ysgpg6ekjy052ucv2hl2q", + "coins": [ + { + "denom": "uatom", + "amount": "4954680000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qx7e97ucf9lgxuymvnrgvgveh35hkls5w0jl5r", + "coins": [ + { + "denom": "uatom", + "amount": "5220380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qy54a0n0qca3mc20ahcazg0fvq7td9sz2nzrx4", + "coins": [ + { + "denom": "uatom", + "amount": "232690690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qz9k9tyz5yar7lpwmwashscs9ug3muwpgrlrj0", + "coins": [ + { + "denom": "uatom", + "amount": "17442030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1qzny67usplncefpwpy29pa34vjasw76t2rlwhz", + "coins": [ + { + "denom": "uatom", + "amount": "56537000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1r3xvguuhwvlk34esxclvrh3g7ycmcqqc2kcn9v", + "coins": [ + { + "denom": "uatom", + "amount": "1005010000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1r69aysu2evn03y8cmmj4hjpjy76yvx4l0nhxm3", + "coins": [ + { + "denom": "uatom", + "amount": "54276000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1r8kyvg4me2upnvlk26n2ay0zd5t4jktncnrz2j", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1r99ewt8lfm8ukqy9l5mnwzahklcc9sr7hpx49n", + "coins": [ + { + "denom": "uatom", + "amount": "19167000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1racgy2z2rn20gsllpudhehnrxsvkfh5ekums9m", + "coins": [ + { + "denom": "uatom", + "amount": "90000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rcp29q3hpd246n6qak7jluqep4v006cd4v7r6v", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rd03uq9lgw0pzq7j6fe48pf5gwxqmkv2dwmtqw", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rfpar0qx3umnhu0f6wjp4hvnr3x6u538qdmsep", + "coins": [ + { + "denom": "uatom", + "amount": "243860290000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rg5k9w2yfe44nxh9vzvnta7mmkhp5cxmyu6ye8", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rghlnnl4kx0773sjvglt69az6qp0n8yfnf0kv9", + "coins": [ + { + "denom": "uatom", + "amount": "5798880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rjptzea522cy83xkxk7rqrdtdr4n9j570kjetd", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rkf3ppe369h4lhkpsezxy8d4tjtk3xkd8frmcm", + "coins": [ + { + "denom": "uatom", + "amount": "1402000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rlw94njeqhtqd2hq90stlfzd7s37am0f6nqamy", + "coins": [ + { + "denom": "uatom", + "amount": "271380000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rn7nwwys7823d79pguzg2y0hu94e83d5chllg7", + "coins": [ + { + "denom": "uatom", + "amount": "27590000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rpgtz9pskr5geavkjz02caqmeep7cwwpf29g2p", + "coins": [ + { + "denom": "uatom", + "amount": "1163490690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rqq5xpqnlsrjthylt3slqceeae9uqds86ra8rr", + "coins": [ + { + "denom": "uatom", + "amount": "46530690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rrn636u3vc3qvuu9lyg8eef7yqemn2t6ytuk3t", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rwh0cxa72d3yle3r4l8gd7vyphrmjy2kydpnje", + "coins": [ + { + "denom": "uatom", + "amount": "203535000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rwy66drn0kqxy55g9f25at895twg83tpxhs8nq", + "coins": [ + { + "denom": "uatom", + "amount": "2201340000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1rzwuwnwnwu7j8qtw2c8qynygfluzlz5he634v3", + "coins": [ + { + "denom": "uatom", + "amount": "3975257000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s05va5d09xlq3et8mapsesqh6r5lqy7mnr69mg", + "coins": [ + { + "denom": "uatom", + "amount": "19770190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s0aywgc6rucfscng07fnw0fj836mhz6m8rvxdt", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s0pwsadgef938vydcjt054udf9npjm6nhsaqt8", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1s24ht39ea9pquwa2ry3zwd4ahlq5zlj5pgakzr", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s2husgn2kge2tzzghjjs64cq6y3td6nz3n97ew", + "coins": [ + { + "denom": "uatom", + "amount": "20351940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s33lvg063nt89wfwzfr39enhukz0f5nzq43hwd", + "coins": [ + { + "denom": "uatom", + "amount": "610821350000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s65zmn32zugl57ysj47s7vmfcek0rtd7jd2mp2", + "coins": [ + { + "denom": "uatom", + "amount": "3000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s6fa7qfsddlgyjvyp34c8ess04knzsvc5dxu0x", + "coins": [ + { + "denom": "uatom", + "amount": "93070690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s6g7nh629lkgz4merqa2fs4dmz3mt3k4eqa0xp", + "coins": [ + { + "denom": "uatom", + "amount": "44552740000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s6mjam9nzl0wrm4n4hdalhafzqf6mj92q3htvx", + "coins": [ + { + "denom": "uatom", + "amount": "8839410000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s6t3wzx6mcv3pjg5fp2ddzplm3gj4pg6g996zm", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s6x9fy4wc49wj9jx4jv6czredqsmp46hmc8rxn", + "coins": [ + { + "denom": "uatom", + "amount": "203539000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s7jnk7t6yqzensdgpvkvkag022udk8429exc87", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s7lvr6csak9w727z0kqs49rk3c9scvxmspflvz", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s7nxav9fmfd0ssygpwjgcg8w9wngauhrk5c77d", + "coins": [ + { + "denom": "uatom", + "amount": "105295000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1s8l4s0yzael6l0nah84epxh5yz5cf76u89ytdw", + "coins": [ + { + "denom": "uatom", + "amount": "2899440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sawg4pzgggemd7c8r2clqnxvad9wn4zgwrpsen", + "coins": [ + { + "denom": "uatom", + "amount": "13569000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sc5tqjr3nj9tag26esellrq5lv8hkjcpuj959g", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sdf80g92at333j0r3hfh3ksuqgpg4f07y22d88", + "coins": [ + { + "denom": "uatom", + "amount": "69791380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1senvv2u54yrsvkq9yx6hcyuvztnxrsvkuzdenh", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sf3c52je20nlsjdv52e0z5lazhq0qfdwpxyjln", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sg3fl5xfzws0qy9vumwxjmh39etytarm03jh88", + "coins": [ + { + "denom": "uatom", + "amount": "232690690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sgfw5kye6gt3rd54l9tad35sretmerqd08u7t3", + "coins": [ + { + "denom": "uatom", + "amount": "11637330000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1shnytr97ayetf0jnfagzevg6eukxrt387dsz0w", + "coins": [ + { + "denom": "uatom", + "amount": "440992000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sjllsnramtg3ewxqwwrwjxfgc4n4ef9u0tvx7u", + "coins": [ + { + "denom": "uatom", + "amount": "20000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sjnp34784gv5umtzh738vzges7rd5w7pzeq82t", + "coins": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "14750000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1skv2quty6zavcqfrnq746ll2pmyvj2739yy4gp", + "coins": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1sm0huqu76wjug6cwkf3szft00v9v7jmgthlcqz", + "coins": [ + { + "denom": "uatom", + "amount": "284949000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1snkhgrjm7psup3stcls2w05zagkdgznjuyy6kj", + "coins": [ + { + "denom": "uatom", + "amount": "255960690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ss2mv7my5wfnu44dlf6l6twvwa7as02ex9338k", + "coins": [ + { + "denom": "uatom", + "amount": "477724170000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ssm0d433seakyak8kcf93yefhknjleed4psy4g", + "coins": [ + { + "denom": "uatom", + "amount": "1000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "1000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1st2m8wtzue48np8s23dde9l4k48ysxq6q2u38y", + "coins": [ + { + "denom": "uatom", + "amount": "134887040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1stdsvfck3f57sket7ctgu2t7ttv8fryd8prxa9", + "coins": [ + { + "denom": "uatom", + "amount": "17675890000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1stgjr5njfle7l7n6dfz7mp57qlh7szaa8fuksl", + "coins": [ + { + "denom": "uatom", + "amount": "21258000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1stzck6a0k43pl9ejnk5tr43w608sxrmasfnz3t", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sxt8m2p2utvk6l4eujw9stw4v66vg6etr4dqq7", + "coins": [ + { + "denom": "uatom", + "amount": "17443190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1sxx9mszve0gaedz5ld7qdkjkfv8z992arw3rr5", + "coins": [ + { + "denom": "uatom", + "amount": "15000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1synyl86cpvgdulaema06q0fpgyyl6dhfqflgly", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t089vcqvwj8zjvjsgcs6536d2mnrsy35kdzdpq", + "coins": [ + { + "denom": "uatom", + "amount": "40254000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t2l9gzea970hv6t76yplde6p5hy439uyajnkl4", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t3k2fuwz3st27dhdxylp9l2wkuwyhwupsvg58h", + "coins": [ + { + "denom": "uatom", + "amount": "2783090000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t4474v5qw68n0aqepvv604vv2pya7cawg04arf", + "coins": [ + { + "denom": "uatom", + "amount": "633000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t4d3puws6ekq3ea04hvl7xezktwm9vsdj6y2xx", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t4vumykc5a6pqh9ccx9p3s97jkdnwgs86ncp0w", + "coins": [ + { + "denom": "uatom", + "amount": "500017000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t5yzs5976z4jt4pqw6fugdavduplj3u0l6ur8u", + "coins": [ + { + "denom": "uatom", + "amount": "8716940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t65vwu5cfm2hkg0dypfum3yqvra7nl4k9fv4ph", + "coins": [ + { + "denom": "uatom", + "amount": "1081000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t6sa50ndrz86n5capmykgulq2sdjjnx4r2exsa", + "coins": [ + { + "denom": "uatom", + "amount": "9498000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1t8axgkx2gr823z2yqw0k7plp9w5juse0glfg26", + "coins": [ + { + "denom": "uatom", + "amount": "349492000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ta4h8d3nmf26jnmterl9a0m3xjvfdl48aqhjwg", + "coins": [ + { + "denom": "uatom", + "amount": "23609740000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tafzj3shqtft48t76pr6zmf4a90qh898fc5sqd", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tamutt3kjme06pz37jgm2x6rnrkhn0drz3dh92", + "coins": [ + { + "denom": "uatom", + "amount": "7236000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tdzsht8v3q5jnl2w7shq95ftlnqw7ny3a9c4mj", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tf9s77gwa8ad9xu3spxu2lw9v0ax88g2fe5ksn", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tfu7cuvzqnfw5tkk2mvl9vufah3tckw90s6zhl", + "coins": [ + { + "denom": "uatom", + "amount": "4985210000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1th5psrspfm9sam0k0d2tvsg4gkufccm9tzpr3g", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1th5r9ln0w7mcfcf4dst20qq3spyqqamerruc6x", + "coins": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "11000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1tj7hxdkt02ueu7qu3gr9djnslduv4pqzeq7d8f", + "coins": [ + { + "denom": "uatom", + "amount": "1895000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tj8llq623cux08lu6cpw5nqfrrmhj2khgl0p4u", + "coins": [ + { + "denom": "uatom", + "amount": "1149450000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tk22p4e2uvce5y4m5swvc3ll70xenrt8x0sf37", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tk45julzpkclj3ff7khx368f2fph0lrk3gstj0", + "coins": [ + { + "denom": "uatom", + "amount": "5807030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tlmk432tny2aca5hjunkyqpx4mulunj293u290", + "coins": [ + { + "denom": "uatom", + "amount": "5105000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tlrwaqseh9rkwv0hswseu859w5uca3ve32ehnf", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tlsky8ega2e0xvnzl0j6hsmch7ygz22qq250e2", + "coins": [ + { + "denom": "uatom", + "amount": "452300000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tm7ju9fa42e2lwszpcasshgx39arftpqrjxewx", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tml59gl7qflpaju52mtemexw0ss0q0fnnze0ag", + "coins": [ + { + "denom": "uatom", + "amount": "50011880000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tphkrxqtm7j9pqzvdklnapc9jqp3l5yn78nagm", + "coins": [ + { + "denom": "uatom", + "amount": "2493000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tpnyr6y9ayn3kte0pum2cj8mhl0dk2uv73qadn", + "coins": [ + { + "denom": "uatom", + "amount": "308440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tr5var87ga3fyy9d0r76uurpmkfm05rg52jg5q", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1trqsnq9jkugpslstnf0y3rpl0qwzs0zfp46fr2", + "coins": [ + { + "denom": "uatom", + "amount": "432820000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1trtdsqckllr0lyszm0c0v4rz8qxjhjvhjwaphv", + "coins": [ + { + "denom": "uatom", + "amount": "4514000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ttj5h6n4kpmhda8m08qeugppzglf33z6y2h7k0", + "coins": [ + { + "denom": "uatom", + "amount": "8593000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tumrwcmgtz8sj7yvux457cwv95g4n4wz9ykdpk", + "coins": [ + { + "denom": "uatom", + "amount": "497077000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tvqhaznwr8vc8e746esugcet4sk6p5ptaf8yut", + "coins": [ + { + "denom": "uatom", + "amount": "34890150000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1txqn8qm8cj3964j28guffxlcpcrydcpce5v80e", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1txugpka5zzffaau7hlqqgxye2qk4ekyzkl0t3m", + "coins": [ + { + "denom": "uatom", + "amount": "8500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "8500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1tysr6zanywwwqq2t23ajvu3qv6vfluz7fpayw6", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tysu7n60waa24lsr5t6qpn5qs59tpqgh094jlf", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1tzkmqgpwtv24xjjwjrp005z96jptrlv3gpu7l9", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u2w2c7qj6p2xellxmqd6gllc8ly6dcunvgw7r9", + "coins": [ + { + "denom": "uatom", + "amount": "2899440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u3vw6awaxhrhzg8t2f2tqgscuej2rl99e63mm7", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u60synv0qpup9jr0nmlzwgpan3gvaw6w3g9zfr", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u6ddcsjueax884l3tfrs66497c7g86skk24gr0", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u6f8zgdrvyj793ahpzgnz69uxl9say23xuhh9q", + "coins": [ + { + "denom": "uatom", + "amount": "113075000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1u9km7tuma5w9tg4lpz0zw97jy7n6ey9p9z7kxg", + "coins": [ + { + "denom": "uatom", + "amount": "5807030000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uafmj8ygu0m8hec0e30uztk005x4mjyu7lu4hw", + "coins": [ + { + "denom": "uatom", + "amount": "95427000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uan2eh7lqapfjj8aze84lgc72skvtle9dk4gmz", + "coins": [ + { + "denom": "uatom", + "amount": "46530690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1udqmh9zttxerhht8m9cf0xpntyqdmjafdq3y2l", + "coins": [ + { + "denom": "uatom", + "amount": "136110000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uevc8wcnzq29ma0apnmanwaun7ulerj8x7n8a5", + "coins": [ + { + "denom": "uatom", + "amount": "4620260000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ufs8s3ttfy99m8fns6mf5uk7rumwkufwq59kjg", + "coins": [ + { + "denom": "uatom", + "amount": "22388000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ug4p9pyeqnfd2kvtvgl5ulu2h7k428sywsvrra", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ug6gutaanays5x2yglxwdth205n4auu6k3jj3c", + "coins": [ + { + "denom": "uatom", + "amount": "119243620000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uhnsxv6m83jj3328mhrql7yax3nge5svxcw7kt", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ujqvs49hfldegaygjhsu3zc6g2n5vpwleg6uh0", + "coins": [ + { + "denom": "uatom", + "amount": "4644690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uketaldk42ddqk5l476r5n52005thvuqsjaxvv", + "coins": [ + { + "denom": "uatom", + "amount": "59090830000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ul2me6vukg2vac2p6ltxmqlaa7jywdgtz5203m", + "coins": [ + { + "denom": "uatom", + "amount": "1020388000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1umc5pztqz8qrnjrvlkaka0esasgcwdem5hl6mj", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1unc788q8md2jymsns24eyhua58palg5kc7cstv", + "coins": [ + { + "denom": "uatom", + "amount": "6083156550000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1upa3etjxpjr2j39p7h2fpxs02mlkuwkk58uhtg", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1upxh3pgpvfs43jav04e5st8p5htyyff6ejv6cs", + "coins": [ + { + "denom": "uatom", + "amount": "104705690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ur3fagntpk0fq8jk37pz9sdzqky6527gk7uphg", + "coins": [ + { + "denom": "uatom", + "amount": "232687540000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1urde3ce4xxvg79fav0aarquhdvavy2dlmwn49l", + "coins": [ + { + "denom": "uatom", + "amount": "81414000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1urtpxwfuu8k57aqt0h5zhsvmjt4m2mmdxmxfwm", + "coins": [ + { + "denom": "uatom", + "amount": "12680290000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uv26ytrnmydyctq0s58ve2k6wn2p653m9yn69g", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uwdfjpacp89yv66h995klvmyw25s0kx3zuqx2w", + "coins": [ + { + "denom": "uatom", + "amount": "1130000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uwgts6wgmqj2l702dkd5kc8c429ntr26fzzc8h", + "coins": [ + { + "denom": "uatom", + "amount": "3316910000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uwvxkzvcy4p2t5aq07dzkyze2p3e2rkg8w03jj", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ux99fvzsve0dzfrjj3p8nwemjkph3xutjufk67", + "coins": [ + { + "denom": "uatom", + "amount": "2260000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uxh465053nq3at4dn0jywgwq3s9sme3lc9ek2f", + "coins": [ + { + "denom": "uatom", + "amount": "15378000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uxs50xa9s0fcqjhkuyhn52qng5pjl07nkhse58", + "coins": [ + { + "denom": "uatom", + "amount": "147860000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uyvpffp3skd84s7jfcnlwpjfp8g32luxpl27jw", + "coins": [ + { + "denom": "uatom", + "amount": "818000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1uz4wtx83k6vaj666tnc7jg6hd3gmgsd962qst9", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1v0zu2hd2z2tr7q3gdrqw9jdh84tp407wdeluu3", + "coins": [ + { + "denom": "uatom", + "amount": "10855000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1v5s04rfryjd2606q3deauz4jlar3p4vcddzgjq", + "coins": [ + { + "denom": "uatom", + "amount": "34890960000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1v60nl7wzelzush0c0vqata60pjffc0rxe7xkfj", + "coins": [ + { + "denom": "uatom", + "amount": "5879000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1v864d3j7gagyud93a5ywnzk30mhm5ud4gf0l0c", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1val86306r2s4pdvax0nfs44u8vv6f08eekc8mv", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vam7f3edpkgn8nh8zxdvf47lwhgem0qqu4n36u", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vcqgjz8dgu4n28rr7yw74dzjcjhaesep0kyrtr", + "coins": [ + { + "denom": "uatom", + "amount": "512573800000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vgd0w955mvvgluhhywewz6g04nyfdkf2mnp7r0", + "coins": [ + { + "denom": "uatom", + "amount": "17443190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vjhuhye9eq389298vm0guya0n28z7xerte6pyq", + "coins": [ + { + "denom": "uatom", + "amount": "12077690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vjqault583hwktfj63k2hh7r02sj2a66v0chv3", + "coins": [ + { + "denom": "uatom", + "amount": "2261500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vjrx0lks65yefnsz4xk92vugda2z25esym5ypp", + "coins": [ + { + "denom": "uatom", + "amount": "639915690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vjsrfv693ng3f7jafduqdljmh6ynunwgsl4j8w", + "coins": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1vjz9ddg0dppsrkk73wuc4qjuqpkj8647zfkgd7", + "coins": [ + { + "denom": "uatom", + "amount": "6106000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vk6n2u902vd3keafeanppp6rgj5apdz89yu6rk", + "coins": [ + { + "denom": "uatom", + "amount": "13848000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vmex3mcg43fcp7skpqg3s4ucuq5xwh4q597xkm", + "coins": [ + { + "denom": "uatom", + "amount": "45139000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vp8w0ayytg5hkqwafggn8sg7m86dylc5hm3vv2", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vpwnq5sfxwgl94tmxvshjvwmgcnl3yku484pxm", + "coins": [ + { + "denom": "uatom", + "amount": "3825000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vrl8z2t4sh28l052zw09x5f6yuxuaqnz5ngx5c", + "coins": [ + { + "denom": "uatom", + "amount": "678000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vrlt99wgwwdpukhu9nf5yaps0yc4khqn33uktr", + "coins": [ + { + "denom": "uatom", + "amount": "1130750000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vsa3xfa4w46ysvvm5a4qtpsuev9f38k6r9agnj", + "coins": [ + { + "denom": "uatom", + "amount": "4062940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vsw4244aesg3u2ekygxtkmhv6v09ja24wszz06", + "coins": [ + { + "denom": "uatom", + "amount": "996420000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vt9n9ccueagv5ye6pdenfteseuctchut89cfzt", + "coins": [ + { + "denom": "uatom", + "amount": "452000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vu5uw0447u6d7a8cntnlyn5d45qqh2xdpvs240", + "coins": [ + { + "denom": "uatom", + "amount": "7981610000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vudtpjyplxrau4822u4uu9kfkavdfxg4gzms7a", + "coins": [ + { + "denom": "uatom", + "amount": "18092000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vusvp7jl4qkrg8ump6lppknv9vjd6ynhvvzdag", + "coins": [ + { + "denom": "uatom", + "amount": "21242140000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vuxqxymmpa2csgv4sdz9uw2ctxmxhp6txvalgl", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vvc7x8zv8tpqtuwyt0e2ct938r3yjwp5px6dd2", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vwcjdfgz8fqweapnzmwqutzntxuxdqslza6kzl", + "coins": [ + { + "denom": "uatom", + "amount": "666666670000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vwedycp8u53pywr7q03rzsrtc3jr9nzvj9nfhg", + "coins": [ + { + "denom": "uatom", + "amount": "151245690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vwtv6ryr49usqxckhd8awk4yl6ghhfkcjzag4r", + "coins": [ + { + "denom": "uatom", + "amount": "135690000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vxh2hsg7qmnljw23t4u4nfmdfp60kfhlletcw6", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vxkye0mpdtjhzrc6va5lcnxnuaa7m64khj8klc", + "coins": [ + { + "denom": "uatom", + "amount": "1266440000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vxn96csepjh44zn9994zjr5m2yvlhz00v2m0ee", + "coins": [ + { + "denom": "uatom", + "amount": "10428450000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vymppkgus2ez4xy0xuuh82sehc9vz85htjfr8l", + "coins": [ + { + "denom": "uatom", + "amount": "471975000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1vzj0lluc43k64gagvy9wsygh33dk84h07a3rsu", + "coins": [ + { + "denom": "uatom", + "amount": "393486390000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w0494h0l4mneaq7ajkrcjvn73m2n04l8mx7xuc", + "coins": [ + { + "denom": "uatom", + "amount": "110523190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w0wd6wqg5h05ma2jlnn8vpgmgylkwlj04xn4kh", + "coins": [ + { + "denom": "uatom", + "amount": "22615000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w2dnvs7ea7xh0z8mda4s8a5rrw2jtxmwgw9xs0", + "coins": [ + { + "denom": "uatom", + "amount": "10113140000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w42lm7zv55jrh5ggpecg0v643qeatfkdqf5ua6", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w4w5zkxs6yvqc2qrvfyzpgdew7weupzlmdwat8", + "coins": [ + { + "denom": "uatom", + "amount": "1154190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w4yjwj3xkfhxpmleen09r43a8x5flple06f24q", + "coins": [ + { + "denom": "uatom", + "amount": "8716940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w5cun0sk4h9qznqvp9n04jr5gtryt585jhpg97", + "coins": [ + { + "denom": "uatom", + "amount": "94000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1w7r7juymfdfk5gwjrn4m9ed8c6t7z0mv2j2tdj", + "coins": [ + { + "denom": "uatom", + "amount": "500298570000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wak4cqy6xe0e7qg48awmrx6hy2pcakpel6lvm7", + "coins": [ + { + "denom": "uatom", + "amount": "1141647140000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wctg56a2sry7y0s0q9hrps94pydpp3s6dc40z7", + "coins": [ + { + "denom": "uatom", + "amount": "250442210000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wdl73a63fpazz2yu5kt2043ttssssdwwuh5xgj", + "coins": [ + { + "denom": "uatom", + "amount": "45682000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1we6knm8qartmmh2r0qfpsz6pq0s7emv3um0vsa", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wejum9vngzlpaxjpa70f9w4jrs5rscx8cm7j2n", + "coins": [ + { + "denom": "uatom", + "amount": "69800690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wf3sncgk7s2ykamrhy4etf09y94rrrg43cdad7", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wg4hsxrhxzh5zc7d6nh0rydlchtjqpe6jls03w", + "coins": [ + { + "denom": "uatom", + "amount": "40707000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wgxc064ufumuk4d0yeg88t35lu36shey0m236y", + "coins": [ + { + "denom": "uatom", + "amount": "58165690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wk30uz6drwuz7vkjrml5jthn0c0m3yhdqruu6t", + "coins": [ + { + "denom": "uatom", + "amount": "35225000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wl34gmc5taa5h8dcr8rs3cmjdu7h0cy5cm2e39", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wqyzk3w0u50jr8c4ywdjrc7zc7rasdgmuhjtse", + "coins": [ + { + "denom": "uatom", + "amount": "823869600000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ws4uldqhet3td5mvn8p67f2m4dc9hd0gg6mr7f", + "coins": [ + { + "denom": "uatom", + "amount": "45348580000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wtv0kp6ydt03edd8kyr5arr4f3yc52vp5g7na0", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wv22tswlg3ll44zv33qvtktlra3dzf2q2tp6sa", + "coins": [ + { + "denom": "uatom", + "amount": "13481470000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wvyvy6xjcsmc7z7dxafsahyh8vzkx9cmknw42r", + "coins": [ + { + "denom": "uatom", + "amount": "235816600000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wxwt28758hs0efju99y7h74gkr4p9nn5yps04y", + "coins": [ + { + "denom": "uatom", + "amount": "226150000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wy5wm52aetuz0zlsgczducvat4rt3klmenddnd", + "coins": [ + { + "denom": "uatom", + "amount": "27137000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1wz5hhslzj2zh7jspspyzs80l5tc72t9crw89z3", + "coins": [ + { + "denom": "uatom", + "amount": "6784000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x2eu920g3j8lr7uk3j36mlx3wgr94y5w9urw8s", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x3aysmuw5aay9cwfpchacnhh9kqazec8uc0alv", + "coins": [ + { + "denom": "uatom", + "amount": "8000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "8000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1x44ehmsaf8tpw6jsexxhgp04zg2fmz8v05x4yz", + "coins": [ + { + "denom": "uatom", + "amount": "1377580000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x53k8gwzy9nvrsrlf4pxhl76wy9efmhhrqqdgn", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x87epck7c83fhmpwfpr0cwd9ytptlp87r6shvj", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x88j7vp2xnw3zec8ur3g4waxycyz7m0mcreeaj", + "coins": [ + { + "denom": "uatom", + "amount": "271380000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x932mup5wtkrgmmrve4d93q2r2gvywe8gz02qa", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1x9au3m6xwp6u3wrvl64jrxd9tdq5mwk86f0vf3", + "coins": [ + { + "denom": "uatom", + "amount": "34893360000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xd8mwh3gjwqmpzsh2gu64j9vqdl2qz7v5kq99u", + "coins": [ + { + "denom": "uatom", + "amount": "11759000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xdq8z0f04857d585pt5qusu0vah4akghq06fw6", + "coins": [ + { + "denom": "uatom", + "amount": "11624000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xgfc763f5mt3283ahu7ajjhks8vtg2nhsv3xfs", + "coins": [ + { + "denom": "uatom", + "amount": "10000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "10000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1xkaurjjuyskmwlss9dpdd44vuf3j4agv64y94y", + "coins": [ + { + "denom": "uatom", + "amount": "499242540000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xkr952sj2f4xnhcq785w0ujj5yj5s50wfj9tvc", + "coins": [ + { + "denom": "uatom", + "amount": "34895690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xl6453f6q6dv5770c9ue6hspdc0vxfuqtudkhz", + "coins": [ + { + "denom": "uatom", + "amount": "116340690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xlql2yz8jw96c66m693pldzhqw36hzeq88urh0", + "coins": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "110000000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1xn58cd3dth3sjtsukm8j4tar2yverjk9nkrzfw", + "coins": [ + { + "denom": "uatom", + "amount": "11594390000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xnh9rtnq2fwhkrjvak93346a30kmatk0lpzqp8", + "coins": [ + { + "denom": "uatom", + "amount": "9051120000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xppn98w0gg6wl0q2g2nasmkqlf2elwpkl7fc5y", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xtd2tgzj8tkeduj7fne64rwc6rs40x8m95rv6l", + "coins": [ + { + "denom": "uatom", + "amount": "1809000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xu5c29muv8dxk63ya6h3xfqhqnzrxdqpmc0kmp", + "coins": [ + { + "denom": "uatom", + "amount": "2713000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xum25ncl3svu8sptzqkr45gkrmd8jr7ksdmz0q", + "coins": [ + { + "denom": "uatom", + "amount": "101617000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xx3aqk6cel64jr5cmz8am4asyrffgyp6cpu64z", + "coins": [ + { + "denom": "uatom", + "amount": "11397000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xxpgxrhf7wtc462zpx7f57umcm45fnqj4334q0", + "coins": [ + { + "denom": "uatom", + "amount": "219817000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xxwvuvjvwzm60y5d79ju4aez2ullwxuw6qy3ps", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1xz0n6fp570p23txzs0kex79tjhtymsghlwtzjf", + "coins": [ + { + "denom": "uatom", + "amount": "232690690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y0neqnxfpdekxkhegkgvztzckq8rhyumx83k6t", + "coins": [ + { + "denom": "uatom", + "amount": "98888190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y2q70f9jmdj8857nwz02xa7zyjd7a33v3eqlu7", + "coins": [ + { + "denom": "uatom", + "amount": "30584000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y32l54dp5huuv7mx8t7xefpe4vy3gqa77uj4yh", + "coins": [ + { + "denom": "uatom", + "amount": "180920000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y4jjwr9d4w0dg8wve6fn9wfgrgr3armjv2d3p2", + "coins": [ + { + "denom": "uatom", + "amount": "257217270000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y5v9twn4pypaudmhkf4p0hzsl4plgvgyvkagmv", + "coins": [ + { + "denom": "uatom", + "amount": "1333333330000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y5y7tutmzwuplxt63pw5s5weafl9vjvkecw4ed", + "coins": [ + { + "denom": "uatom", + "amount": "5556530000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y740a2v76mlnydq0kez9vvfh3s3xhw84spxey8", + "coins": [ + { + "denom": "uatom", + "amount": "2311870000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y7arffhms3jhh955a647fvdst375fmfl655438", + "coins": [ + { + "denom": "uatom", + "amount": "13921240000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y8h0gzrdhfc3ptluavpq3v74vj9dg8478x9632", + "coins": [ + { + "denom": "uatom", + "amount": "66940000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1y9yu4vvxshxqzy904qgscvlvph5xh5ksmnp77n", + "coins": [ + { + "denom": "uatom", + "amount": "11614060000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yahqdasye5d79uqyq6rdk8q2vtrq24w6pjuuny", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yazk9957eem97zcy3hq9aqjexnh3vy2khfjz5c", + "coins": [ + { + "denom": "uatom", + "amount": "232681380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yc3sw5kj867csny2t23py8j6c2ne2n3xpl7935", + "coins": [ + { + "denom": "uatom", + "amount": "35361090000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ycf7umr5vj9qmhgvpwy5r9vv564fdcgxnyc8n2", + "coins": [ + { + "denom": "uatom", + "amount": "1130000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yct7yameeejv8ljy959vy4v5ywl93ataasfdks", + "coins": [ + { + "denom": "uatom", + "amount": "90000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ydesvs9m0aqg8gsfcwc2f6dfya2xar6crf65zw", + "coins": [ + { + "denom": "uatom", + "amount": "3172430000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ydewfzrdlx83qcl5xzta2x04duru8vgc39e97g", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ydsqs2p3r529rrp5rpsn54flv7lygw28kq43ku", + "coins": [ + { + "denom": "uatom", + "amount": "2668000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yef6dalq4amrrlaumd9uy4jq2j6ym8xjrplmp4", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yenask6kcrdkadhnwhterzj5agsmd3qp9ns2lx", + "coins": [ + { + "denom": "uatom", + "amount": "226150000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yfjealyy4svdsktws79nk2rrk0xtnfwjff2s33", + "coins": [ + { + "denom": "uatom", + "amount": "5317190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yglfznjlrdwq3n2wtsf0m2ekrjmvg0hylkh79d", + "coins": [ + { + "denom": "uatom", + "amount": "93070690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yh8gzq85gculfv4pq6h7dyjxjy4ljdep6vpysn", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yjp9yeqkcjzhucc2vwghq3nzwtv56f5y05xg2d", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yju626npdhx6lyfk80p0jmkk3rp0veldafnl9p", + "coins": [ + { + "denom": "uatom", + "amount": "598495090000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yl6l479x8sxg4naf0uxlta6tutk3qt7glarpmk", + "coins": [ + { + "denom": "uatom", + "amount": "34630190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ylz6tqpgz0flpl6h5szmj6mmzyr598rqe3908y", + "coins": [ + { + "denom": "uatom", + "amount": "5000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ymq7v8rqu2c4tmljrp6rtuyqtd9tgcza8r7ug0", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yng9j50r23j4nvmqdg6tyjmk4clnrq9d8yyqzw", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ypca4duq4atmfde35cpf9hzd8aa3nputvlrfxz", + "coins": [ + { + "denom": "uatom", + "amount": "337410000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yq579wvfak45g3mdvrj2a4pmsmmejwew33ggak", + "coins": [ + { + "denom": "uatom", + "amount": "4499000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yrt3mu0ryc3425tcvytfqvadvdq675wjma8td5", + "coins": [ + { + "denom": "uatom", + "amount": "45230000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ytef32w0uaz3z0vgkvp3rqslxtnlt9453rxr5l", + "coins": [ + { + "denom": "uatom", + "amount": "3604000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yuyzaal450k3mmdkwwqg5k3x3mva73g0pkrljs", + "coins": [ + { + "denom": "uatom", + "amount": "32568690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yvjx84cumayq9vpg76czm8ad33eq27t9xteerh", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yy7vsp09r4ejaymszul5whufu750m725kcw7sw", + "coins": [ + { + "denom": "uatom", + "amount": "9046000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1yz77vz7k2jf8z8wyeu7fh4rxvs02x0ua3rm4f6", + "coins": [ + { + "denom": "uatom", + "amount": "572440000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z0lzrc83s7uszl8camqs23xtd3z43wud9effa9", + "coins": [ + { + "denom": "uatom", + "amount": "90460000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z0ssgfj0khzf8fc6x2j28mysgalug8aeq6qnef", + "coins": [ + { + "denom": "uatom", + "amount": "7236000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z3qfattrhkxxra9mnxgpegh0q7l8jj86glk9e2", + "coins": [ + { + "denom": "uatom", + "amount": "107040000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z4zz489uuz8jasrwhhtxpzv0e6g20ya6gemxx5", + "coins": [ + { + "denom": "uatom", + "amount": "4523000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz", + "coins": [ + { + "denom": "uatom", + "amount": "14194031940000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1z9vvzlmce95ph8zm7g3zmd28tsgypu9g5wzcam", + "coins": [ + { + "denom": "uatom", + "amount": "6454580000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zahpv7wpr8xezu2mgqw7nfqc6zvzrp6lnr3ygz", + "coins": [ + { + "denom": "uatom", + "amount": "18996000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zded29cyakc0t9s5thjkm8404g3vesf4au43aw", + "coins": [ + { + "denom": "uatom", + "amount": "2798831000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zeuwy2zd3ww66luhzpsvqjstj77383wtwkm7hr", + "coins": [ + { + "denom": "uatom", + "amount": "19027160000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zexgegsg80lpyhk0anscets32eskcvs59vtl8m", + "coins": [ + { + "denom": "uatom", + "amount": "3618000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zfkep87pvq8grgkf7dslu4j3adpk5s4czj4gt5", + "coins": [ + { + "denom": "uatom", + "amount": "23260690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zg7q48ujrc5yvdc7egxx5wjdacth6mlew4rhz8", + "coins": [ + { + "denom": "uatom", + "amount": "860990000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zg8e4th5yhdnyc4reg4ynlquryqh6y6ul7dqv7", + "coins": [ + { + "denom": "uatom", + "amount": "11625690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zh6xxv0smkd3uszdltlxvcgr2ar6ax0gnm7p6g", + "coins": [ + { + "denom": "uatom", + "amount": "3868640000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zjsxej47y34srzyldvgunq6jx2uqtt7ha2jc5d", + "coins": [ + { + "denom": "uatom", + "amount": "174506380000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zksx3dj68w397hj02n64taxsqsp0jle64nmy4w", + "coins": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": [ + { + "denom": "uatom", + "amount": "18500000000" + } + ], + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "1584140400" + }, + { + "address": "cosmos1zkwwyvzqapxzvew7dyjza2mpj5t68zlur2wp3r", + "coins": [ + { + "denom": "uatom", + "amount": "18001000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zm7llltwd2cdap8f4gp7qtnrufp865sfmyg3hp", + "coins": [ + { + "denom": "uatom", + "amount": "22597000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zn6awjea0zd499vk8rkhhav0cjyy4jt349vpy6", + "coins": [ + { + "denom": "uatom", + "amount": "904000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1znjfq796hxmaj85sjmp7tvy0e50v8g8ghh6zlz", + "coins": [ + { + "denom": "uatom", + "amount": "226150000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1znww7wjy3qq8hqf9fg49qln7lmdgdpmqulxmjk", + "coins": [ + { + "denom": "uatom", + "amount": "2317690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zp6kg7qlmztyw2km2af4z5ruz5vn04cpq84vjk", + "coins": [ + { + "denom": "uatom", + "amount": "1000000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zqgheeawp7cmqk27dgyctd80rd8ryhqsltfszt", + "coins": [ + { + "denom": "uatom", + "amount": "1500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zr7aswwzskhav7w57vwpaqsafuh5uj7nv8a964", + "coins": [ + { + "denom": "uatom", + "amount": "6784500000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ztfk3dglwhskqyktms2ts4n8dgq62s46ug6s97", + "coins": [ + { + "denom": "uatom", + "amount": "10176000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1ztrlkfdx7e20quxahyhftvcvul82c2sxknxhf5", + "coins": [ + { + "denom": "uatom", + "amount": "6971690000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zu5twe54gddsz9drlv9s0jprhfl73dnrf0cqde", + "coins": [ + { + "denom": "uatom", + "amount": "5296250000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zvrhk7jxhdg4y2alpslswnfphg520wytz9e0at", + "coins": [ + { + "denom": "uatom", + "amount": "2261000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zxcxurm8gwp43n4efqms6484gkdnnq763w03t6", + "coins": [ + { + "denom": "uatom", + "amount": "34890800000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zxt0a26csdu4rzlegfz2mg4lfxru3l2ln568dk", + "coins": [ + { + "denom": "uatom", + "amount": "397920000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zyk2s4mguxej7chvf9aglrd29qmen0mxqt6gw8", + "coins": [ + { + "denom": "uatom", + "amount": "11307000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zyqm8gmermk5mfncpvkdapaa6az4yy7kyjwgau", + "coins": [ + { + "denom": "uatom", + "amount": "70106000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zyqxtvzqfadl8l7nksvtfs6letxkzhl7zf64kd", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zza99afg3y0vzcpqxcuqrxxnmhdk87yhhsfrs0", + "coins": [ + { + "denom": "uatom", + "amount": "5808190000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + }, + { + "address": "cosmos1zzumx3n287tkauya4dvm4lhzhhvtca6v57yz9v", + "coins": [ + { + "denom": "uatom", + "amount": "180919000000" + } + ], + "sequence_number": "0", + "account_number": "0", + "original_vesting": null, + "delegated_free": null, + "delegated_vesting": null, + "start_time": "0", + "end_time": "0" + } + ], + "auth": { + "collected_fees": null, + "params": { + "max_memo_characters": "512", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + } + }, + "bank": { + "send_enabled": false + }, + "staking": { + "pool": { + "not_bonded_tokens": "236198958120000", + "bonded_tokens": "0" + }, + "params": { + "unbonding_time": "1814400000000000", + "max_validators": 100, + "max_entries": 7, + "bond_denom": "uatom" + }, + "last_total_power": "0", + "last_validator_powers": null, + "validators": null, + "delegations": null, + "unbonding_delegations": null, + "redelegations": null, + "exported": false + }, + "mint": { + "minter": { + "inflation": "0.070000000000000000", + "annual_provisions": "0.000000000000000000" + }, + "params": { + "mint_denom": "uatom", + "inflation_rate_change": "0.130000000000000000", + "inflation_max": "0.200000000000000000", + "inflation_min": "0.070000000000000000", + "goal_bonded": "0.670000000000000000", + "blocks_per_year": "6311520" + } + }, + "distr": { + "fee_pool": { + "community_pool": null + }, + "community_tax": "0.020000000000000000", + "base_proposer_reward": "0.010000000000000000", + "bonus_proposer_reward": "0.040000000000000000", + "withdraw_addr_enabled": false, + "delegator_withdraw_infos": null, + "previous_proposer": "", + "outstanding_rewards": null, + "validator_accumulated_commissions": null, + "validator_historical_rewards": null, + "validator_current_rewards": null, + "delegator_starting_infos": null, + "validator_slash_events": null + }, + "gov": { + "starting_proposal_id": "1", + "deposits": null, + "votes": null, + "proposals": null, + "deposit_params": { + "min_deposit": [ + { + "denom": "uatom", + "amount": "512000000" + } + ], + "max_deposit_period": "1209600000000000" + }, + "voting_params": { + "voting_period": "1209600000000000" + }, + "tally_params": { + "quorum": "0.400000000000000000", + "threshold": "0.500000000000000000", + "veto": "0.334000000000000000" + } + }, + "slashing": { + "params": { + "max_evidence_age": "1814400000000000", + "signed_blocks_window": "10000", + "min_signed_per_window": "0.050000000000000000", + "downtime_jail_duration": "600000000000", + "slash_fraction_double_sign": "0.050000000000000000", + "slash_fraction_downtime": "0.000100000000000000" + }, + "signing_infos": {}, + "missed_blocks": {} + }, + "gentxs": [ + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "ATEAM", + "identity": "0CB9A4E7643FF992", + "website": "nodeateam.com", + "details": "Node A-Team promises to provide validator node operation services at the highest quality." + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "5000", + "delegator_address": "cosmos14l0fp639yudfl46zauvv8rkzjgd4u0zk0fyvgr", + "validator_address": "cosmosvaloper14l0fp639yudfl46zauvv8rkzjgd4u0zk2aseys", + "pubkey": "cosmosvalconspub1zcjduepq7jsrkl9fgqk0wj3ahmfr8pgxj6vakj2wzn656s8pehh0zhv2w5as5gd80a", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A6WjB8Rb39iqfkPqTU+2oNa/EFzhzCqo4MPNFiMgNQHQ" + }, + "signature": "pQAaAGR1XjxWsm+jKuKkSDwmjcr2pKKSahxf4sJ48UIDODvQb66bH3+ANa/LibPg7aGjyD4jwNU3xDdWrmMYew==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Auberdine", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.170000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.200000000000000000" + }, + "min_self_delegation": "10", + "delegator_address": "cosmos1vzj0lluc43k64gagvy9wsygh33dk84h07a3rsu", + "validator_address": "cosmosvaloper1vzj0lluc43k64gagvy9wsygh33dk84h0mf9ku0", + "pubkey": "cosmosvalconspub1zcjduepqfqhyah5dlxlnpwr8s3dmt7td8w5sug0vpfmmnkh9wuyymcuhh5zqfxqgg0", + "value": { + "denom": "uatom", + "amount": "21000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ai017zYj1UVWQKSvcSBv861jUmKYOdeyTcUpnRbOwkwA" + }, + "signature": "D6GB0XEU3qm7mrn5Bbj7+wV964B109XZ/g/aeDaf2Vh4e/JJor8eePON48+hds9QJCIuk9XefF2i2oQHoqPUQw==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Bianjie", + "identity": "A6DFF8A48236A5C7", + "website": "https://www.bianjie.ai/cosmos", + "details": "Core developer of IRISnet, active contributor to Cosmos." + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.020000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ssm0d433seakyak8kcf93yefhknjleed4psy4g", + "validator_address": "cosmosvaloper1ssm0d433seakyak8kcf93yefhknjleeds4y3em", + "pubkey": "cosmosvalconspub1zcjduepqrgyyjxpe0ujefxwnkpmqz9m0hj03y09tdz9lwc0s7mvy469hulfq69f8sd", + "value": { + "denom": "uatom", + "amount": "1000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AnJHwzfg3FEcviT+CFXhNpxiP5msBLZXJG2D3eK3dAdR" + }, + "signature": "vk32Ye5g0VlXclScjLJWAJyUvA5AGfAYUAT5XdIVm6ttrWT9G/ezK3wm+uuu8j5S6QbqXsjC8CBZG4X0i+ijvQ==" + } + ], + "memo": "3e54abe1133a7c61a0732098dcd4d4998d38d2be@cosmos-sentry.bianjie.ai:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Blockpower", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1rpgtz9pskr5geavkjz02caqmeep7cwwpf29g2p", + "validator_address": "cosmosvaloper1rpgtz9pskr5geavkjz02caqmeep7cwwpv73axj", + "pubkey": "cosmosvalconspub1zcjduepq04y0dtylyed2f8drc9t78dmptfuta7l6xyujwmsgrqefs0sxpgjsnzpsj6", + "value": { + "denom": "uatom", + "amount": "50000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AsmAoZJSg2Y6OPffgfB1zgMkLxjozbg2LXShEVnwf/kf" + }, + "signature": "judY7OkDn6wdRduwTmPZBmcA6HBVQ17FqA07Pn23K1Bx3N2E+LrhH1DAwYUj1DXbjlFdWnvpJgu8ztfz3YSgIg==" + } + ], + "memo": "d0f26063f5e44f361897e448f81ff0953d7ed2f2@cosmos-sentry.blockpower:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "BouBouNode", + "identity": "", + "website": "https://boubounode.com", + "details": "AI-based Validator. #1 AI Validator on Game of Stakes. Fairly priced. Don't trust (humans), verify. Made with BouBou love." + }, + "commission": { + "rate": "0.061000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1eh5mwu044gd5ntkkc2xgfg8247mgc56f8pycyz", + "validator_address": "cosmosvaloper1eh5mwu044gd5ntkkc2xgfg8247mgc56fz4sdg3", + "pubkey": "cosmosvalconspub1zcjduepq8hu49qdl5594rzxmdsww3hleu8phxrajjfsseqjere9mjrrrv9tq35mll4", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AoAsj4KOrkiwIV2WZasfD+lekYHj7uIjYTanDjT6i9w/" + }, + "signature": "614bt6iFO0QigPFN5fsfUUWXVOSLAW4iYBjnimyct+48YhUTiVehxhXfUvWP4gbtpwKEa8LIR7/wUzO7b+pYQQ==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "ChainPool", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1cf9yqlamxgeza4nsn7y08vpkcs7qqjp4lzw9ac", + "validator_address": "cosmosvaloper1cf9yqlamxgeza4nsn7y08vpkcs7qqjp46k6s3t", + "pubkey": "cosmosvalconspub1zcjduepqh743r5du0f53zazrztdu3zj2twp38y7em55lmaeuxdlmna78argqw2s95s", + "value": { + "denom": "uatom", + "amount": "100000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Awyy4qzKg2GKO9KU611j0dusfruU0S/5mEnG6hpcfsPN" + }, + "signature": "C04Q2qlhl1xIIaHRixhEpT+k42CL1xuxkWgMy9b0Bg9LuE9o1E/lQw64a1yprVKql7YHUkrs8uQcF/7WUOM1Bg==" + } + ], + "memo": "e4a6bd1744a029b87bf530e983da30ea58ac50f5@38.143.1.26:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Coinone Node", + "identity": "", + "website": "https://node.coinone.co.kr", + "details": "The more, the easier. Coinone Node manages your assets securely." + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1pz6yu5vdxfzw85cn6d7rp52me4lu8khx7lpkzd", + "validator_address": "cosmosvaloper1pz6yu5vdxfzw85cn6d7rp52me4lu8khxmt4rw7", + "pubkey": "cosmosvalconspub1zcjduepq562qtt42wsqmmmhpj5vmgp3dprpeclzc5u57hdvkpq762nthr3vqh8yaf7", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AwTiHwim/dD3CZzUodiZ70trDOLbrKlNuCs8st5jItBK" + }, + "signature": "mOUNQJaxBJupeg2Vn7xAW01QdHFqIIryL/i7pFwBdC44DAaxB1fa9BB0ex8rePVuVmlN67hS2Onz6zx4PpPCXA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Compass", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ff0dw8kawsnxkrgj7p65kvw7jxxakyf8kqnyy4", + "validator_address": "cosmosvaloper1ff0dw8kawsnxkrgj7p65kvw7jxxakyf8n583gx", + "pubkey": "cosmosvalconspub1zcjduepqu08f7tuce8k88tgewhwer69kfvk5az3cn5lz3v8phl8gvu9nxu8qhrjxfj", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A8kyShNhoxSGVQq/8l4HDqtM8bCaIJFGZq/2aLT1u8Q3" + }, + "signature": "itEhxkOBaZ2/U464Soa90Sw61e/ANyyADAUM4TTvTXM9FDc7XCh96i1cDU7WxSvk2D3qCd+bQnA3aU2v2m49Rw==" + } + ], + "memo": "629ced1ee45898a7684bb4e1732f8685d37f490d@172.31.20.234:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Cosmostation", + "identity": "AE4C403A6E7AA1AC", + "website": "https://www.cosmostation.io", + "details": "CØSMOSTATION Validator. Delegate your atoms and Start Earning Staking Rewards" + }, + "commission": { + "rate": "0.120000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "10", + "delegator_address": "cosmos1clpqr4nrk4khgkxj78fcwwh6dl3uw4ep4tgu9q", + "validator_address": "cosmosvaloper1clpqr4nrk4khgkxj78fcwwh6dl3uw4epsluffn", + "pubkey": "cosmosvalconspub1zcjduepq0dc9apn3pz2x2qyujcnl2heqq4aceput2uaucuvhrjts75q0rv5smjjn7v", + "value": { + "denom": "uatom", + "amount": "30000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An0yrOygz23oiJQZg63gJSbg4nkrWmHBC02/6Am2oDrS" + }, + "signature": "6l0B/lTVJxiKoNmo3F4qH5bRPmA9uh2dL43b9w5beUdODGYEXNSe2DG+rSfjg1JBrBvhFKYTt7Rl/5PpdlgKgg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Cryptium Labs", + "identity": "5A309B5CA189D8B3", + "website": "https://cryptium.ch", + "details": "Secure and available validation from the Swiss Alps" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1kj0h4kn4z5xvedu2nd9c4a9a559wvpuvemr0vq", + "validator_address": "cosmosvaloper1kj0h4kn4z5xvedu2nd9c4a9a559wvpuvu0h6qn", + "pubkey": "cosmosvalconspub1zcjduepqvc5xdrpvduse3fc084s56n4a6dhzudyzjmywjx25fkgw2fhsj70searwgy", + "value": { + "denom": "uatom", + "amount": "100000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeyMultisigThreshold", + "value": { + "threshold": "2", + "pubkeys": [ + { + "type": "tendermint/PubKeySecp256k1", + "value": "AlHMIiMT4+ubmUFOJswrv9fwUJ33cWolv2e5ddzm51P9" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "ApYO482K2n1xA754WsviWNSRZ9IyA9zodACZKCSedq10" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "AiRJtkfOtRkVHpB/4edZmTi/AKTNq+jPQjFWb0X3Hn22" + } + ] + } + }, + "signature": "CgUIAxIBYBJA79FZoB4WSa1b7jxsyoSp0iYuWcRGQuJYGp3x2jJQI78v6mvypi1Wa9VMllH5xdnNPHD/5sfhmKx0V+f4Eh1swhJAP+nHIWbVq2DxIV7XBJD/QU5HbOp8suIK9YpqHPRSx2glRHMwWOvV4lG0Z7H6ZS31YSON+Tta/sZVXFHc0sqS6g==" + } + ], + "memo": "89e4b72625c0a13d6f62e3cd9d40bfc444cbfa77@34.65.7.199:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Cypher Core", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1pjmngrwcsatsuyy8m3qrunaun67sr9x78qhlvr", + "validator_address": "cosmosvaloper1pjmngrwcsatsuyy8m3qrunaun67sr9x7z5r2qs", + "pubkey": "cosmosvalconspub1zcjduepqcdav5ylt2zst90qmuh8e5w07xmxv9y6wufp5k9ngzmx7v9qewqtqkcq4z8", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AlX825sr2FmvR8R/sizJMm2zuY74AxBrL+tbgrGPG+JN" + }, + "signature": "me9a7TbytgR4O8qH3gdDkU/RNJHIIxM0/IYHdQH/9tQ1a5zkxJZHVciaQqWU6JqKMjy832TruxhNBReUAZAl1A==" + } + ], + "memo": "58aa4b7ebb241b3a87e3a0a965b8ac076566de62@45.76.225.89:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "DokiaCapital-ION", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.150000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos14lultfckehtszvzw4ehu0apvsr77afvyhgqhwh", + "validator_address": "cosmosvaloper14lultfckehtszvzw4ehu0apvsr77afvyju5zzy", + "pubkey": "cosmosvalconspub1zcjduepqp0j4vum7ryt6nl6zsgq9ar347afmq2c5z6jmzeavv2p2ns6m0dgs5zmg4z", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "ArSpHTTpHAZ17Co4dsgfY0fuF5RAA5OZtxnmZLA2Z6vI" + }, + "signature": "ujZakKBUNg3w3OmaUSD4usC3evYt3LK4ZgBlrgOEIqU+/65UF56nuxzkLCv6tPO+dK+atrJLUX5OlH/LbbLdUw==" + } + ], + "memo": "51da73aaf1280016998efada239b2fd59ccc4116@--node-id:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "DragonStake", + "identity": "EA61A46F31742B22", + "website": "https://dragonstake.io", + "details": "BlockChain Technologies" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos15r4tc0m6hc7z8drq3dzlrtcs6rq2q9l2kc6z4s", + "validator_address": "cosmosvaloper15r4tc0m6hc7z8drq3dzlrtcs6rq2q9l2nvwher", + "pubkey": "cosmosvalconspub1zcjduepqjcp9ez3dzmvsdfcw2h5kllmqvjgqnhtlvhad4q9wzcqf34gf6ewq6zl5mm", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A28+XBwoLf8Q40ivs5UGkBidWs+wkg3VBs1gzriPtmuX" + }, + "signature": "O0azW4WNvLnHLaFSl/hoec2B2X9HEEWzNUm+GWQxDgsb81jrZQuAQKu/rIK0vp3/DRX78X6X1RoQxsGucTZkhg==" + } + ], + "memo": "7c4bc7818858487674e6b532d0ba1640ae675ea3@1.2.3.4:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "F4RM", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos14az9dmutwtz4vuycvae8csm4wwwtm0au7lt5d2", + "validator_address": "cosmosvaloper14az9dmutwtz4vuycvae8csm4wwwtm0aumtlppe", + "pubkey": "cosmosvalconspub1zcjduepq59t2nm3ph5k6uc804w0n7ey69ul8ntee2dy47d7u53q248ud822sunv93j", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "ApA4WPGwNrJs7QX96kS20y1TbPIuX2ZyMbKHFN24UOOR" + }, + "signature": "GkrExkLIrtZiOn1zHC2p181vyx7HgzqAqSKRpc0O6Epo3x41J8FsSyKPWVFJdptuZcVr4oa2jWwEvxekJfpHWw==" + } + ], + "memo": "F4RM@0.0.0.0:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Firmamint", + "identity": "", + "website": "https://www.firmamint.io/", + "details": "The FUTURE is at STAKE - Proudly Canadian - Holder of the Game of Stakes NEVER JAILED Title - By delegating, you confirm that you are aware of the risk of slashing and that Firmamint is not liable for any potential damages to your investment." + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.300000000000000000", + "max_change_rate": "0.030000000000000000" + }, + "min_self_delegation": "1500000000", + "delegator_address": "cosmos19kwwdw0j64xhrmgkz49l0lmu5uyujjayrfzmuq", + "validator_address": "cosmosvaloper19kwwdw0j64xhrmgkz49l0lmu5uyujjayxakwsn", + "pubkey": "cosmosvalconspub1zcjduepq668g4epaumjtx35rk3ucz2nlm7l7zuewkt0kzutg9hha859zjxmsvl2v67", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A95wHrbxhpQ91P2+0HV4uN2E9dKO+a87iNSceBuu1w+Z" + }, + "signature": "/hxfCtPF9s2WcN1nDaSSlNT/4bOSrWekR6380pUnsasUcBhTf/dXhdxxICP5AWGC24ehbaCYJHOqsG1b2s2pSQ==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "HyperBlocksPro", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ul2me6vukg2vac2p6ltxmqlaa7jywdgtz5203m", + "validator_address": "cosmosvaloper1ul2me6vukg2vac2p6ltxmqlaa7jywdgt8q76ag", + "pubkey": "cosmosvalconspub1zcjduepq0cet8ez89wj4yz8uencych7aldc5wyyrpx6jvh6n6kxxslumln5sxkq922", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A870fEa2W+PInGJCjSTyhjosx0gL2TyQqqtKx2FtUrr+" + }, + "signature": "9oCPJFo4WyUzrZUU6+Tp5XiJ64//mrdCjr1DBdBQBbE5X3u/OalCUEgH2oOSHFvOZ9Pfa2rKKKkYLy8HIXePnw==" + } + ], + "memo": "override@override:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "KalpaTech", + "identity": "6A0D65E29A4CBC8E", + "website": "kalpatech.co", + "details": "KalpaTech offers integrated blockchain solutions for proof of stake networks" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ehkfl7palwrh6w2hhr2yfrgrq8jetguceek792", + "validator_address": "cosmosvaloper1ehkfl7palwrh6w2hhr2yfrgrq8jetgucudztfe", + "pubkey": "cosmosvalconspub1zcjduepqvmmhug9hcmm26ce7we0n3esavn4c6tfcfd6zgnuj732ls7khjq4srpg0ft", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AowlwmoBjAAw2DUilvPuu5GuPePi1w0l9zsR1JfMr8tb" + }, + "signature": "ZeWGlnpTJdIPBhiNJQB3t2vKAg8l/siYxD3OG8G+evcJIz5ygJJjEhcu7hjOOeRS8lNo2sVcX2xt2ye/27JQSA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Mythos", + "identity": "2E9FDF34351A5112", + "website": "https://mythos.services", + "details": "Staking and validator services for crypto networks" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1w42lm7zv55jrh5ggpecg0v643qeatfkdqf5ua6", + "validator_address": "cosmosvaloper1w42lm7zv55jrh5ggpecg0v643qeatfkd9aqf3f", + "pubkey": "cosmosvalconspub1zcjduepqz679nxu2dkfd6y9hytqwvf2z4yuevraqykkm2464ag4e6z278h3qdq92xu", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AlCWhRIIBlQOV2OuT4Fxx9qbbnafyrSpD2ra8F6s5tOa" + }, + "signature": "lQ9o0uU0KGbWw+hMPIOUI/rIwmZYKpeT0+VhGfYU6s4EvGEBOFcV4usVKpOugS6Xk8OnvvGAUW6rYmPjexe13w==" + } + ], + "memo": "4eb6ef5af7bf1e6c27825f72b1f22ea16213ba50@192.168.0.178:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "P2P.ORG - P2P Validator", + "identity": "E12F4695036D8072", + "website": "https://p2p.org", + "details": "One of the winners of Cosmos Game of Stakes. We provide a simple, secure and intelligent staking service to help you generate rewards on your blockchain assets across 9+ networks within a single interface. Let’s stake together - p2p.org." + }, + "commission": { + "rate": "0.080000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos132juzk0gdmwuxvx4phug7m3ymyatxlh9m9paea", + "validator_address": "cosmosvaloper132juzk0gdmwuxvx4phug7m3ymyatxlh9734g4w", + "pubkey": "cosmosvalconspub1zcjduepq9xu9z6ky3nz3k544ar4zhupjehkxdlpmt2l90kekxkrvuu7hxfgslcdqwy", + "value": { + "denom": "uatom", + "amount": "4900000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ahq7wODVSvcGba3EsI9KgH9e9uE9/M15J0klT5uUsous" + }, + "signature": "phh3TZySvLK5vTHVdlVM3xglJvIaLs7rymdL9JmN79B4LMAYYRV3ccyAm8TpM/B32svtfaFTbn6Dfvu1QILcOg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "SNZHolding", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1s6x9fy4wc49wj9jx4jv6czredqsmp46hmc8rxn", + "validator_address": "cosmosvaloper1s6x9fy4wc49wj9jx4jv6czredqsmp46h7vnk2q", + "pubkey": "cosmosvalconspub1zcjduepqfkkyuexns2l7rw2mx2ms988heah0rjv42e9q88scc3ms5hzg45psycrvr4", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ap5WX8/zhs4cyHtUSruBuYi77o3zv/aKqHQfnEbi/6Nd" + }, + "signature": "+Qcgb5PXFsxsdAU2A/jmGKco7B31mDpbo1mi7+pIY/VGly0HslwkGhx8vb+UjxEMr2AE3FVyMRjuUNpyOI0YTQ==" + } + ], + "memo": "f7e106f5db9f10bde1f89d177bf0fe12d593f993@10.0.32.24:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Simply-VC-Validator", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1vjqault583hwktfj63k2hh7r02sj2a66v0chv3", + "validator_address": "cosmosvaloper1vjqault583hwktfj63k2hh7r02sj2a66fmvzqz", + "pubkey": "cosmosvalconspub1zcjduepqduk3drqxx5g8s2vtvlpz97pq06u67ewn5wt7r2wgvtnewfymy9gs0lrzrl", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ah2SOnyRtwfHRT/Y1CERA7MiLIdkx37DEOwEu3IOQbCU" + }, + "signature": "JSOY7O6BijCI/MfokfkShlWnMaNLFlpzNdHMl1T1tpFq0fKcJiQOy/bzX9nJOFfPma3+fZAl4PEcCOd5FKsiAQ==" + } + ], + "memo": "MemoryLost@Was.Here:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Skystar Capital", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1uhnsxv6m83jj3328mhrql7yax3nge5svxcw7kt", + "validator_address": "cosmosvaloper1uhnsxv6m83jj3328mhrql7yax3nge5svrv6t6c", + "pubkey": "cosmosvalconspub1zcjduepql42t7mstnewp5rgweteuw95hawzystll7mq8dl24n5yh0th7q2jqetcy07", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Amz9q7DWeRFuItDxfaAyEcW8mLfF5zmhqsv3qZ/x1mjN" + }, + "signature": "bAcqw/EYSCD+KufZavFQntExIW8kKUzaJ5KA/wljCs1xJAM0yIedSFjNklb4FV6+wNRpoGXjvf6hUhnyZTLXBw==" + } + ], + "memo": "527df2fb5f01052d174285da1eb0f0234d590890@138.68.45.219:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Staked", + "identity": "7B3A2EFE5B3FCDF8", + "website": "https://staked.us/", + "details": "Staked is the most trusted validator in crypto, delivering highly available and highly secure staking nodes." + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.020000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1we6knm8qartmmh2r0qfpsz6pq0s7emv3um0vsa", + "validator_address": "cosmosvaloper1we6knm8qartmmh2r0qfpsz6pq0s7emv3e0meuw", + "pubkey": "cosmosvalconspub1zcjduepq6adydsk7nw3d63qtn30t5rexhfg56pq44sw4l9ld0tcj6jvnx30s5xw9ar", + "value": { + "denom": "uatom", + "amount": "4500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A4ox0f6xVNCbdP6xlzk2zkvoyTryEmaQp+vc+nWfUd2o" + }, + "signature": "3xACydJ2/vq/aNQ4HH2oU2wVDn4zoPqJUvpzPXrSoj5T461QggzXi4aKKpqBupOcpYcCMvqjm63K5glucn0E/g==" + } + ], + "memo": "71f9ed4d7a7adc737914c901396a7ba3aef22c37@100.97.62.209:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Wetez", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1s05va5d09xlq3et8mapsesqh6r5lqy7mnr69mg", + "validator_address": "cosmosvaloper1s05va5d09xlq3et8mapsesqh6r5lqy7mkhwshm", + "pubkey": "cosmosvalconspub1zcjduepqgx5xdrx0xktl5r8e3w7vj329fgh3fnep8ahgx8027nd5nkjxzuqs5us5en", + "value": { + "denom": "uatom", + "amount": "10000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AkQg0kfkxZ+L30N/e3zNIT17Ay47sQxckf6Dxq/TqoR2" + }, + "signature": "dTY1Tc4OVZ39aYT1ax2icV35557HOasqV52NorV/MgdlzDFRWCfRYQwOeuPgL302HblzESzX4YyVUEpGYRBp7Q==" + } + ], + "memo": "3d08a88019e609c207eaa636ac4e03543d086cb8@172.20.73.240:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Atom Sandler", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.250000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1cql9ska0xl2rkg6gcv0np4333gn6fygs3qf90r", + "validator_address": "cosmosvaloper1cql9ska0xl2rkg6gcv0np4333gn6fygs55asrs", + "pubkey": "cosmosvalconspub1zcjduepq902trqaqmnaay5wh44jdj8ljp2qeugg8r6wn5afmxzwpry205d0qd472ha", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Auq/pdNq4/JnJSPjHLlHCHlnegLIwhUuXiENLvstNPNp" + }, + "signature": "u9BoewGMm0StTmH93UyZl4F9HuH/m2QGeXAIRwSi9uQ4B40c4irw84zftfP5CQ1uPCady+FL6ZwSIu7TEh9DAw==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Bison Trails", + "identity": "A296556FF603197C", + "website": "https://bisontrails.co", + "details": "Bison Trails is the easiest way to run infrastructure on multiple blockchains." + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1uxh465053nq3at4dn0jywgwq3s9sme3lc9ek2f", + "validator_address": "cosmosvaloper1uxh465053nq3at4dn0jywgwq3s9sme3la3drx6", + "pubkey": "cosmosvalconspub1zcjduepqc5y2du793cjut0cn6v7thp3xlvphggk6rt2dhw9ekjla5wtkm7nstmv5vy", + "value": { + "denom": "uatom", + "amount": "13000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ai+y59+qJLiZeh+8GdOJO2GJkLvtS4sD9UDOBEELUETM" + }, + "signature": "UwNBWnjLPegS+cITJybwFXvaSb/0bPLvn4D6Bvb4z+0RLgV+wWv1RrXJKIlWqfxlP13u3j3kQ1tNm7+xMA5A6Q==" + } + ], + "memo": "54a82740a61e39f384e5fb1cc01de79502d05ba2@10.0.1.202:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "bity.com", + "identity": "", + "website": "https://bity.com", + "details": "We offer professional, secure, and reliable crypto staking services for investors looking to stake their coins with trusted third parties, such as the Cosmos Network." + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1uv26ytrnmydyctq0s58ve2k6wn2p653m9yn69g", + "validator_address": "cosmosvaloper1uv26ytrnmydyctq0s58ve2k6wn2p653mqs80fm", + "pubkey": "cosmosvalconspub1zcjduepqmpm39a9aqllqr8dm9w3ww0sp0v32vvphqmgxt20fpw7949ayhhqshx7n9c", + "value": { + "denom": "uatom", + "amount": "20000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A/MVFYmNRfeBJraFOJMmdVvdZRLNpfkSgwZy8j90DzoM" + }, + "signature": "4WmtMo09/FO+SP5+ThIbr8xWI0LLc0d2+4cAhgIn6HtFGlKktIzvga3uf3W/Oq1xac7D8Wau64bnruiMz4Wa8Q==" + } + ], + "memo": "659787510cdb818ad1a3a2eed3ce68a6827354e2@cosmos.bity.com:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "blockmatrix", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "10", + "delegator_address": "cosmos1n5pu2rtz4e2skaeatcmlexza7kheedzhzf70tu", + "validator_address": "cosmosvaloper1n5pu2rtz4e2skaeatcmlexza7kheedzh8a2680", + "pubkey": "cosmosvalconspub1zcjduepqnd9kzfhhvuv5k2cq62yu0e5v73ymsgxa0wlen9c7999ucwg7hg6qdm34pm", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AzKw26WQQPFK/cvMjrFIcTG1CPpj225RzIcDXwOXUzlj" + }, + "signature": "iQDu63RYmDLNK8UONr/jNf+LMGyVgNgqODlcVQJVaOoay91IHYBpST5rQ9dNKaUPgLufCehM8YEOUh1OY8xPEQ==" + } + ], + "memo": "e275ba168d9379eacb186e11b2ffa8a0dd02a63e@1.2.3.4:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "cephalopod equipment coop", + "identity": "", + "website": "", + "details": "Cephalopod Equipment Coop" + }, + "commission": { + "rate": "0.250000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "1000000", + "delegator_address": "cosmos1fghgwhgtxtcshj4a9alp7u2qv6n2wffqj4jdl9", + "validator_address": "cosmosvaloper1fghgwhgtxtcshj4a9alp7u2qv6n2wffqhpxcnk", + "pubkey": "cosmosvalconspub1zcjduepqwzmcs4kpsetyk7fn7czvdljgawa93r6mnzvcwt9a366rep2gcs0q4jpxu5", + "value": { + "denom": "uatom", + "amount": "42000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A8NUKnGCZXhpay1nTggs9kB60tui7lWeifpQkuRjWSeo" + }, + "signature": "PxVmWkumWSfc2Ard4gpL3d/IN/ZG/oD+Ee4voBOl++BRp6o1nWv9gyJunrROCc6LeyWpTwMYNSUd6BrgqtWk4A==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Certus One", + "identity": "ABD51DF68C0D1ECF", + "website": "https://certus.one", + "details": "Stake and earn rewards with the most secure and stable validator. Winner of the Game of Stakes. Operated by Certus One Inc. By delegating, you confirm that you are aware of the risk of slashing and that Certus One Inc is not liable for any potential damages to your investment." + }, + "commission": { + "rate": "0.125000000000000000", + "max_rate": "0.300000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1qwl879nx9t6kef4supyazayf7vjhennyjqwjgr", + "validator_address": "cosmosvaloper1qwl879nx9t6kef4supyazayf7vjhennyh568ys", + "pubkey": "cosmosvalconspub1zcjduepqwrjpn0slu86e32zfu5xxg8l42uk40guuw6er44vw2yl6s7wc38est6l0ux", + "value": { + "denom": "uatom", + "amount": "55000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A0hW8ESfYxhZt8Jxix/qgLOIl3TjnOrpTDSEGzo0qRm0" + }, + "signature": "FxQ3VLXQeaRbeSQoumEvr52mcZC6ej1WAGH1papeukN5EkUGpY5NicoHMFNIRV4BGRKgSNoiFIwvVCfTHIWXhQ==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "chainflow-cosmos-prodval-01", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1j0vaeh27t4rll7zhmarwcuq8xtrmvqhughud6h", + "validator_address": "cosmosvaloper1j0vaeh27t4rll7zhmarwcuq8xtrmvqhudrgcky", + "pubkey": "cosmosvalconspub1zcjduepqvn4a4skwj88c8e0jvns3qjrhyy0whvnuwmth3k8kexvqk5vupw4qsdje47", + "value": { + "denom": "uatom", + "amount": "500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A7s/Wt/O0q/TXK1wm/AC/iYkHAUlTnT2csEcB6hTOoVE" + }, + "signature": "y+kaSKQwdN0VMPLUhZUpoVv4W16SoHLmlBDre6cwG59IAkvuQyW8CxILF9/TpaFb0TObVBxDZT1WnLScgcIMdQ==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Chorus One", + "identity": "00B79D689B7DC1CE", + "website": "https://chorus.one/", + "details": "Secure Cosmos and shape its future by delegating to Chorus One, a highly secure and stable validator. By delegating, you agree to the terms of service at: https://chorus.one/cosmos/tos" + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.020000000000000000" + }, + "min_self_delegation": "10", + "delegator_address": "cosmos15urq2dtp9qce4fyc85m6upwm9xul3049um7trd", + "validator_address": "cosmosvaloper15urq2dtp9qce4fyc85m6upwm9xul3049e02707", + "pubkey": "cosmosvalconspub1zcjduepqjc07nu2ya8tyzl8m385rnc382pkulwt2gh8yary73f3a96jak7pqsf63xf", + "value": { + "denom": "uatom", + "amount": "4500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AoUAnGnBsT7xGv2PTnIQbfK4t4oNyimGk2AhPwfgxq3T" + }, + "signature": "Zoxl7XkkI8Frefnck9lKsqsnqUHefYZerjK7a9gG/wlCNG8v5E9iFnqoepDLykjo3MVB6YQup2Ub+vS2ZeFM9w==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Colmena", + "identity": "", + "website": "https://www.coworkingcolmena.com/", + "details": "May the force be with you" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos16gdxm24ht2mxtpz9cma6tr6a6d47x63hlq4pxt", + "validator_address": "cosmosvaloper16gdxm24ht2mxtpz9cma6tr6a6d47x63h65p52c", + "pubkey": "cosmosvalconspub1zcjduepq9s5y3sk6g6x35pk2ljzs446xgfmamzuptrlrgs9mquc982j0ujuqq0vzhf", + "value": { + "denom": "uatom", + "amount": "1000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AzaSKwy1GgbQmJlWIbFBR8l4Q9YSvWDwyakmccdgoqOs" + }, + "signature": "LGBPGXGU3rhkQBdoHHeMMOOrVfu32gqrpVjNMmJhft8jY5mCinzdR6IgKFUwu2qe6LdKE1kDRaWPJirONkZCHA==" + } + ], + "memo": "34b6a464293de57570540bf8cb37a0458a94d138@0.0.0.0:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "cosmospool.org", + "identity": "", + "website": "http://cosmospool.org", + "details": "Cosmospool.org Delegation Services" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.400000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "100000000", + "delegator_address": "cosmos1ps7dmygt4wm72t8l9kdjetelhggsv8w7m0ezaz", + "validator_address": "cosmosvaloper1ps7dmygt4wm72t8l9kdjetelhggsv8w77mdh33", + "pubkey": "cosmosvalconspub1zcjduepqupgzsdq2w7m77h4xyrtywzx8mlqnj97ucdv7kaae78w5p7xadqfs3e34w8", + "value": { + "denom": "uatom", + "amount": "20000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A7noP7sKUSsy4PJeNJf/yApZQa/V1rcuBYk5IalYItyc" + }, + "signature": "jedggMAw6ArULMZiLKe6efia7DqPXTVWa9yz9RNoH29vDVCs8238roGA4HYonV27kf8zdp9momNToaY7fvgS2Q==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "darkqueen", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1f63lrmnn4upu722kxdhw04taxa6w50lnchnjp4", + "validator_address": "cosmosvaloper1f63lrmnn4upu722kxdhw04taxa6w50lnar88dx", + "pubkey": "cosmosvalconspub1zcjduepqqypxy7l8tav52nengx8esff2h3v78taqpj3qpcugy0rk3ee79sxs5la5u6", + "value": { + "denom": "uatom", + "amount": "100000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ay1sFLp6lSJwXRYLWsh2TBoWDZ/ocs8ctamkIqDbNeto" + }, + "signature": "EsT6nUo9HpcCBz+6EZ15lNzccaH3s/VkBPgoFBffy2M5FzWtS/2U9t1NzUIhTmo9I1vLBYWFp83LtwMRf6nslQ==" + } + ], + "memo": "5cc113055ac56e03e80a71b37127146beaf62419@45.79.106.28:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Delega", + "identity": "1BED7C08416A619F", + "website": "https://delega.io", + "details": "Your trusted validator for PoS" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1mrkn3uug9dm32hyp9tcxs5dmmuspt7nezrdmhz", + "validator_address": "cosmosvaloper1mrkn3uug9dm32hyp9tcxs5dmmuspt7ne8hewm3", + "pubkey": "cosmosvalconspub1zcjduepqxr0r707t6djym8vwrq39j7u4t3cjsx6ka0a08aew9fqh8hv50fyqck470f", + "value": { + "denom": "uatom", + "amount": "1000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+turACQcuu0YWxdJxSt1FG2NlAoNevwUaMe4UxfenLB" + }, + "signature": "rV0m9uDoMkF5Jz71JwPLSDPHei7GJhYzu79CGOYb8QkgwFwnaMw5AYyhSCWyhcfWb/+2FslKhb2grSPE832/Mg==" + } + ], + "memo": "d490b109cf63e880fce61928331c2ea3eb73fe8a@192.168.2.238:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "figment", + "identity": "E5F274B870BDA01D", + "website": "https://figment.network", + "details": "Based in Canada. The #1 Legal and Compliant Cosmos Validator." + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.300000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1hjct6q7npsspsg3dgvzk3sdf89spmlpfg8wwf7", + "validator_address": "cosmosvaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpfdn6m9d", + "pubkey": "cosmosvalconspub1zcjduepqnltddase4lqjcfhup8ymg0qex3srakg54ppv06pstvwdjxkm6tmq08znvs", + "value": { + "denom": "uatom", + "amount": "4800000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A/ME5Wre92HJOJH4wBFveSeq3Yj8wZJrn/pEWc3pcrSc" + }, + "signature": "KkpNbaYCHI2B4RoUhuo0+RglExyN/xSH+b7WFhn8fIgbtVyrpk1bpPuMJqehMkjUiBrqw5/RSPoNUrn2nPgX3w==" + } + ], + "memo": "6659591b5e73d5a5cbc5e6e892d7a478564e10f9@54.39.178.218:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "firstblock.io", + "identity": "23D9B8528FC93D58", + "website": "https://firstblock.io", + "details": "You Delegate. We Validate." + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1s65zmn32zugl57ysj47s7vmfcek0rtd7jd2mp2", + "validator_address": "cosmosvaloper1s65zmn32zugl57ysj47s7vmfcek0rtd7he7wde", + "pubkey": "cosmosvalconspub1zcjduepqrc6g9m2eyy4zs7kyeph8vk5ldpgnceveelc39zf7lc32j8k3shqssevdlg", + "value": { + "denom": "uatom", + "amount": "3000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AlLytZYcIwiP/kUu5EeR9seek332Mc1857kHeiwPYFNL" + }, + "signature": "ngZIoTD7oaCbH+7jH+/SqdNq2vOxV8ssU8KDyc2Sf0V9g5PIOh0cYgoPckYhLcEZZlgy1k1VM5GIyQlEBrHbDA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Forbole", + "identity": "4A5D9C100A76D9A8", + "website": "https://www.forbole.com/cosmos-hub-validator/", + "details": "Forbole is a Genesis Validator on Cosmos Hub. We are a named winner in Game of Stakes and HackAtom3 by Cosmos. We are a very helpful contributor in both the English and Chinese community." + }, + "commission": { + "rate": "0.125000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos14kn0kk33szpwus9nh8n87fjel8djx0y0mmswhp", + "validator_address": "cosmosvaloper14kn0kk33szpwus9nh8n87fjel8djx0y070ymmj", + "pubkey": "cosmosvalconspub1zcjduepqmfxl36td7rcdzszzrk6c7kzp5l3jlw4lnxz8zms3py7qcsa9xlns7zxfd6", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AhF73wdGhoSfbDgqjxIeefFGBYtBU2PBIDG/6OhPt60+" + }, + "signature": "wzt26vJnEhSe92C8Of6MuSETfrk4cm0ya+iKEucUGUVQ4HEYvzzC3gM6cvPjGPWUuYfU8XhHpGKByUzzVy6Dzg==" + } + ], + "memo": "e20dca7582870356c7a843115374c7a97dc06ae8@10.6.0.46:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "clawmvp | 01no.de", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos17mggn4znyeyg25wd7498qxl7r2jhgue8ep585n", + "validator_address": "cosmosvaloper17mggn4znyeyg25wd7498qxl7r2jhgue8u4qjcq", + "pubkey": "cosmosvalconspub1zcjduepqlzmd0spn9m0m3eq9zp93d4w6e5tugamv44yqjzyacelnvra634fqnfec0r", + "value": { + "denom": "uatom", + "amount": "20000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A9isBJO7xtwuV0PlTRTcJJN9Vk+cYDtjD35IUExoWVGW" + }, + "signature": "DqgDxTiOvltlH1Oy2PFfvocGXHnxH8a5gDne50RjD7J+l0iglJQ5UdE2vI+F0ybQ+JXHahMJaKJebwB62tHB9g==" + } + ], + "memo": "01no.de@0.0.0.0:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Castlenode", + "identity": "", + "website": "https://www.castlenode.com/cosmos", + "details": "Castlenode is a validator operator focused on security and run by experienced professionals. Please read our Terms and Conditions on our website before delegating" + }, + "commission": { + "rate": "0.090000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.050000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1qs8tnw2t8l6amtzvdemnnsq9dzk0ag0z37gh3h", + "validator_address": "cosmosvaloper1qs8tnw2t8l6amtzvdemnnsq9dzk0ag0z52uzay", + "pubkey": "cosmosvalconspub1zcjduepqsszd2gzte82dzt0xpa3w0ky8lxhjs6zpd5ft8akmkscwujpftymsnt83qc", + "value": { + "denom": "uatom", + "amount": "14750000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A6YjD9RkuLPQ1tCzRVQoWEG1FmyNgPoVTAN1HrCkHoI9" + }, + "signature": "cA9XsVaNPNhbgTsfi6LQhaXCnxpgshINIu8N0YVNAlANKwlQKT57OihEWojs3/ycMQruSuEZi/404PSpEuaxDw==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "hashquark_cosmos", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1cgh5ksjwy2sd407lyre4l3uj2fdrqhpk84m04f", + "validator_address": "cosmosvaloper1cgh5ksjwy2sd407lyre4l3uj2fdrqhpkzp06e6", + "pubkey": "cosmosvalconspub1zcjduepq3f6wnsk6k6qu6g8n5vly4z7ajw7q930wh3qx6zkxhktnh49l40kszf5lry", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ai0Bs9o/qWp5uKB7R2w1XsvBhKpCOLOO7ZNObt3PZh2L" + }, + "signature": "9AEpXvgQnyI3G4P3YQ62+hF8lL/xe2LPM+F1j+t9mhctPsIBFU1/pfkUdwoH9NJ/d1zY44OBmjLvNFeP0N4Knw==" + } + ], + "memo": "fc8abc401ade02fdc41a41d1accc5ffdd634f9fb@10.10.10.60:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "in3s.com", + "identity": "", + "website": "https://in3s.com", + "details": "cosmosvaloper1rcp29q3hpd246n6qak7jluqep4v006cdsc2kkl" + }, + "commission": { + "rate": "1.000000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1rcp29q3hpd246n6qak7jluqep4v006cd4v7r6v", + "validator_address": "cosmosvaloper1rcp29q3hpd246n6qak7jluqep4v006cdsc2kkl", + "pubkey": "cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AmbZ4oUx+GWVQDUo2z+NB0YzOpj9g4Px/n8H3EbId7aC" + }, + "signature": "CISlc+hUODhDWFiY30aYhYwouOa7SZbtSzRueJRIjvZmRXJ5Gf4OQoUj5b8pU7soPJFQCXBBLdBrVQzkkKbadQ==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "liangping", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.200000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1jxv0u20scum4trha72c7ltfgfqef6nscj25050", + "validator_address": "cosmosvaloper1jxv0u20scum4trha72c7ltfgfqef6nsch7q6cu", + "pubkey": "cosmosvalconspub1zcjduepqnru7aa6ayyuwddd5qsa6tvutzs7xl9jk6pfx4ka5dr4y9d3q6eesgz9rz7", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+MHfxshRkw5H0UDZ0IxglCOQkVF1jhZWJpgdh3ajH6r" + }, + "signature": "62IXmtbUCEG7Rq/UxWNALrnlR2kxmyy3YbkFNI/Qb0c3EuAx0a9osXkZI3Qry/5oARbq1YmksIKdgHTjezzlaA==" + } + ], + "memo": "cdfae2ab251678159b0d32be815afc64e3702574@172.24.230.219:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "cosmos-Inspiron-7570", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.070000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.200000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ma02nlc7lchu7caufyrrqt4r6v2mpsj92s3mw7", + "validator_address": "cosmosvaloper1ma02nlc7lchu7caufyrrqt4r6v2mpsj90y9wzd", + "pubkey": "cosmosvalconspub1zcjduepqxtu8am2qmf0qnglqtvkar9gaclhccfn29tsp7n82vasrtnc8m2fsulp4h2", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A74AjNDhszhX7e38QZAk5nSCqpsfBtjiUBhZakx+Xbg7" + }, + "signature": "TO4eXKAifpxjndtE25q9xp+nd7/ui7EWiLz3y4Coj6R2he59bTKqxu2nG51q0EhIMTh4Tmy7ZPkMWBXJ+tbPiQ==" + } + ], + "memo": "2f3aef5af1d925a609c66912d452cbce52d09099@172.19.3.215:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "iqlusion", + "identity": "7843656AA22520BC", + "website": "iqlusion.io", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "100000000000", + "delegator_address": "cosmos1grgelyng2v6v3t8z87wu3sxgt9m5s03xvslewd", + "validator_address": "cosmosvaloper1grgelyng2v6v3t8z87wu3sxgt9m5s03xfytvz7", + "pubkey": "cosmosvalconspub1zcjduepqdgvppnyr5c9pulsrmzr9e9rp7qpgm9jwp5yu8g3aumekgjugxacq8a9p2c", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeyMultisigThreshold", + "value": { + "threshold": "2", + "pubkeys": [ + { + "type": "tendermint/PubKeySecp256k1", + "value": "ArTJsvxtWUcdZX8fyNTR922d/O09KTy0RcWtsU2T9ysY" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "Am45Rm3Hp7G7Y6/Vnk0keHtcxBxfj158jLWuxo+QCA+C" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "A0OjtIUCFJM3AobJ9HJTWKP9RZV2+WPcwVjLgsAidrZ/" + } + ] + } + }, + "signature": "CgUIAxIBoBJA0vtPzD/AYC7skr82W0VfJl3Jn4SXIUqDzL0SijWSoC8lFHFK0HR3XwhR5Q132c3fV+h9KHPIj/7AHoochEsc/xJAErPuh81ahn/+ZQ8CAh6auyaYIhDkajWXJmBs+v39kEUIxjx8iZI8vgc9KzBfwHchMSKMaDxm9sV1rbh75qBmDg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "kochacolaj", + "identity": "1E9CE94FD0BA5CFEB901F90BC658D64D85B134D2", + "website": "", + "details": "Top 5 Game Of Stakes winner with a low commission! https://blog.cosmos.network/game-of-stakes-closing-ceremonies-eddb71d3b114#147d" + }, + "commission": { + "rate": "0.090000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1emaa7mwgpnpmc7yptm728ytp9quamsvuz92x5u", + "validator_address": "cosmosvaloper1emaa7mwgpnpmc7yptm728ytp9quamsvu837nc0", + "pubkey": "cosmosvalconspub1zcjduepqfuxvufupnsm7v5anpwd7z8ec70z2k209j7xclnm25zz7vauhyc5qjgxx3h", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A9IQHKHGskTTRO16DO7H9c325dg5HqcHoj2XTpxLGsIL" + }, + "signature": "kSGKCs8FujbEEA99OKF71rEy/hnN6U2UYj2N0uoflIN8K0/5JzNh8ziNw+rIBTtoo9zckIAlMByxeeGba7pWFg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "kytzu", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1000000", + "delegator_address": "cosmos1wtv0kp6ydt03edd8kyr5arr4f3yc52vp5g7na0", + "validator_address": "cosmosvaloper1wtv0kp6ydt03edd8kyr5arr4f3yc52vp3u2x3u", + "pubkey": "cosmosvalconspub1zcjduepq0zyaquh6c8vmjfzft43uqylf2ejjpjcvup2zrtsk40uyz8xsq29s0k4eaw", + "value": { + "denom": "uatom", + "amount": "1490000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A2Jl4SgkOkb8cD3D0GQjaDndOCbTftt9ziWQ0oQFwV7O" + }, + "signature": "aeE+ZC9nl0AYfCRn+jrVKC2lBFSUDERVLZK26DJVlHARCZwGkj8CoxMY+hs7CA9kcm05LDIWqy13hQ705Ze2rw==" + } + ], + "memo": "b236fa97193239ce5e4032be0caf55957ac17a3c@167.86.70.194:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "lunamint", + "identity": "4F26823468DD7518", + "website": "https://lunamint.com", + "details": "Always adding value to Cosmos. Check out Lunagram, the Cosmos wallet built into Telegram." + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ec3p6a75mqwkv33zt543n6cnxqwun37rxqj2vl", + "validator_address": "cosmosvaloper1ec3p6a75mqwkv33zt543n6cnxqwun37rr5xlqv", + "pubkey": "cosmosvalconspub1zcjduepqd85nu5nelvcyyzcsrr0yaglh8rfvn6cv9pp3p0hgmwtk8hf3cazqc7vz5c", + "value": { + "denom": "uatom", + "amount": "6500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5jDkVzd9IL+B6ZPeFIWW8VkZuTGQ8lOKtduG0Z37GkB" + }, + "signature": "etBUdqf+/JeKvgPIii8jen+aIefOpYTUr/8fAL98P41u8cQpAAkUg7HHaMwfDZUN1hwlQ0mpdpa6VzrnKpsrUg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "CosmosTrust-meleaTrust", + "identity": "4BE49EABAA41B8BF", + "website": "https://meleatrust.com/", + "details": "Validator service secure and trusted, we speak English, Spanish, Portuguese, Catalan." + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1zqgheeawp7cmqk27dgyctd80rd8ryhqsltfszt", + "validator_address": "cosmosvaloper1zqgheeawp7cmqk27dgyctd80rd8ryhqs6la9wc", + "pubkey": "cosmosvalconspub1zcjduepq5tm478lhn4du7l46yp6fgu9e8fcfks0j4kf87pk4z8vc3clckxzqvh2q72", + "value": { + "denom": "uatom", + "amount": "511111111" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AyPH2QpEl1JRsQtRDDfgNcQEtXzZx0QdWd/zdROcI1eM" + }, + "signature": "RRLvPZPnHLSn/aM62S6OYAR9D/IXVqia2PsAZgyBq5Ne2KytrEMHXF8rR5Wilfyi0VghiO+4bhs+/DrowP93Mw==" + } + ], + "memo": "287b57b07756a06a6583ee0f7a55184e661eacb6@51.38.113.59:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "nylira", + "identity": "6A0D65E29A4CBC8E", + "website": "https://nylira.net", + "details": "Nylira is a Cosmos validator service run by Peng Zhong @zcpeng" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1000000", + "delegator_address": "cosmos1dany3yuj5qzcyl33qjcxwc6m478a3wftv347sh", + "validator_address": "cosmosvaloper1dany3yuj5qzcyl33qjcxwc6m478a3wftf9ptuy", + "pubkey": "cosmosvalconspub1zcjduepqg93r2qwfj0vkzl8mvr0vqtnz2ukpm4785kmaw692g7s964w4mv3s95lufg", + "value": { + "denom": "uatom", + "amount": "20000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgdcjdT2Pxb2stqtGP0pq8R/KFEhP0Moco561uulsyLj" + }, + "signature": "GWsQu+QKq4v+7UQpVJSPdRnKOhJCupsc416c7LOkZqUwz1TibxCcpDqV5KFxJCiBl/Lc4hATu/PVry/7JLfLmg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "piggy-coin.com", + "identity": "9979ae5a5da54bf04719b8c8ebdc0d24", + "website": "https://www.piggy-coin.com/", + "details": "Delegate here to support piggy-coin's hard-spoon to tendermint / cosmos" + }, + "commission": { + "rate": "0.250000000000000000", + "max_rate": "0.500000000000000000", + "max_change_rate": "0.005000000000000000" + }, + "min_self_delegation": "100000000", + "delegator_address": "cosmos1zp6kg7qlmztyw2km2af4z5ruz5vn04cpq84vjk", + "validator_address": "cosmosvaloper1zp6kg7qlmztyw2km2af4z5ruz5vn04cp9npe79", + "pubkey": "cosmosvalconspub1zcjduepq5supzpux2jafyv06qw2dnd0fzshd2enmea9zeak9emu2ft5rs8nswzlqxf", + "value": { + "denom": "uatom", + "amount": "1000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A92fKIknHSbNXRS3MpM+IUTuCJ01AG6SwabK1nMvZVoj" + }, + "signature": "iW0RF/rSEe0fXtiGn0cZrv0VHdOprJnObmd0Ziyp3u8U93oKgJF4umj/GwNJn93oHBcCnxkDlOLoJXHkD/SbDg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Polychain Labs", + "identity": "", + "website": "https://cosmos.polychainlabs.com", + "details": "" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos16m93gjfqvnjajzrfyszml8qm92a0w67ntjhd3d", + "validator_address": "cosmosvaloper16m93gjfqvnjajzrfyszml8qm92a0w67nwxrca7", + "pubkey": "cosmosvalconspub1zcjduepqfgl6yafrrlx0saks9w2nafptm3lvmvzwdwhmvsqmx4l6cnqfn7ss9tdah3", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A8mJRMqtUZDBLPHWEZXaPeMW7ieIyCn/7CjQaB/gojGT" + }, + "signature": "I8K3bM4gER/ONfqOdNvdvWyLALoxh7xh9sgpAF92dH1PQyFeivtGAxbDo3lqWuLerZ5q6vWEEXoA3YaGNX1wfA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Sentinel", + "identity": "D54C8032CF19C407", + "website": "sentinel.co", + "details": "We are Team-Sentinel https://github.com/sentinel-official/sentinel" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "1000000", + "delegator_address": "cosmos1u6ddcsjueax884l3tfrs66497c7g86skk24gr0", + "validator_address": "cosmosvaloper1u6ddcsjueax884l3tfrs66497c7g86skn7pa0u", + "pubkey": "cosmosvalconspub1zcjduepq87zcnf8sm4ewacjafqujfevt8rhwj5qk9uwtx4ef89ctuqmndkeq446ahw", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A9OBEL9yE1gG2+gbzUxKa3T1GIPInHGkzi34CXdDXq+0" + }, + "signature": "rmc8rAi/u2kLkGaXvYvIvm9hb7zPOHyKJF0ogXg8R6Ra0AagGKTn6m2IJhPi1VzBkrjPTLlUQjJgay/N5Rdr9g==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Sikka", + "identity": "https://keybase.io/team/sikka", + "website": "sikka.tech", + "details": "Sunny Aggarwal (@sunnya97) and Dev Ojha (@ValarDragon)" + }, + "commission": { + "rate": "0.000000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "1.000000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1ey69r37gfxvxg62sh4r0ktpuc46pzjrmz29g45", + "validator_address": "cosmosvaloper1ey69r37gfxvxg62sh4r0ktpuc46pzjrm873ae8", + "pubkey": "cosmosvalconspub1zcjduepqg6y8magedjwr9p6s2c28zp28jdjtecxhn97ew6tnuzqklg63zgfspp9y3n", + "value": { + "denom": "uatom", + "amount": "20190313" + } + } + } + ], + "fee": { + "amount": null, + "gas": "566626" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeyMultisigThreshold", + "value": { + "threshold": "2", + "pubkeys": [ + { + "type": "tendermint/PubKeySecp256k1", + "value": "AldOvgv8dU9ZZzuhGydQD5FYreLhfhoBgrDKi8ZSTbCQ" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "AxUMR/GKoycWplR+2otzaQZ9zhHRQWJFt3h1bPg1ltha" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "AlI9yVj2Aejow6bYl2nTRylfU+9LjQLEl3keq0sERx9+" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "A0UvHPcvCCaIoFY9Ygh0Pxq9SZTAWtduOyinit/8uo+Q" + }, + { + "type": "tendermint/PubKeySecp256k1", + "value": "As7R9fDUnwsUVLDr1cxspp+cY9UfXfUf7i9/w+N0EzKA" + } + ] + } + }, + "signature": "CgUIBRIBSBJAYzfuW4yNj3lH4MWAzKrScBY9gEQxra+nfui3irKad04nDR5wyDIfCZEdPnnh555hVA1oLYIuEz7YAUF3ns8pExJAZlNUh6V+yz42UoGkJQY0L7veKXRWvltxOK0xxt2KdwZYqr6UA1E1ttJhGdyzlh0PyNXuYV2xGZ3UVbz5Qrx2/w==" + } + ], + "memo": "Brexit vote must be put on hold, MPs warn May" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "SparkPool", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.040000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.050000000000000000" + }, + "min_self_delegation": "100000000000", + "delegator_address": "cosmos1rwh0cxa72d3yle3r4l8gd7vyphrmjy2kydpnje", + "validator_address": "cosmosvaloper1rwh0cxa72d3yle3r4l8gd7vyphrmjy2kpe4x72", + "pubkey": "cosmosvalconspub1zcjduepq5kg8xls9l35ftulkm2rt70hexeeyr5cqqkcv4h7936z5uasvvazqla8eck", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AiAgJzJcreOXL0Ghqq3TCv4KV1y3dqULgMac4sxMLEbs" + }, + "signature": "ep2jqnCzJvSGFW6vkQbA4tQVojHSly2jduIvqHeesqZwTTSLaGMrxhbvMSne0hzt9pimv3Y1GqhUWBOR55p79Q==" + } + ], + "memo": "cba84e07b094cc836bf182d0b82a4c28e4d9546f@192.168.65.3:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "stake.zone", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.080000000000000000", + "max_rate": "0.300000000000000000", + "max_change_rate": "0.030000000000000000" + }, + "min_self_delegation": "50000000000", + "delegator_address": "cosmos1rfpar0qx3umnhu0f6wjp4hvnr3x6u538qdmsep", + "validator_address": "cosmosvaloper1rfpar0qx3umnhu0f6wjp4hvnr3x6u5389e094j", + "pubkey": "cosmosvalconspub1zcjduepqe4egjtvcewavewd4rvukeks60jeaxpujevl6kkgcwj0phpxgg3sse83m68", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AtKB3oTNvxcWGQp9h1INAe1G6m2ozq+Ev/stQS0wV/aB" + }, + "signature": "dTAR4ntqNAgxYkB/uEgO1bhit5QeXvOKTIrc/lqQL/5ZH606Apg4K2PNbeYMxnU55KSnxl7er3lg8faK6kU5Eg==" + } + ], + "memo": "123456789@192.168.100.100:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Stake Capital", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.080000000000000000", + "max_rate": "0.300000000000000000", + "max_change_rate": "0.030000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1k9a0cs97vul8w2vwknlfmpez6prv8klv29tea7", + "validator_address": "cosmosvaloper1k9a0cs97vul8w2vwknlfmpez6prv8klv03lv3d", + "pubkey": "cosmosvalconspub1zcjduepqfgpyq4xk4s96ksmkfrr7juea9kmdxkl5ht94xgpxe240743u9cvsht489p", + "value": { + "denom": "uatom", + "amount": "2500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5GqfkKy7ureduVOAcgBW5hf/yKJ6cVxEM7bOe8Fe9m0" + }, + "signature": "Qerv6mMtvwcESO8+nciMcU7GpkrgALeJ5BGKH6XPnEguscuF5Rb6lWGPue8q/ohemWJ4vPc4twqMz4wsEhShMg==" + } + ], + "memo": "a4396a9d621dad287124da4f8861bd8d5fd99a69@10.0.1.134:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "stake.fish", + "identity": "", + "website": "stake.fish", + "details": "Winner of the Game of Stakes. Brought to you by stake.fish and bitfish." + }, + "commission": { + "rate": "0.040000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1sjllsnramtg3ewxqwwrwjxfgc4n4ef9u0tvx7u", + "validator_address": "cosmosvaloper1sjllsnramtg3ewxqwwrwjxfgc4n4ef9u2lcnj0", + "pubkey": "cosmosvalconspub1zcjduepq6fpkt3qn9xd7u44478ypkhrvtx45uhfj3uhdny420hzgsssrvh3qnzwdpe", + "value": { + "denom": "uatom", + "amount": "19000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A2/+IgTx8HlG4xa68Nkw6dXOWobR+PFOKDhMTrYS5q0r" + }, + "signature": "gOrq4fFvvAB9fCh561hK8lzKPklftQoowQ7u52gkk1Zk13i0bYa3V/aFCZWXIaxlBs74Z2jlxXHGg64TYorrYw==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "StakeWith.Us", + "identity": "", + "website": "https://stakewith.us", + "details": "Secured Staking Made Easy. Put Your Crypto to Work - Hassle Free. Disclaimer: Delegators should understand that delegation comes with slashing risk. By delegating to StakeWithUs Pte Ltd, you acknowledge that StakeWithUs Pte Ltd is not liable for any losses on your investment." + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1urtpxwfuu8k57aqt0h5zhsvmjt4m2mmdxmxfwm", + "validator_address": "cosmosvaloper1urtpxwfuu8k57aqt0h5zhsvmjt4m2mmdr0juzg", + "pubkey": "cosmosvalconspub1zcjduepqqf375ynp09sdnfdld0h0y5guphjr0pey06tjnfatrk2ck96vzvcq0r0kxj", + "value": { + "denom": "uatom", + "amount": "12680000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A9QrxM2cU3P1k021CIDIsieZxK83etp7wQQB7IxF7pCL" + }, + "signature": "vxaaUIsfe0nJxYgjAA6kPq9uOJvrX3oxMfOojpnBpp9RuxqN6eJfmsfV3ZOlaF4kZwQZVWeEiHAiH+YtZhM8tA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Staking Facilities", + "identity": "6B0DF6793DE1FB1F", + "website": "stakingfacilities.com", + "details": "Earn rewards with one of the most experienced and secure validators. More than 150k USD in customer rewards paid out. We exclude liability for any financial damage resulting from delegating." + }, + "commission": { + "rate": "0.150000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "100000000000", + "delegator_address": "cosmos1x88j7vp2xnw3zec8ur3g4waxycyz7m0mcreeaj", + "validator_address": "cosmosvaloper1x88j7vp2xnw3zec8ur3g4waxycyz7m0mahdv3p", + "pubkey": "cosmosvalconspub1zcjduepqhm6gjjkwecqyfrgey96s5up7drnspnl4t3rdr79grklkg9ff6zaqnfl2dg", + "value": { + "denom": "uatom", + "amount": "100000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Aubaj/1yDFn0RecGGbjuWBun0rXWKO99oT5mfaAMwtKi" + }, + "signature": "m7QOXS7YQgJQOUgE3LXggI0Inz1/H6fjiUXuRDd6xDUgaLRdaBERJFX/491Z/9UPodukO8GAieQqNjLVupk3hA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Staking Fund ✔ - Winner of the GoS", + "identity": "805F39B20E881861", + "website": "https://www.staking.fund", + "details": "Staking Fund has been participating in the validating role since early 2018, and we are a proud winner of the Game of Stakes." + }, + "commission": { + "rate": "0.010000000000000000", + "max_rate": "0.334000000000000000", + "max_change_rate": "0.012019031323000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1000ya26q2cmh399q4c5aaacd9lmmdqp92z6l7q", + "validator_address": "cosmosvaloper1000ya26q2cmh399q4c5aaacd9lmmdqp90kw2jn", + "pubkey": "cosmosvalconspub1zcjduepqe93asg05nlnj30ej2pe3r8rkeryyuflhtfw3clqjphxn4j3u27msrr63nk", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A0sSh9hdJ/AmahR47jRwcMRtvUE5Q582oHRduBDzLwDd" + }, + "signature": "J5rzM9Vo/uegl2GTLb6/deJOrlCBTLhf/EDS1wPu2/Q/yvodFJxQXlfUo7RIp05+6u19AWVNBJhh2w/HKkGBWg==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "syncnode", + "identity": "", + "website": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos19j2hd230c3hw6ds843yu8akc0xgvdvyu83c6xl", + "validator_address": "cosmosvaloper19j2hd230c3hw6ds843yu8akc0xgvdvyuz9v02v", + "pubkey": "cosmosvalconspub1zcjduepq9ge7uqrfp9qkdapzd29tjtwrqpt2mm9meptx395ygxgm40tdc8ysrzj40a", + "value": { + "denom": "uatom", + "amount": "1495000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ahnp+4CCJLf8bdFqYv+6FN3dYAEx5fKwaVwOcKKumGzn" + }, + "signature": "7BhOphVBSpsrzz96uGT+LtW24f1nQxIJ6Z4UyaPZAp0X+/8S8mbdKylTnzxcW3THkuwgur2nGkqEWXjDpFbJLw==" + } + ], + "memo": "fbc52e72126c560697a7d9bddc969746c451859c@116.202.25.145:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Tezos Capital", + "identity": "", + "website": "https://tezos.capital", + "details": "" + }, + "commission": { + "rate": "0.200000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1s7jnk7t6yqzensdgpvkvkag022udk8429exc87", + "validator_address": "cosmosvaloper1s7jnk7t6yqzensdgpvkvkag022udk842qdjdtd", + "pubkey": "cosmosvalconspub1zcjduepqnnh28nlj55sc329ppnhcr0xx7kuc9vnsp3dpwc28wdhhxtjc7jfs9k57f7", + "value": { + "denom": "uatom", + "amount": "1500000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ag+I0OzjX2AHatgaW1kJjNRs+Ck/2UQe8t0eDr5Av3/6" + }, + "signature": "pFmZrSFtfH/LrHnLAyWvs9o/YJJDb9TA5RbnKxmLua1rNlOv3x+zHgelJeFCsy8n4qedMqZ9QZbxJ7snUZacQA==" + } + ], + "memo": "" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Umbrella", + "identity": "A530AC4D75991FE2", + "website": "https://umbrellavalidator.com", + "details": "Validating service from the USA ☔" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "cosmos1lktjhnzkpkz3ehrg8psvmwhafg56kfss5597tg", + "validator_address": "cosmosvaloper1lktjhnzkpkz3ehrg8psvmwhafg56kfss3q3t8m", + "pubkey": "cosmosvalconspub1zcjduepqelcwpat987h9yq0ck6g9fsc8t0mththk547gwvk0w4wnkpl0stnspr3hdc", + "value": { + "denom": "uatom", + "amount": "666" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AqunADN83SgkEatv9N7TKhxzYgXxYC39Gt+xEBKu1/2g" + }, + "signature": "IYdZ3q6fZ39EOgn8SJMc8YNRJA0yoJ0f+vD/iIcZCfs5MzbZNzckuxMhXGfQ1MOBHdMEA55Ia1+GABWEI8iAYA==" + } + ], + "memo": "🚀" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Validator Network", + "identity": "357F80896B3311B4", + "website": "https://validator.network", + "details": "Highly resilient and secure validator operating out of Northern Europe. See website for terms of service." + }, + "commission": { + "rate": "0.125000000000000000", + "max_rate": "1.000000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "100000000", + "delegator_address": "cosmos1sxx9mszve0gaedz5ld7qdkjkfv8z992arw3rr5", + "validator_address": "cosmosvaloper1sxx9mszve0gaedz5ld7qdkjkfv8z992ax69k08", + "pubkey": "cosmosvalconspub1zcjduepqjnnwe2jsywv0kfc97pz04zkm7tc9k2437cde2my3y5js9t7cw9mstfg3sa", + "value": { + "denom": "uatom", + "amount": "14000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A874FW2YoONx6zbQemNXwaJSqtQ6Wb9BRg0HRLWvtp2o" + }, + "signature": "DVtmJ7kqp3rdMktRn/0yHTr6zsCJBH5R4/qNHVELm1hOCwKP3nRp2Udb8EEhorqMt0Q83T7zP14nwttFagox/w==" + } + ], + "memo": "4e2e13e5552000e0a80eac8a4f291a0a3e4012f8@52.57.20.18:26656" + } + }, + { + "type": "auth/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgCreateValidator", + "value": { + "description": { + "moniker": "Ztake.org", + "identity": "", + "website": "https://ztake.org/", + "details": "We are a team of tech-savvy blockchain developers and enthusiasts who run nodes on PoS and PoA blockchains. We took care all of the technical setup needed, so that you could easily stake your assets." + }, + "commission": { + "rate": "0.081000000000000000", + "max_rate": "0.250000000000000000", + "max_change_rate": "0.100000000000000000" + }, + "min_self_delegation": "10", + "delegator_address": "cosmos102ruvpv2srmunfffxavttxnhezln6fnc3pf7tt", + "validator_address": "cosmosvaloper102ruvpv2srmunfffxavttxnhezln6fnc54at8c", + "pubkey": "cosmosvalconspub1zcjduepq9weu2v0za8fdcvx0w3ps972k5v7sm6h5as9qaznc437vwpfxu37q0f3lyg", + "value": { + "denom": "uatom", + "amount": "5000000000" + } + } + } + ], + "fee": { + "amount": null, + "gas": "200000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "ApAH7o7BzCs5sI0aACr5yojkRm4A84GG8IO9zMBaxyf1" + }, + "signature": "k6UTw4nGFkx/Bq8OosgCL05iu6mfusciANxHRHJQkpxmeujy/ehMXFvrh7ELdycKhLHR+P+7RoKdLNIUSvqs0Q==" + } + ], + "memo": "" + } + } + ] + } + } + } +} From e6d378827a712b22415c428f0baed270fe860fce Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 20 Apr 2019 17:43:54 -0700 Subject: [PATCH 06/10] tendermint-rs: /validators RPC endpoint --- tendermint-rs/src/lib.rs | 2 + tendermint-rs/src/rpc/endpoint.rs | 1 + tendermint-rs/src/rpc/endpoint/block.rs | 2 +- tendermint-rs/src/rpc/endpoint/status.rs | 57 +- tendermint-rs/src/rpc/endpoint/validators.rs | 39 ++ tendermint-rs/src/validator.rs | 57 ++ tendermint-rs/src/vote.rs | 44 ++ tendermint-rs/tests/rpc.rs | 11 +- .../tests/support/{ => rpc}/block.json | 0 .../tests/support/{ => rpc}/genesis.json | 0 .../tests/support/{ => rpc}/net_info.json | 0 .../tests/support/{ => rpc}/status.json | 0 .../tests/support/rpc/validators.json | 594 ++++++++++++++++++ 13 files changed, 751 insertions(+), 56 deletions(-) create mode 100644 tendermint-rs/src/rpc/endpoint/validators.rs create mode 100644 tendermint-rs/src/validator.rs create mode 100644 tendermint-rs/src/vote.rs rename tendermint-rs/tests/support/{ => rpc}/block.json (100%) rename tendermint-rs/tests/support/{ => rpc}/genesis.json (100%) rename tendermint-rs/tests/support/{ => rpc}/net_info.json (100%) rename tendermint-rs/tests/support/{ => rpc}/status.json (100%) create mode 100644 tendermint-rs/tests/support/rpc/validators.json diff --git a/tendermint-rs/src/lib.rs b/tendermint-rs/src/lib.rs index d1f93db..4a587dd 100644 --- a/tendermint-rs/src/lib.rs +++ b/tendermint-rs/src/lib.rs @@ -52,7 +52,9 @@ mod serializers; pub mod signature; pub mod timestamp; pub mod transaction; +pub mod validator; mod version; +pub mod vote; #[cfg(feature = "rpc")] pub use crate::genesis::Genesis; diff --git a/tendermint-rs/src/rpc/endpoint.rs b/tendermint-rs/src/rpc/endpoint.rs index 874f92c..3bb3cce 100644 --- a/tendermint-rs/src/rpc/endpoint.rs +++ b/tendermint-rs/src/rpc/endpoint.rs @@ -4,3 +4,4 @@ pub mod block; pub mod genesis; pub mod net_info; pub mod status; +pub mod validators; diff --git a/tendermint-rs/src/rpc/endpoint/block.rs b/tendermint-rs/src/rpc/endpoint/block.rs index ac904d7..96ba1a3 100644 --- a/tendermint-rs/src/rpc/endpoint/block.rs +++ b/tendermint-rs/src/rpc/endpoint/block.rs @@ -13,7 +13,7 @@ pub struct Request { impl Request { /// Create a new request for information about a particular block - pub fn new(height: block::Height) -> Self { + pub fn new(height: block::Height) -> Self { Self { height } } } diff --git a/tendermint-rs/src/rpc/endpoint/status.rs b/tendermint-rs/src/rpc/endpoint/status.rs index 17a6bea..8e23c9b 100644 --- a/tendermint-rs/src/rpc/endpoint/status.rs +++ b/tendermint-rs/src/rpc/endpoint/status.rs @@ -1,7 +1,7 @@ //! `/status` endpoint JSONRPC wrapper -use crate::{account, block, node, rpc, Hash, PublicKey, Timestamp}; -use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; +use crate::{block, node, rpc, validator, Hash, Timestamp}; +use serde::{Deserialize, Serialize}; /// Node status request #[derive(Debug, Default)] @@ -25,7 +25,7 @@ pub struct Response { pub sync_info: SyncInfo, /// Validator information - pub validator_info: ValidatorInfo, + pub validator_info: validator::Info, } impl rpc::Response for Response {} @@ -48,54 +48,3 @@ pub struct SyncInfo { /// Are we catching up? pub catching_up: bool, } - -/// Validator information -#[derive(Clone, Debug, Deserialize, Serialize)] -pub struct ValidatorInfo { - /// Validator account address - pub address: account::Id, - - /// Validator public key - pub pub_key: PublicKey, - - /// Validator voting power - pub voting_power: VotingPower, -} - -/// Voting power -#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] -pub struct VotingPower(u64); - -impl VotingPower { - /// Get the current voting power - pub fn value(self) -> u64 { - self.0 - } - - /// Is the current voting power zero? - pub fn is_zero(self) -> bool { - self.0 == 0 - } -} - -impl From for u64 { - fn from(power: VotingPower) -> u64 { - power.0 - } -} - -impl<'de> Deserialize<'de> for VotingPower { - fn deserialize>(deserializer: D) -> Result { - Ok(VotingPower( - String::deserialize(deserializer)? - .parse() - .map_err(|e| D::Error::custom(format!("{}", e)))?, - )) - } -} - -impl Serialize for VotingPower { - fn serialize(&self, serializer: S) -> Result { - self.0.to_string().serialize(serializer) - } -} diff --git a/tendermint-rs/src/rpc/endpoint/validators.rs b/tendermint-rs/src/rpc/endpoint/validators.rs new file mode 100644 index 0000000..244ea4f --- /dev/null +++ b/tendermint-rs/src/rpc/endpoint/validators.rs @@ -0,0 +1,39 @@ +//! `/validators` endpoint JSONRPC wrapper + +use crate::{block, rpc, validator}; +use serde::{Deserialize, Serialize}; + +/// List validators for a specific block +pub struct Request { + height: block::Height, +} + +impl Request { + /// List validators for a specific block + pub fn new(height: block::Height) -> Self { + Self { height } + } +} + +impl rpc::Request for Request { + type Response = Response; + + fn path(&self) -> rpc::request::Path { + // TODO(tarcieri): use a `uri` crate to construct this? + format!("/validators?height={}", self.height) + .parse() + .unwrap() + } +} + +/// Validator responses +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Response { + /// Block height + pub block_height: block::Height, + + /// Validator list + pub validators: Vec, +} + +impl rpc::Response for Response {} diff --git a/tendermint-rs/src/validator.rs b/tendermint-rs/src/validator.rs new file mode 100644 index 0000000..5301400 --- /dev/null +++ b/tendermint-rs/src/validator.rs @@ -0,0 +1,57 @@ +//! Tendermint validators + +use crate::{account, vote, PublicKey}; +#[cfg(feature = "serde")] +use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; + +/// Validator information +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Clone, Debug)] +pub struct Info { + /// Validator account address + pub address: account::Id, + + /// Validator public key + pub pub_key: PublicKey, + + /// Validator voting power + pub voting_power: vote::Power, + + /// Validator proposer priority + pub proposer_priority: Option, +} + +/// Proposer priority +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +pub struct ProposerPriority(i64); + +impl ProposerPriority { + /// Get the current voting power + pub fn value(self) -> i64 { + self.0 + } +} + +impl From for i64 { + fn from(priority: ProposerPriority) -> i64 { + priority.value() + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for ProposerPriority { + fn deserialize>(deserializer: D) -> Result { + Ok(ProposerPriority( + String::deserialize(deserializer)? + .parse() + .map_err(|e| D::Error::custom(format!("{}", e)))?, + )) + } +} + +#[cfg(feature = "serde")] +impl Serialize for ProposerPriority { + fn serialize(&self, serializer: S) -> Result { + self.0.to_string().serialize(serializer) + } +} diff --git a/tendermint-rs/src/vote.rs b/tendermint-rs/src/vote.rs new file mode 100644 index 0000000..3e0fae2 --- /dev/null +++ b/tendermint-rs/src/vote.rs @@ -0,0 +1,44 @@ +//! Votes + +#[cfg(feature = "serde")] +pub use serde::{de::Error as DeError, Deserialize, Deserializer, Serialize, Serializer}; + +/// Voting power +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +pub struct Power(u64); + +impl Power { + /// Get the current voting power + pub fn value(self) -> u64 { + self.0 + } + + /// Is the current voting power zero? + pub fn is_zero(self) -> bool { + self.0 == 0 + } +} + +impl From for u64 { + fn from(power: Power) -> u64 { + power.0 + } +} + +#[cfg(feature = "serde")] +impl<'de> Deserialize<'de> for Power { + fn deserialize>(deserializer: D) -> Result { + Ok(Power( + String::deserialize(deserializer)? + .parse() + .map_err(|e| D::Error::custom(format!("{}", e)))?, + )) + } +} + +#[cfg(feature = "serde")] +impl Serialize for Power { + fn serialize(&self, serializer: S) -> Result { + self.0.to_string().serialize(serializer) + } +} diff --git a/tendermint-rs/tests/rpc.rs b/tendermint-rs/tests/rpc.rs index 60dc46d..23ed019 100644 --- a/tendermint-rs/tests/rpc.rs +++ b/tendermint-rs/tests/rpc.rs @@ -6,7 +6,7 @@ mod endpoints { use tendermint::rpc::{endpoint, Response}; fn read_json_fixture(name: &str) -> String { - fs::read_to_string(PathBuf::from("./tests/support/").join(name.to_owned() + ".json")) + fs::read_to_string(PathBuf::from("./tests/support/rpc/").join(name.to_owned() + ".json")) .unwrap() } @@ -71,4 +71,13 @@ mod endpoints { ); assert_eq!(status_response.validator_info.voting_power.value(), 0); } + + #[test] + fn validators() { + let validators_json = read_json_fixture("validators"); + let validators_response = + endpoint::validators::Response::from_json(&validators_json).unwrap(); + + println!("validators: {:?}", validators_response); + } } diff --git a/tendermint-rs/tests/support/block.json b/tendermint-rs/tests/support/rpc/block.json similarity index 100% rename from tendermint-rs/tests/support/block.json rename to tendermint-rs/tests/support/rpc/block.json diff --git a/tendermint-rs/tests/support/genesis.json b/tendermint-rs/tests/support/rpc/genesis.json similarity index 100% rename from tendermint-rs/tests/support/genesis.json rename to tendermint-rs/tests/support/rpc/genesis.json diff --git a/tendermint-rs/tests/support/net_info.json b/tendermint-rs/tests/support/rpc/net_info.json similarity index 100% rename from tendermint-rs/tests/support/net_info.json rename to tendermint-rs/tests/support/rpc/net_info.json diff --git a/tendermint-rs/tests/support/status.json b/tendermint-rs/tests/support/rpc/status.json similarity index 100% rename from tendermint-rs/tests/support/status.json rename to tendermint-rs/tests/support/rpc/status.json diff --git a/tendermint-rs/tests/support/rpc/validators.json b/tendermint-rs/tests/support/rpc/validators.json new file mode 100644 index 0000000..056ddd3 --- /dev/null +++ b/tendermint-rs/tests/support/rpc/validators.json @@ -0,0 +1,594 @@ +{ + "jsonrpc": "2.0", + "id": "", + "result": { + "block_height": "42", + "validators": [ + { + "address": "000001E443FD237E4B616E2FA69DF4EE3D49A94F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9tK9IT+FPdf2qm+5c2qaxi10sWP+3erWTKgftn2PaQM=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "000AA5ABF590A815EBCBDAE070AFF50BE571EB8B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "yWPYIfSf5yi/MlBzEZx2yMhOJ/daXRx8Eg3NOso8V7c=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "02A248C86C78ED6A824D510A8B7AA4C1D290D2DC", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "by0WjAY1EHgpi2fCIvggfrmvZdOjl+GpyGLnlySbIVE=" + }, + "voting_power": "100000", + "proposer_priority": "-987557" + }, + { + "address": "064CF05857B556FED63AC32821FF904312D0F2C8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "zXKJLZjLusy5tRs5bNoafLPTB5LLP6tZGHSeG4TIRGE=" + }, + "voting_power": "100000", + "proposer_priority": "-987557" + }, + { + "address": "099E2B09583331AFDE35E5FA96673D2CA7DEA316", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "e3BehnEIlGUAnJYn9V8gBXuMh4tXO8xxlxyXD1APGyk=" + }, + "voting_power": "30000", + "proposer_priority": "-2116475" + }, + { + "address": "18C78D135C9D81D74F6234DBD268C47F0F89E844", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "FrxZm4ptkt0QtyLA5iVCqTmWD6AlrbVXVeornQlePeI=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "1E9CE94FD0BA5CFEB901F90BC658D64D85B134D2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "TwzOJ4GcN+ZTswub4R8488SrKeWXjY/PaqCF5neXJig=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "2199EAE894CA391FA82F01C2C614BFEB103D056C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "C+VWc34ZF6n/QoIAXo4191OwKxQWpbFnrGKCqcNbe1E=" + }, + "voting_power": "100000", + "proposer_priority": "-987557" + }, + { + "address": "2B19594437F1920B5AF6461FAB81AEC99790FEB1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Sj+idSMfzPh20CuVPqQr3H7NsE5rr7ZAGzV/rEwJn6E=" + }, + "voting_power": "200000", + "proposer_priority": "212443" + }, + { + "address": "2C9CCC317FB283D54AC748838A64F29106039E51", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZOvaws6Rz4Pl8mThEEh3IR7rsnx213jY9smYC1GcC6o=" + }, + "voting_power": "500", + "proposer_priority": "20500" + }, + { + "address": "31920F9BC3A39B66876CC7D6D5E589E10393BF0E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lh/p8UTp1kF8+4noOeInUG3PuWpFzk6Mnopj0updt4I=" + }, + "voting_power": "4500", + "proposer_priority": "184500" + }, + { + "address": "3363E8F97B02ECC00289E72173D827543047ACDA", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mPnu910hOOa1tAQ7pbOLFDxvllbQUmrbtGjqQrYg1nM=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "42D6705E716616B4A5442BDAA050B7C6E9FDDE43", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "K7PFMeLp0twwz3RDAvlWoz0N6vTsCg6KeKx8xwUm5Hw=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "4906F2A5334D906A4C63F9E9D61527A9F593C4EF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "1o6K5D3m5LNGg7R5gSp/37/hcy6y32FxaC3v09Cikbc=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "49BBFB1BA1A75052E3226E8E1E0EFEB33918B8B2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "fjKz5EcrpVII/MzwTF/d+3FHEIMJtSZfU9WMaH+b/Ok=" + }, + "voting_power": "100000", + "proposer_priority": "-1097557" + }, + { + "address": "4C92230FAC162303D981C06DD22663A4FC7622BC", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "QahmjM81l/oM+Yu8yUVFSi8UzyE/boMd6vTbSdpGFwE=" + }, + "voting_power": "10000", + "proposer_priority": "410000" + }, + { + "address": "4E9CB39F4B1FA617339744A5600B62802652D69C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nO6jz/KlIYiooQzvgbzG9bmCsnAMWhdhR3Nvcy5Y9JM=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "51DB2566204EE266427EA8A6CB719835AB170BE9", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ovdfH/edW89+uiB0lHC5OnCbQfKtkn8G1RHZiOP4sYQ=" + }, + "voting_power": "511", + "proposer_priority": "20951" + }, + { + "address": "57FEB2461AA77EC70036C636890B8F47CB4FCB0D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "SC5O3o35vzC4Z4RbtfltO6kOIewKd7na5XcITeOXvQQ=" + }, + "voting_power": "21", + "proposer_priority": "861" + }, + { + "address": "5AB353B748D45F20DFCE19D73BA89F26E1C34CF7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "P4WJpPDdcu7iXUg5JOWLOO7pUBYvHLNXKTlwvgNzbbI=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "671460930CCDC9B06C5D055E4D550EB8DAF2291E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2k346W3w8NFAQh21j1hBp+Mvur+ZhHFuEQk8DEOlN+c=" + }, + "voting_power": "5020", + "proposer_priority": "205260" + }, + { + "address": "679B89785973BE94D4FDF8B66F84A929932E91C5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Roh99RlsnDKHUFYUcQVHk2S84NeZfZdpc+CBb6NREhM=" + }, + "voting_power": "20", + "proposer_priority": "820" + }, + { + "address": "696ABC95186FD65A07050C28AB00C9358A315030", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "GghJGDl/JZSZ07B2ARdvvJ8SPKtoi/dh8PbYSui359I=" + }, + "voting_power": "1", + "proposer_priority": "41" + }, + { + "address": "6F5F44F6FD7CD1642FFB8B12215BAE814A1BE08C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "4FAoNAp3t+9epiDWRwjH38E5F9zDWet3ufHdQPjdaBM=" + }, + "voting_power": "20000", + "proposer_priority": "820000" + }, + { + "address": "70C5B4E6779C59A24CFD9146581E27021C2AEC26", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aek+Unn7MEILEBjeTqP3ONLJ6wwoQxC+6NuXY90xx0Q=" + }, + "voting_power": "6500", + "proposer_priority": "266500" + }, + { + "address": "732CEEF54C374DDC6ADECBFD707AEFD07FEDC143", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HjSC7VkhKih6xMhudlqfaFE8ZZnP8RKJPv4iqR7RhcE=" + }, + "voting_power": "3000", + "proposer_priority": "123000" + }, + { + "address": "77064757FCC7828F98B33525B4599DB0FD08DC37", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "cLeIVsGGVkt5M/YExv5I67pYj1uYmYcsvY60PIVIxB4=" + }, + "voting_power": "42", + "proposer_priority": "1722" + }, + { + "address": "7B3A2EFE5B3FCDF819FCF52607314CEFE4754BB6", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "11pGwt6bot1EC5xeug8mulFNBBWsHV+X7XrxLUmTNF8=" + }, + "voting_power": "4500", + "proposer_priority": "184500" + }, + { + "address": "7F225CB9ACF7D34C993807A7F9CB3B2851386DE1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "v6sR0bx6aRF0QxLbyIpKW4MTk9ndKf33PDN/uffH6NA=" + }, + "voting_power": "100", + "proposer_priority": "4100" + }, + { + "address": "808D6B054A0B6D3FF5F5EAF0A65CFC64C543F833", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "486fL5jJ7HOtGXXdkei2Sy1OijidPiiw4b/OhnCzNw4=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "81965FE8A15FA8078C9202F32E4CFA72F85F2A22", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "PflSgb+lC1GI22wc6N/54cNzD7KSYQyCWR5LuQxjYVY=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "8328647F309C8AA148CDA5595145E13E455CA704", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "AmPqEmF5YNmlv2vu8lEcDeQ3hyR+lymnqx2VixdMEzA=" + }, + "voting_power": "12680", + "proposer_priority": "519880" + }, + { + "address": "91C823A744DE50F91C17A46B624EDF8F7150A7DD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/VS/bgueXBoNDsrzxxaX64RIL//2wHb9VZ0Jd67+AqQ=" + }, + "voting_power": "595150", + "proposer_priority": "-474858" + }, + { + "address": "95E060D07713070FE9822F6C50BD76BCCBF9F17A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ahgQzIOmCh5+A9iGXJRh8AKNlk4NCcOiPebzZEuIN3A=" + }, + "voting_power": "1117675", + "proposer_priority": "324236" + }, + { + "address": "991B742CC8660B40321F77873644C195195D4178", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2HcS9L0H/gGduyui5z4BeyKmMDcG0GWp6Qu8WpekvcE=" + }, + "voting_power": "20000", + "proposer_priority": "820000" + }, + { + "address": "9C17C94F7313BB4D6E064287BEEDE5D3888E8855", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Mvh+7UDaXgmj4Fst0ZUdx++MJmoq4B9M6mdgNc8H2pM=" + }, + "voting_power": "100000", + "proposer_priority": "-1097557" + }, + { + "address": "9D07B301D23C547266D55D1B6C5A78CA473383A1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "oVap7iG9La5g76ufP2SaLz55rzlTSV833KRAqp+NOpU=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "9EE94DBB86F72337192BF291B0E767FD2729F00A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hATVIEvJ1NEt5g9i59iH+a8oaEFtErP227Qw7kgpWTc=" + }, + "voting_power": "14750", + "proposer_priority": "604750" + }, + { + "address": "AC2D56057CD84765E6FBE318979093E8E44AA18F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "0kNlxBMpm+5WtfHIG1xsWatOXTKPLtmSqn3EiEIDZeI=" + }, + "voting_power": "19000", + "proposer_priority": "779000" + }, + { + "address": "B00A6323737F321EB0B8D59C6FD497A14B60938A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "cOQZvh/h9ZioSeUMZB/1Vy1Xo5x2sjrVjlE/qHnYifM=" + }, + "voting_power": "397062", + "proposer_priority": "1874734" + }, + { + "address": "B0155252D73B7EEB74D2A8CC814397E66970A839", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "w3rKE+tQoLK8G+XPmjn+NszCk07iQ0sWaBbN5hQZcBY=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "B0765A2F6FCC11D8AC46275FAC06DD35F54217C1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "inTpwtq2gc0g86M+Sovdk7wCxe68QG0Kxr2XO9S/q+0=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "B34591DA79AAD0213534E2E915F50DE5CDBDF250", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "m0thJvdnGUsrANKJx+aM9Em4IN17v5mXHilLzDkeujQ=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "B4E1085F1C9EBB0EA994452CB1B8124BA89BED1A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "+LbXwDMu37jkBRBLFtXazRfEd2ytSAkIncZ/Ng+6jVI=" + }, + "voting_power": "20000", + "proposer_priority": "820000" + }, + { + "address": "B543A7DF48780AEFEF593A003CD060B593C4E6B5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "KjPuAGkJQWb0ImqKuS3DAFat7LvIVmiWhEGRur1twck=" + }, + "voting_power": "1495", + "proposer_priority": "61295" + }, + { + "address": "B6C5D0EEBE1ABB66039A90B80820C10A9CBCA95C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "AQJie+dfWUVPM0GPmCUqvFnjr6AMogDjiCPHaOc+LA0=" + }, + "voting_power": "100", + "proposer_priority": "4100" + }, + { + "address": "BAC33F340F3497751F124868F049EC2E8930AC2F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9KA7fKlALPdKPb7SM4UGlpnbSU4U9U1A4c3u8V2KdTs=" + }, + "voting_power": "131140", + "proposer_priority": "-93897" + }, + { + "address": "BF4CB4D59D19D451CF5E7BC49349DF4AA222D78B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "eInQcvrB2bkkSV1jwBPpVmUgywzgVCGuFqv4QRzQAos=" + }, + "voting_power": "1490", + "proposer_priority": "61090" + }, + { + "address": "C2356622B495725961B5B201A382DD57CD3305EC", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pZBzfgX8aJXz9tqGvz75NnJB0wAFsMrfxY6FTnYMZ0Q=" + }, + "voting_power": "100000", + "proposer_priority": "-1197557" + }, + { + "address": "C52ACDB32057F5C731BBDD48460B93C3500DD324", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lgJcii0W2QanDlXpb/9gZJAJ3X9l+tqArhYAmNUJ1lw=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "C6D8D6D4DD2A41D2D1B53982196519FA314E7CB4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "QWI1AcmT2WF8+2DewC5iVywd18elt9doqkegXVXV2yM=" + }, + "voting_power": "20000", + "proposer_priority": "820000" + }, + { + "address": "CA6696F5FE66A480BF21460319BE979930852DD0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "xQim88WOJcW/E9M8u4Ym+wN0Itoa1Nu4ubS/2jl236c=" + }, + "voting_power": "13000", + "proposer_priority": "533000" + }, + { + "address": "CC05882978FC5FDD6A7721687E14C0299AE004B8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "fUj2rJ8mWqSdo8FX47dhWni++/oxOSduCBgymD4GCiU=" + }, + "voting_power": "50000", + "proposer_priority": "-152660" + }, + { + "address": "CEB8DB4286061B32209D33E2ADF6756ACDD7E005", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pDgRB4ZUupIx+gOU2bXpFC7VZnvPSiz2xc74pK6Dgec=" + }, + "voting_power": "1000", + "proposer_priority": "41000" + }, + { + "address": "D14A542E8756C3A942D9FD8873DC2E9A7798A17F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Zvd+ILfG9q1jPnZfOOYdZOuNLThLdCRPkvRV+HrXkCs=" + }, + "voting_power": "1500", + "proposer_priority": "61500" + }, + { + "address": "D3DB7197312CD60A71E291A66D430B20D197CF41", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "K9Sxg6Dc+9JR161k2R/yCoGeIQcenTp1OzCcEZFPo14=" + }, + "voting_power": "100000", + "proposer_priority": "-1197567" + }, + { + "address": "D4C63291134A25AB7E0AF43C08039341D733733B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "MN4/P8vTZE2djhgiWXuVXHEoG1br+vP3LipBc92Uekg=" + }, + "voting_power": "1000", + "proposer_priority": "41000" + }, + { + "address": "D9F8A41B782AA6A66ADC81F953923C7DCE7B6001", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "n9bW9hmvwSwm/AnJtDwZNGA+2RSoQsfoMFsc2Rrb0vY=" + }, + "voting_power": "4800", + "proposer_priority": "196800" + }, + { + "address": "DA6AAAA959C9EF88A3EB37B1F107CB2667EBBAAB", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "KbhRasSMxRtStejqK/Ayzexm/DtavlfbNjWGznPXMlE=" + }, + "voting_power": "4900", + "proposer_priority": "200900" + }, + { + "address": "E800740C68C81B30345C3AE2BA638FA56FF67EEF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vvSJSs7OAESNGSF1CnA+aOcAz/VcRtH4qB2/ZBUp0Lo=" + }, + "voting_power": "100000", + "proposer_priority": "-1197567" + }, + { + "address": "EE73A19751D58C5EC044C11E3FB7AE685A10D2C1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lObsqlAjmPsnBfBE+orb8vBbKrH2G5VskSUlAq/YcXc=" + }, + "voting_power": "14000", + "proposer_priority": "574000" + }, + { + "address": "F1755B14D0F358747185935F820FC06BE602B51F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ppQFrqp0Ab3u4ZUZtAYtCMOcfFinKeu1lgg9pU13HFg=" + }, + "voting_power": "5000", + "proposer_priority": "205000" + }, + { + "address": "F4CAB410DE5567DB203BD56C694FB78D482479A1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZihmjCxvIZinDz1hTU69024uNIKWyOkZVE2Q5Sbwl58=" + }, + "voting_power": "100", + "proposer_priority": "4100" + }, + { + "address": "F919902709B7482F01C030E8B57BF93B8D87043B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "TaxOZNOCv+G5WzK3Apz3z27xyZVWSgOeGMR3ClxIrQM=" + }, + "voting_power": "100000", + "proposer_priority": "-1791217" + }, + { + "address": "FA0E5DFACCDCF74957A742144FE55BE61D433377", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "SgJAVNasC6tDdkjH6XM9LbbTW/S6y1MgJsqq/1Y8Lhk=" + }, + "voting_power": "2500", + "proposer_priority": "102500" + } + ] + } +} From c6c30770385cc1a845716c1d00ddbcadfd7af818 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 20 Apr 2019 18:19:43 -0700 Subject: [PATCH 07/10] tendermint-rs: /commit RPC endpoint This commit also includes a bunch of new documentation, and renames the `Timestamp` type to `Time` to better match upstream Tendermint. --- tendermint-rs/src/amino_types/time.rs | 10 +- tendermint-rs/src/block.rs | 17 +- tendermint-rs/src/block/commit.rs | 18 + tendermint-rs/src/block/header.rs | 35 +- tendermint-rs/src/block/id.rs | 21 +- tendermint-rs/src/chain/info.rs | 4 +- tendermint-rs/src/commit.rs | 64 -- tendermint-rs/src/evidence.rs | 39 +- tendermint-rs/src/genesis.rs | 4 +- tendermint-rs/src/lib.rs | 6 +- tendermint-rs/src/public_key.rs | 112 +-- tendermint-rs/src/rpc/endpoint.rs | 1 + tendermint-rs/src/rpc/endpoint/commit.rs | 53 ++ tendermint-rs/src/rpc/endpoint/net_info.rs | 4 +- tendermint-rs/src/rpc/endpoint/status.rs | 4 +- tendermint-rs/src/{timestamp.rs => time.rs} | 49 +- tendermint-rs/src/transaction.rs | 42 +- tendermint-rs/src/vote.rs | 124 ++- tendermint-rs/src/vote/power.rs | 44 + tendermint-rs/tests/rpc.rs | 8 + tendermint-rs/tests/support/rpc/commit.json | 862 ++++++++++++++++++++ 21 files changed, 1279 insertions(+), 242 deletions(-) create mode 100644 tendermint-rs/src/block/commit.rs delete mode 100644 tendermint-rs/src/commit.rs create mode 100644 tendermint-rs/src/rpc/endpoint/commit.rs rename tendermint-rs/src/{timestamp.rs => time.rs} (60%) create mode 100644 tendermint-rs/src/vote/power.rs create mode 100644 tendermint-rs/tests/support/rpc/commit.json diff --git a/tendermint-rs/src/amino_types/time.rs b/tendermint-rs/src/amino_types/time.rs index e80817f..af942c1 100644 --- a/tendermint-rs/src/amino_types/time.rs +++ b/tendermint-rs/src/amino_types/time.rs @@ -2,7 +2,7 @@ use crate::{ error::Error, - timestamp::{ParseTimestamp, Timestamp}, + time::{ParseTimestamp, Time}, }; use chrono::{TimeZone, Utc}; use std::time::{Duration, SystemTime, UNIX_EPOCH}; @@ -19,15 +19,15 @@ pub struct TimeMsg { } impl ParseTimestamp for TimeMsg { - fn parse_timestamp(&self) -> Result { + fn parse_timestamp(&self) -> Result { Ok(Utc.timestamp(self.seconds, self.nanos as u32).into()) } } -impl From for TimeMsg { - fn from(ts: Timestamp) -> TimeMsg { +impl From