Additional kovan params (#4892)
This commit is contained in:
		
							parent
							
								
									84fcefba1b
								
							
						
					
					
						commit
						43871e393c
					
				| @ -30,7 +30,8 @@ | ||||
|   "params": { | ||||
|     "maximumExtraDataSize": "0x20", | ||||
|     "minGasLimit": "0x1388", | ||||
|     "networkID" : "0x2A" | ||||
|     "networkID" : "0x2A", | ||||
|     "validateReceipts" : false | ||||
|   }, | ||||
|   "genesis": { | ||||
|     "seal": { | ||||
|  | ||||
| @ -393,7 +393,7 @@ impl Client { | ||||
| 			})?; | ||||
| 
 | ||||
| 			// Final Verification
 | ||||
| 			if let Err(e) = self.verifier.verify_block_final(header, locked_block.block().header()) { | ||||
| 			if let Err(e) = self.verifier.verify_block_final(header, locked_block.block().header(), self.engine().params().validate_receipts) { | ||||
| 				warn!(target: "client", "Stage 4 block verification failed for #{} ({})\nError: {:?}", header.number(), header.hash(), e); | ||||
| 				return Err(()); | ||||
| 			} | ||||
|  | ||||
| @ -55,6 +55,8 @@ pub struct CommonParams { | ||||
| 	pub fork_block: Option<(BlockNumber, H256)>, | ||||
| 	/// Number of first block where EIP-98 rules begin.
 | ||||
| 	pub eip98_transition: BlockNumber, | ||||
| 	/// Validate block receipts root.
 | ||||
| 	pub validate_receipts: bool, | ||||
| } | ||||
| 
 | ||||
| impl From<ethjson::spec::Params> for CommonParams { | ||||
| @ -68,6 +70,7 @@ impl From<ethjson::spec::Params> for CommonParams { | ||||
| 			min_gas_limit: p.min_gas_limit.into(), | ||||
| 			fork_block: if let (Some(n), Some(h)) = (p.fork_block, p.fork_hash) { Some((n.into(), h.into())) } else { None }, | ||||
| 			eip98_transition: p.eip98_transition.map_or(0, Into::into), | ||||
| 			validate_receipts: p.validate_receipts.unwrap_or(true), | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -31,7 +31,7 @@ impl Verifier for CanonVerifier { | ||||
| 		verification::verify_block_family(header, bytes, engine, bc) | ||||
| 	} | ||||
| 
 | ||||
| 	fn verify_block_final(&self, expected: &Header, got: &Header) -> Result<(), Error> { | ||||
| 		verification::verify_block_final(expected, got) | ||||
| 	fn verify_block_final(&self, expected: &Header, got: &Header, receipts: bool) -> Result<(), Error> { | ||||
| 		verification::verify_block_final(expected, got, receipts) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -31,7 +31,7 @@ impl Verifier for NoopVerifier { | ||||
| 		Ok(()) | ||||
| 	} | ||||
| 
 | ||||
| 	fn verify_block_final(&self, _expected: &Header, _got: &Header) -> Result<(), Error> { | ||||
| 	fn verify_block_final(&self, _expected: &Header, _got: &Header, _receipts: bool) -> Result<(), Error> { | ||||
| 		Ok(()) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -178,7 +178,7 @@ pub fn verify_block_family(header: &Header, bytes: &[u8], engine: &Engine, bc: & | ||||
| } | ||||
| 
 | ||||
| /// Phase 4 verification. Check block information against transaction enactment results,
 | ||||
| pub fn verify_block_final(expected: &Header, got: &Header) -> Result<(), Error> { | ||||
| pub fn verify_block_final(expected: &Header, got: &Header, check_receipts: bool) -> Result<(), Error> { | ||||
| 	if expected.gas_used() != got.gas_used() { | ||||
| 		return Err(From::from(BlockError::InvalidGasUsed(Mismatch { expected: expected.gas_used().clone(), found: got.gas_used().clone() }))) | ||||
| 	} | ||||
| @ -188,7 +188,7 @@ pub fn verify_block_final(expected: &Header, got: &Header) -> Result<(), Error> | ||||
| 	if expected.state_root() != got.state_root() { | ||||
| 		return Err(From::from(BlockError::InvalidStateRoot(Mismatch { expected: expected.state_root().clone(), found: got.state_root().clone() }))) | ||||
| 	} | ||||
| 	if expected.receipts_root() != got.receipts_root() { | ||||
| 	if check_receipts && expected.receipts_root() != got.receipts_root() { | ||||
| 		return Err(From::from(BlockError::InvalidReceiptsRoot(Mismatch { expected: expected.receipts_root().clone(), found: got.receipts_root().clone() }))) | ||||
| 	} | ||||
| 	Ok(()) | ||||
|  | ||||
| @ -26,5 +26,5 @@ pub trait Verifier: Send + Sync { | ||||
| 	/// Verify a block relative to its parent and uncles.
 | ||||
| 	fn verify_block_family(&self, header: &Header, bytes: &[u8], engine: &Engine, bc: &BlockProvider) -> Result<(), Error>; | ||||
| 	/// Do a final verification check for an enacted header vs its expected counterpart.
 | ||||
| 	fn verify_block_final(&self, expected: &Header, got: &Header) -> Result<(), Error>; | ||||
| 	fn verify_block_final(&self, expected: &Header, got: &Header, receipts: bool) -> Result<(), Error>; | ||||
| } | ||||
|  | ||||
| @ -53,6 +53,9 @@ pub struct Params { | ||||
| 	/// See `CommonParams` docs.
 | ||||
| 	#[serde(rename="eip98Transition")] | ||||
| 	pub eip98_transition: Option<Uint>, | ||||
| 	/// See `CommonParams` docs.
 | ||||
| 	#[serde(rename="validateReceipts")] | ||||
| 	pub validate_receipts: Option<bool>, | ||||
| } | ||||
| 
 | ||||
| #[cfg(test)] | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user