From 677b79765b1b20e59e176915d44a3050b35886ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= <tomusdrw@users.noreply.github.com>
Date: Fri, 11 Jan 2019 19:24:25 +0100
Subject: [PATCH] Fix serialization of extrinsics. (#1402)

---
 substrate/core/sr-primitives/src/lib.rs | 8 +++++++-
 substrate/node/primitives/src/lib.rs    | 2 --
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/substrate/core/sr-primitives/src/lib.rs b/substrate/core/sr-primitives/src/lib.rs
index 2deb05c90f5..5c87782b048 100644
--- a/substrate/core/sr-primitives/src/lib.rs
+++ b/substrate/core/sr-primitives/src/lib.rs
@@ -534,7 +534,7 @@ pub struct OpaqueExtrinsic(pub Vec<u8>);
 #[cfg(feature = "std")]
 impl ::serde::Serialize for OpaqueExtrinsic {
 	fn serialize<S>(&self, seq: S) -> Result<S::Ok, S::Error> where S: ::serde::Serializer {
-		::codec::Encode::using_encoded(&self.0, |bytes| seq.serialize_bytes(bytes))
+		::codec::Encode::using_encoded(&self.0, |bytes| ::substrate_primitives::bytes::serialize(bytes, seq))
 	}
 }
 
@@ -617,4 +617,10 @@ mod tests {
 		// check that as-style methods are not working with regular items
 		assert!(b1.as_authorities_change().is_none());
 	}
+
+	#[test]
+	fn opaque_extrinsic_serialization() {
+		let ex = super::OpaqueExtrinsic(vec![1, 2, 3, 4]);
+		assert_eq!(serde_json::to_string(&ex).unwrap(), "\"0x1001020304\"".to_owned());
+	}
 }
diff --git a/substrate/node/primitives/src/lib.rs b/substrate/node/primitives/src/lib.rs
index 02733061346..504ac5db953 100644
--- a/substrate/node/primitives/src/lib.rs
+++ b/substrate/node/primitives/src/lib.rs
@@ -31,8 +31,6 @@ extern crate sr_primitives as runtime_primitives;
 extern crate substrate_primitives as primitives;
 
 use runtime_primitives::generic;
-#[cfg(feature = "std")]
-use primitives::bytes;
 use runtime_primitives::{OpaqueExtrinsic, traits::BlakeTwo256};
 
 pub use runtime_primitives::BasicInherentData as InherentData;
-- 
GitLab