deserialize new seal
This commit is contained in:
parent
1a9a142a69
commit
8509a183ed
@ -20,7 +20,7 @@ use std::str::FromStr;
|
|||||||
use serde::{Deserialize, Deserializer, Serialize, Serializer, Error};
|
use serde::{Deserialize, Deserializer, Serialize, Serializer, Error};
|
||||||
use serde::de::Visitor;
|
use serde::de::Visitor;
|
||||||
use rustc_serialize::hex::ToHex;
|
use rustc_serialize::hex::ToHex;
|
||||||
use util::hash::{H64 as Hash64, H160 as Hash160, H256 as Hash256, H2048 as Hash2048};
|
use util::hash::{H64 as Hash64, H160 as Hash160, H256 as Hash256, H520 as Hash520, H2048 as Hash2048};
|
||||||
|
|
||||||
|
|
||||||
macro_rules! impl_hash {
|
macro_rules! impl_hash {
|
||||||
@ -87,6 +87,7 @@ macro_rules! impl_hash {
|
|||||||
impl_hash!(H64, Hash64);
|
impl_hash!(H64, Hash64);
|
||||||
impl_hash!(Address, Hash160);
|
impl_hash!(Address, Hash160);
|
||||||
impl_hash!(H256, Hash256);
|
impl_hash!(H256, Hash256);
|
||||||
|
impl_hash!(H520, Hash520);
|
||||||
impl_hash!(Bloom, Hash2048);
|
impl_hash!(Bloom, Hash2048);
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -33,7 +33,7 @@ pub use self::builtin::{Builtin, Pricing, Linear};
|
|||||||
pub use self::genesis::Genesis;
|
pub use self::genesis::Genesis;
|
||||||
pub use self::params::Params;
|
pub use self::params::Params;
|
||||||
pub use self::spec::Spec;
|
pub use self::spec::Spec;
|
||||||
pub use self::seal::{Seal, Ethereum, Generic};
|
pub use self::seal::{Seal, Ethereum, AuthorityRoundSeal};
|
||||||
pub use self::engine::Engine;
|
pub use self::engine::Engine;
|
||||||
pub use self::state::State;
|
pub use self::state::State;
|
||||||
pub use self::ethash::{Ethash, EthashParams};
|
pub use self::ethash::{Ethash, EthashParams};
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
|
|
||||||
//! Spec seal deserialization.
|
//! Spec seal deserialization.
|
||||||
|
|
||||||
use hash::{H64, H256};
|
use hash::*;
|
||||||
|
use uint::Uint;
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
|
|
||||||
/// Ethereum seal.
|
/// Ethereum seal.
|
||||||
@ -29,11 +30,13 @@ pub struct Ethereum {
|
|||||||
pub mix_hash: H256,
|
pub mix_hash: H256,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generic seal.
|
/// AuthorityRound seal.
|
||||||
#[derive(Debug, PartialEq, Deserialize)]
|
#[derive(Debug, PartialEq, Deserialize)]
|
||||||
pub struct Generic {
|
pub struct AuthorityRoundSeal {
|
||||||
/// Seal rlp.
|
/// Seal step.
|
||||||
pub rlp: Bytes,
|
pub step: Uint,
|
||||||
|
/// Seal signature.
|
||||||
|
pub signature: H520,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Seal variants.
|
/// Seal variants.
|
||||||
@ -42,9 +45,12 @@ pub enum Seal {
|
|||||||
/// Ethereum seal.
|
/// Ethereum seal.
|
||||||
#[serde(rename="ethereum")]
|
#[serde(rename="ethereum")]
|
||||||
Ethereum(Ethereum),
|
Ethereum(Ethereum),
|
||||||
|
/// AuthorityRound seal.
|
||||||
|
#[serde(rename="authority_round")]
|
||||||
|
AuthorityRound(AuthorityRoundSeal),
|
||||||
/// Generic seal.
|
/// Generic seal.
|
||||||
#[serde(rename="generic")]
|
#[serde(rename="generic")]
|
||||||
Generic(Generic),
|
Generic(Bytes),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -53,15 +59,18 @@ mod tests {
|
|||||||
use spec::Seal;
|
use spec::Seal;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn builtin_deserialization() {
|
fn seal_deserialization() {
|
||||||
let s = r#"[{
|
let s = r#"[{
|
||||||
"ethereum": {
|
"ethereum": {
|
||||||
"nonce": "0x0000000000000042",
|
"nonce": "0x0000000000000042",
|
||||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
|
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
"generic": {
|
"generic": "0xe011bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa"
|
||||||
"rlp": "0xe011bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa"
|
},{
|
||||||
|
"authority_round": {
|
||||||
|
"step": "0x0",
|
||||||
|
"signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
||||||
}
|
}
|
||||||
}]"#;
|
}]"#;
|
||||||
let _deserialized: Vec<Seal> = serde_json::from_str(s).unwrap();
|
let _deserialized: Vec<Seal> = serde_json::from_str(s).unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user