From 15448316141dd9a4ab482aafe013cd2d964fed22 Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Mon, 22 Oct 2018 15:59:54 +0800 Subject: [PATCH 1/3] Allow zero chain id in EIP155 signing process --- ethcore/transaction/src/transaction.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/ethcore/transaction/src/transaction.rs b/ethcore/transaction/src/transaction.rs index f5034c4b2ae..0a9ce311ead 100644 --- a/ethcore/transaction/src/transaction.rs +++ b/ethcore/transaction/src/transaction.rs @@ -90,8 +90,8 @@ pub mod signature { match v { v if v == 27 => 0, v if v == 28 => 1, - v if v > 36 => ((v - 1) % 2) as u8, - _ => 4 + v if v >= 35 => ((v - 1) % 2) as u8, + _ => 4 } } } @@ -583,6 +583,27 @@ mod tests { assert_eq!(t.chain_id(), None); } + #[test] + fn signing_no_eip155() { + use ethkey::{Random, Generator}; + + let key = Random.generate().unwrap(); + let t = Transaction { + action: Action::Create, + nonce: U256::from(42), + gas_price: U256::from(3000), + gas: U256::from(50_000), + value: U256::from(1), + data: b"Hello!".to_vec() + }; + + let hash = t.hash(Some(0)); + let sig = ::ethkey::sign(&key.secret(), &hash).unwrap(); + let u = t.with_signature(sig, Some(0)); + + assert!(SignedTransaction::new(u).is_ok()); + } + #[test] fn signing() { use ethkey::{Random, Generator}; From c1211a1352b28db59ef515e1f09898be632b155a Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Mon, 22 Oct 2018 17:24:46 +0800 Subject: [PATCH 2/3] Rename test --- ethcore/transaction/src/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/transaction/src/transaction.rs b/ethcore/transaction/src/transaction.rs index 0a9ce311ead..8a4e90aff56 100644 --- a/ethcore/transaction/src/transaction.rs +++ b/ethcore/transaction/src/transaction.rs @@ -584,7 +584,7 @@ mod tests { } #[test] - fn signing_no_eip155() { + fn signing_eip155_zero_chainid() { use ethkey::{Random, Generator}; let key = Random.generate().unwrap(); From fe75a3b6e1badc07e62dfe62f53f8519dba0c4f5 Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Fri, 26 Oct 2018 20:14:27 +0800 Subject: [PATCH 3/3] Fix test failure --- ethcore/transaction/src/transaction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethcore/transaction/src/transaction.rs b/ethcore/transaction/src/transaction.rs index 8a4e90aff56..ee37f68524d 100644 --- a/ethcore/transaction/src/transaction.rs +++ b/ethcore/transaction/src/transaction.rs @@ -364,7 +364,7 @@ impl UnverifiedTransaction { pub fn chain_id(&self) -> Option { match self.v { v if self.is_unsigned() => Some(v), - v if v > 36 => Some((v - 35) / 2), + v if v >= 35 => Some((v - 35) / 2), _ => None, } }