Removing the 'n' field from our TransactionOutput definition. This should not have been here - it is not in the bitcoin developer reference

This commit is contained in:
Chris Stewart 2016-03-30 10:07:48 -05:00
parent 6fa21f4d85
commit 816205e5f5
4 changed files with 8 additions and 12 deletions

View file

@ -4,7 +4,7 @@ import org.scalacoin.currency.{CurrencyUnits, Satoshis}
import org.scalacoin.marshallers.RawBitcoinSerializer
import org.scalacoin.marshallers.script.{RawScriptPubKeyParser, ScriptParser}
import org.scalacoin.protocol.CompactSizeUInt
import org.scalacoin.protocol.transaction.{TransactionOutputImpl, TransactionOutput}
import org.scalacoin.protocol.transaction.{TransactionOutputFactory, TransactionOutputImpl, TransactionOutput}
import org.scalacoin.util.{BitcoinSUtil}
import org.slf4j.LoggerFactory
@ -37,7 +37,7 @@ trait RawTransactionOutputParser extends RawBitcoinSerializer[Seq[TransactionOut
val scriptPubKeyBytes = bytes.slice(firstScriptPubKeyByte + scriptCompactSizeUIntSize,
firstScriptPubKeyByte + scriptCompactSizeUIntSize + scriptSigCompactSizeUInt.num.toInt)
val scriptPubKey = RawScriptPubKeyParser.read(scriptPubKeyBytes)
val parsedOutput = TransactionOutputImpl(satoshis, 0, scriptPubKey)
val parsedOutput = TransactionOutputFactory.factory(satoshis,scriptPubKey)
val newAccum = parsedOutput:: accum
val bytesToBeParsed = bytes.slice(parsedOutput.size, bytes.size)
val outputsLeft = outputsLeftToParse-1

View file

@ -14,7 +14,6 @@ import org.scalacoin.util.BitcoinSUtil
sealed trait TransactionOutput extends TransactionElement {
def value : CurrencyUnit
def n : Int
def scriptPubKey : ScriptPubKey
def scriptPubKeyCompactSizeUInt : CompactSizeUInt = BitcoinSUtil.parseCompactSizeUInt(scriptPubKey)
//https://bitcoin.org/en/developer-reference#txout
@ -25,10 +24,8 @@ sealed trait TransactionOutput extends TransactionElement {
case object TransactionOutput extends TransactionOutput {
override def value = CurrencyUnits.negativeSatoshi
override def n = 0
override def scriptPubKey = ScriptPubKeyFactory.empty
}
case class TransactionOutputImpl(value : CurrencyUnit, n : Int, scriptPubKey: ScriptPubKey) extends TransactionOutput
case class TransactionOutputImpl(value : CurrencyUnit, scriptPubKey: ScriptPubKey) extends TransactionOutput

View file

@ -46,7 +46,6 @@ class RawTransactionOutputParserTest extends FlatSpec with MustMatchers with Raw
//https://bitcoin.stackexchange.com/questions/2859/how-are-transaction-hashes-calculated
val txOutput = "0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac"
val output = RawTransactionOutputParser.read(txOutput)
output.head.n must be (0)
output.head.value must be (Satoshis(5000000000L))
}

View file

@ -57,12 +57,12 @@ trait TransactionTestUtil extends BitcoinSLogger {
txCredit.vout[0].scriptPubKey = scriptPubKey;
txCredit.vout[0].nValue = 0;*/
val outpoint = TransactionOutPointImpl("0000000000000000000000000000000000000000000000000000000000000000",0xFFFFFFFF)
val outpoint = TransactionOutPointFactory.factory("0000000000000000000000000000000000000000000000000000000000000000",0xFFFFFFFF)
/* require(outpoint.hex == "0000000000000000000000000000000000000000000000000000000000000000ffffffff", "Outpoint hex is wrong")*/
val scriptSignature = ScriptSignatureFactory.fromHex("0000")
/* require(scriptSignature.hex == "0000", "Wrong scriptSig\n Expected scriptSig: 0000\nActual scriptSig: " + scriptSignature.hex )*/
val input = TransactionInputImpl(outpoint,scriptSignature,TransactionConstants.sequence)
val output = TransactionOutputImpl(CurrencyUnits.zeroSatoshis,0,scriptPubKey)
val input = TransactionInputFactory.factory(outpoint,scriptSignature,TransactionConstants.sequence)
val output = TransactionOutputFactory.factory(CurrencyUnits.zeroSatoshis,scriptPubKey)
val tx = TransactionImpl(TransactionConstants.version,Seq(input),Seq(output),TransactionConstants.lockTime)
/* require(tx.hex == "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff020000ffffffff01000000000000000043410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ac00000000",
@ -86,9 +86,9 @@ trait TransactionTestUtil extends BitcoinSLogger {
txSpend.vout[0].scriptPubKey = CScript();
txSpend.vout[0].nValue = 0;*/
val outpoint = TransactionOutPointImpl(creditingTx.txId,outputIndex)
val outpoint = TransactionOutPointFactory.factory(creditingTx.txId,outputIndex)
val input = TransactionInputFactory.factory(outpoint,scriptSignature,TransactionConstants.sequence)
val output = TransactionOutputImpl(CurrencyUnits.zeroSatoshis,0,EmptyScriptPubKey)
val output = TransactionOutputFactory.factory(CurrencyUnits.zeroSatoshis,EmptyScriptPubKey)
val tx = TransactionImpl(TransactionConstants.version,Seq(input),Seq(output),TransactionConstants.lockTime)
/* val expectedHex = "01000000019ce5586f04dd407719ab7e2ed3583583b9022f29652702cfac5ed082013461fe000000004847304402200a5c6163f07b8d3b013c4d1d6dba25e780b39658d79ba37af7057a3b7f15ffa102201fd9b4eaa9943f734928b99a83592c2e7bf342ea2680f6a2bb705167966b742001ffffffff0100000000000000000000000000"
require(tx.hex == expectedHex,"\nExpected hex: " + expectedHex + "\nActual hex: " + tx.hex)*/