diff --git a/substrate/executor/src/native_executor.rs b/substrate/executor/src/native_executor.rs
index 92045ee976167d095bf575f7b16815eb94e29715..d9426be1cb3e0d9505b67566b33d8df34ec976ca 100644
--- a/substrate/executor/src/native_executor.rs
+++ b/substrate/executor/src/native_executor.rs
@@ -50,7 +50,18 @@ mod tests {
 
 	const BLOATY_CODE: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm");
 	const COMPACT_CODE: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm");
-	fn tx() -> Vec<u8> { "679fcf0a846b4224c84ecad7d91a26241c46d00cb53d6480a363274e8965ee34b0b80b4b2e3836d3d8f8f12c0c1aef7350af587d9aee3883561d11726068ac0a2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000228000000d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000".convert() }
+	fn tx() -> Vec<u8> {
+		let transaction = Transaction {
+			signed: one(),
+			nonce: 0,
+			function: Function::StakingTransfer,
+			input_data: two().to_vec().join(&69u64),
+		};
+		let signature = secret_for(&transaction.signed).unwrap()
+			.sign(&transaction.to_vec())
+			.inner();
+		UncheckedTransaction { transaction, signature }.to_vec()
+	}
 
 	#[test]
 	fn panic_execution_with_foreign_code_gives_error() {
@@ -185,7 +196,7 @@ mod tests {
 		construct_block(
 			2,
 			block1().1,
-			hex!("244289aaa48ad6aa39db860d8ec09295ee7f06d1addac3dc02aa993db8644008"),
+			hex!("2e69e4405a13981224078ad5355c68401bf56d0fe3f14a3536734666e6a8a047"),
 			vec![
 				Transaction {
 					signed: two(),
diff --git a/substrate/executor/src/wasm_executor.rs b/substrate/executor/src/wasm_executor.rs
index d1875b63714435c2585cb3dd8e9420a334465705..5b87270724ef7891432109a699b49c5564057ce0 100644
--- a/substrate/executor/src/wasm_executor.rs
+++ b/substrate/executor/src/wasm_executor.rs
@@ -293,6 +293,7 @@ mod tests {
 	use primitives::{blake2_256, twox_128};
 	use runtime_std::{self, TestExternalities};
 	use native_runtime::support::{one, two, StaticHexInto};
+	use native_runtime::primitives::AccountID;
 	use native_runtime::codec::KeyedVec;
 	use native_runtime::runtime::staking::balance;
 
@@ -402,7 +403,30 @@ mod tests {
 		);
 	}
 
-	fn tx() -> Vec<u8> { "679fcf0a846b4224c84ecad7d91a26241c46d00cb53d6480a363274e8965ee34b0b80b4b2e3836d3d8f8f12c0c1aef7350af587d9aee3883561d11726068ac0a2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000228000000d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000".convert() }
+	use primitives::ed25519::Pair;
+	fn secret_for(who: &AccountID) -> Option<Pair> {
+		match who {
+			x if *x == one() => Some(Pair::from_seed(b"12345678901234567890123456789012")),
+			x if *x == two() => Some("9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60".into()),
+			_ => None,
+		}
+	}
+
+	fn tx() -> Vec<u8> {
+		use native_runtime::codec::{Joiner, Slicable};
+		use native_runtime::support::{one, two};
+		use native_runtime::primitives::*;
+		let transaction = Transaction {
+			signed: one(),
+			nonce: 0,
+			function: Function::StakingTransfer,
+			input_data: two().to_vec().join(&69u64),
+		};
+		let signature = secret_for(&transaction.signed).unwrap()
+			.sign(&transaction.to_vec())
+			.inner();
+		UncheckedTransaction { transaction, signature }.to_vec()
+	}
 
 	#[test]
 	fn panic_execution_gives_error() {
diff --git a/substrate/primitives/src/ed25519.rs b/substrate/primitives/src/ed25519.rs
index e190c4f0189433b08a716d7ba43718da32b0a7c8..5bfffc2411d43e710cedfc7635d2b92c2be2b32f 100644
--- a/substrate/primitives/src/ed25519.rs
+++ b/substrate/primitives/src/ed25519.rs
@@ -224,13 +224,6 @@ mod test {
 		let public = pair.public();
 		assert_eq!(public, "2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee".into());
 		let message = b"Something important";
-		let signature = pair.sign(&message[..]);
-		assert!(signature.verify(&message[..], &public));
-	}
-
-	#[test]
-	fn can_sign_transaction() {
-		let pair = Pair::from_seed(b"12345678901234567890123456789012");
 		let public = pair.public();
 		assert_eq!(public, "2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee".into());
 		let message = FromHex::from_hex("2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000002228000000d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000").unwrap();
@@ -238,6 +231,5 @@ mod test {
 		use hexdisplay::HexDisplay;
 		println!("Correct signature: {}", HexDisplay::from(&signature.0));
 		assert!(signature.verify(&message[..], &public));
-		panic!();
 	}
 }
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm
index 4ff597b8c79dab280c2276d8a7debe6e61882b6e..745c95ccf5be004e450d5c6df6f60cf55901bbc4 100644
Binary files a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm and b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm differ
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm
index b02b09b63d8dbc4bfda896d0256d33823ece1c85..afb2e9471182c38c6edb769cf918f0daaeca009b 100644
Binary files a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm and b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm differ