Unfinished progress
This commit is contained in:
		
							parent
							
								
									0e1a14a628
								
							
						
					
					
						commit
						4a57aec472
					
				| @ -19,6 +19,7 @@ pub mod exit; | |||||||
| pub mod fork; | pub mod fork; | ||||||
| pub mod free_attestation; | pub mod free_attestation; | ||||||
| pub mod pending_attestation; | pub mod pending_attestation; | ||||||
|  | pub mod proposal; | ||||||
| pub mod proposal_signed_data; | pub mod proposal_signed_data; | ||||||
| pub mod proposer_slashing; | pub mod proposer_slashing; | ||||||
| pub mod readers; | pub mod readers; | ||||||
| @ -57,6 +58,7 @@ pub use crate::exit::Exit; | |||||||
| pub use crate::fork::Fork; | pub use crate::fork::Fork; | ||||||
| pub use crate::free_attestation::FreeAttestation; | pub use crate::free_attestation::FreeAttestation; | ||||||
| pub use crate::pending_attestation::PendingAttestation; | pub use crate::pending_attestation::PendingAttestation; | ||||||
|  | pub use crate::proposal::Proposal; | ||||||
| pub use crate::proposal_signed_data::ProposalSignedData; | pub use crate::proposal_signed_data::ProposalSignedData; | ||||||
| pub use crate::proposer_slashing::ProposerSlashing; | pub use crate::proposer_slashing::ProposerSlashing; | ||||||
| pub use crate::slashable_attestation::SlashableAttestation; | pub use crate::slashable_attestation::SlashableAttestation; | ||||||
|  | |||||||
							
								
								
									
										46
									
								
								eth2/types/src/proposal.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								eth2/types/src/proposal.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | use crate::test_utils::TestRandom; | ||||||
|  | use crate::{Hash256, Slot}; | ||||||
|  | use bls::Signature; | ||||||
|  | use rand::RngCore; | ||||||
|  | use serde_derive::Serialize; | ||||||
|  | use ssz_derive::{Decode, Encode, TreeHash}; | ||||||
|  | use test_random_derive::TestRandom; | ||||||
|  | 
 | ||||||
|  | #[derive(Debug, PartialEq, Clone, Serialize, Encode, Decode, TreeHash, TestRandom)] | ||||||
|  | pub struct Proposal { | ||||||
|  |     pub slot: Slot, | ||||||
|  |     /// Shard number (spec.beacon_chain_shard_number for beacon chain)
 | ||||||
|  |     pub shard: u64, | ||||||
|  |     pub block_root: Hash256, | ||||||
|  |     pub signature: Signature, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[cfg(test)] | ||||||
|  | mod tests { | ||||||
|  |     use super::*; | ||||||
|  |     use crate::test_utils::{SeedableRng, TestRandom, XorShiftRng}; | ||||||
|  |     use ssz::{ssz_encode, Decodable, TreeHash}; | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     pub fn test_ssz_round_trip() { | ||||||
|  |         let mut rng = XorShiftRng::from_seed([42; 16]); | ||||||
|  |         let original = Proposal::random_for_test(&mut rng); | ||||||
|  | 
 | ||||||
|  |         let bytes = ssz_encode(&original); | ||||||
|  |         let (decoded, _) = <_>::ssz_decode(&bytes, 0).unwrap(); | ||||||
|  | 
 | ||||||
|  |         assert_eq!(original, decoded); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     pub fn test_hash_tree_root_internal() { | ||||||
|  |         let mut rng = XorShiftRng::from_seed([42; 16]); | ||||||
|  |         let original = Proposal::random_for_test(&mut rng); | ||||||
|  | 
 | ||||||
|  |         let result = original.hash_tree_root_internal(); | ||||||
|  | 
 | ||||||
|  |         assert_eq!(result.len(), 32); | ||||||
|  |         // TODO: Add further tests
 | ||||||
|  |         // https://github.com/sigp/lighthouse/issues/170
 | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,6 +1,5 @@ | |||||||
| use super::ProposalSignedData; | use super::Proposal; | ||||||
| use crate::test_utils::TestRandom; | use crate::test_utils::TestRandom; | ||||||
| use bls::Signature; |  | ||||||
| use rand::RngCore; | use rand::RngCore; | ||||||
| use serde_derive::Serialize; | use serde_derive::Serialize; | ||||||
| use ssz_derive::{Decode, Encode, TreeHash}; | use ssz_derive::{Decode, Encode, TreeHash}; | ||||||
| @ -10,13 +9,14 @@ mod builder; | |||||||
| 
 | 
 | ||||||
| pub use builder::ProposerSlashingBuilder; | pub use builder::ProposerSlashingBuilder; | ||||||
| 
 | 
 | ||||||
|  | /// Two conflicting proposals from the same proposer (validator).
 | ||||||
|  | ///
 | ||||||
|  | /// Spec v0.4.0
 | ||||||
| #[derive(Debug, PartialEq, Clone, Serialize, Encode, Decode, TreeHash, TestRandom)] | #[derive(Debug, PartialEq, Clone, Serialize, Encode, Decode, TreeHash, TestRandom)] | ||||||
| pub struct ProposerSlashing { | pub struct ProposerSlashing { | ||||||
|     pub proposer_index: u64, |     pub proposer_index: u64, | ||||||
|     pub proposal_data_1: ProposalSignedData, |     pub proposer_1: Proposal, | ||||||
|     pub proposal_signature_1: Signature, |     pub proposer_2: Proposal, | ||||||
|     pub proposal_data_2: ProposalSignedData, |  | ||||||
|     pub proposal_signature_2: Signature, |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user