diff --git a/core/src/main/kotlin/core/Transactions.kt b/core/src/main/kotlin/core/Transactions.kt index 35eb09f975..2397ebb948 100644 --- a/core/src/main/kotlin/core/Transactions.kt +++ b/core/src/main/kotlin/core/Transactions.kt @@ -66,7 +66,7 @@ data class WireTransaction(val inputs: List, companion object { fun deserialize(bits: SerializedBytes): WireTransaction { - val wtx = bits.deserialize() + val wtx = bits.bits.deserialize() wtx.cachedBits = bits return wtx } diff --git a/core/src/main/kotlin/core/serialization/Kryo.kt b/core/src/main/kotlin/core/serialization/Kryo.kt index b18a34c4bb..3cc4924aa3 100644 --- a/core/src/main/kotlin/core/serialization/Kryo.kt +++ b/core/src/main/kotlin/core/serialization/Kryo.kt @@ -17,6 +17,7 @@ import com.esotericsoftware.kryo.io.Input import com.esotericsoftware.kryo.io.Output import com.esotericsoftware.kryo.serializers.JavaSerializer import core.SignedTransaction +import core.WireTransaction import core.crypto.SecureHash import core.crypto.generateKeyPair import core.crypto.sha256 @@ -82,6 +83,9 @@ inline fun ByteArray.deserialize(kryo: Kryo = THREAD_LOCAL_KRY inline fun OpaqueBytes.deserialize(kryo: Kryo = THREAD_LOCAL_KRYO.get(), includeClassName: Boolean = false): T { return this.bits.deserialize(kryo, includeClassName) } +// The more specific deserialize version results in the bytes being cached, which is faster. +@JvmName("SerializedBytesWireTransaction") +fun SerializedBytes.deserialize(): WireTransaction = WireTransaction.deserialize(this) inline fun SerializedBytes.deserialize(): T = bits.deserialize() /**