From c104bf11fbf5788ec3c2766e566c82a0be7d4343 Mon Sep 17 00:00:00 2001 From: Ben Carman Date: Wed, 14 Oct 2020 14:18:24 -0500 Subject: [PATCH] Make tx bytes functions lazy vals (#2180) --- .../org/bitcoins/core/protocol/transaction/Transaction.scala | 4 ++-- .../bitcoins/core/protocol/transaction/TransactionInput.scala | 2 +- .../core/protocol/transaction/TransactionOutput.scala | 4 ++-- .../core/protocol/transaction/TransactionWitness.scala | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/scala/org/bitcoins/core/protocol/transaction/Transaction.scala b/core/src/main/scala/org/bitcoins/core/protocol/transaction/Transaction.scala index af3b898dcb..edf271a394 100644 --- a/core/src/main/scala/org/bitcoins/core/protocol/transaction/Transaction.scala +++ b/core/src/main/scala/org/bitcoins/core/protocol/transaction/Transaction.scala @@ -138,7 +138,7 @@ object Transaction extends Factory[Transaction] { sealed abstract class NonWitnessTransaction extends Transaction { override def weight: Long = byteSize * 4 - override def bytes: ByteVector = { + override lazy val bytes: ByteVector = { val versionBytes = version.bytes.reverse val inputBytes = BytesUtil.writeCmpctSizeUInt(inputs) val outputBytes = BytesUtil.writeCmpctSizeUInt(outputs) @@ -235,7 +235,7 @@ case class WitnessTransaction( * Functionality inside of Bitcoin Core: * [[https://github.com/bitcoin/bitcoin/blob/e8cfe1ee2d01c493b758a67ad14707dca15792ea/src/primitives/transaction.h#L282-L287s]] */ - override def bytes: ByteVector = { + override lazy val bytes: ByteVector = { val versionBytes = version.bytes.reverse val inputBytes = BytesUtil.writeCmpctSizeUInt(inputs) val outputBytes = BytesUtil.writeCmpctSizeUInt(outputs) diff --git a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionInput.scala b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionInput.scala index f367728cee..9606c77672 100644 --- a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionInput.scala +++ b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionInput.scala @@ -16,7 +16,7 @@ sealed abstract class TransactionInput extends NetworkElement { def scriptSignature: ScriptSignature def sequence: UInt32 - override def bytes = RawTransactionInputParser.write(this) + override lazy val bytes: ByteVector = RawTransactionInputParser.write(this) } case object EmptyTransactionInput extends TransactionInput { diff --git a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionOutput.scala b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionOutput.scala index dc20c92cd6..4234a182d2 100644 --- a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionOutput.scala +++ b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionOutput.scala @@ -10,9 +10,9 @@ case class TransactionOutput(value: CurrencyUnit, scriptPubKey: ScriptPubKey) extends NetworkElement { //https://bitcoin.org/en/developer-reference#txout - override lazy val byteSize = scriptPubKey.byteSize + 8 + override lazy val byteSize: Long = scriptPubKey.byteSize + 8 - override def bytes = RawTransactionOutputParser.write(this) + override lazy val bytes: ByteVector = RawTransactionOutputParser.write(this) } final object EmptyTransactionOutput diff --git a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionWitness.scala b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionWitness.scala index 5bf6b1ecee..eb3d0dc734 100644 --- a/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionWitness.scala +++ b/core/src/main/scala/org/bitcoins/core/protocol/transaction/TransactionWitness.scala @@ -17,7 +17,7 @@ sealed abstract class TransactionWitness val witnesses: Vector[ScriptWitness] override protected val wrapped: Vector[ScriptWitness] = witnesses - override def bytes: ByteVector = { + override lazy val bytes: ByteVector = { RawTransactionWitnessParser.write(this) }