From 9d6ea58b4ced5ee8d3d035104706b65ea40d4547 Mon Sep 17 00:00:00 2001 From: Mike Zak Date: Tue, 12 Jun 2018 19:12:17 +0300 Subject: [PATCH] [DEV-14] Removed Segwit from wire package. --- blockchain/fullblocks_test.go | 2 +- blockchain/fullblocktests/generate.go | 4 +- blockchain/validate_test.go | 2 +- integration/rpctest/memwallet.go | 2 +- peer/peer.go | 44 +--- rpcserver.go | 4 +- server.go | 19 +- txscript/example_test.go | 4 +- txscript/reference_test.go | 4 +- txscript/sign_test.go | 2 +- wire/bench_test.go | 28 +- wire/blockheader.go | 4 +- wire/blockheader_test.go | 18 +- wire/fakemessage_test.go | 4 +- wire/invvect.go | 26 +- wire/message.go | 79 ++---- wire/msgaddr.go | 4 +- wire/msgaddr_test.go | 41 ++- wire/msgalert.go | 4 +- wire/msgalert_test.go | 55 ++-- wire/msgblock.go | 53 +--- wire/msgblock_test.go | 65 ++--- wire/msgcfcheckpt.go | 6 +- wire/msgcfheaders.go | 6 +- wire/msgcfilter.go | 6 +- wire/msgfeefilter.go | 4 +- wire/msgfeefilter_test.go | 12 +- wire/msgfilteradd.go | 4 +- wire/msgfilteradd_test.go | 45 ++-- wire/msgfilterclear.go | 4 +- wire/msgfilterclear_test.go | 20 +- wire/msgfilterload.go | 4 +- wire/msgfilterload_test.go | 52 ++-- wire/msggetaddr.go | 4 +- wire/msggetaddr_test.go | 18 +- wire/msggetblocks.go | 4 +- wire/msggetblocks_test.go | 50 ++-- wire/msggetcfcheckpt.go | 4 +- wire/msggetcfheaders.go | 4 +- wire/msggetcfilters.go | 4 +- wire/msggetdata.go | 4 +- wire/msggetdata_test.go | 46 ++-- wire/msggetheaders.go | 4 +- wire/msggetheaders_test.go | 50 ++-- wire/msgheaders.go | 4 +- wire/msgheaders_test.go | 50 ++-- wire/msginv.go | 4 +- wire/msginv_test.go | 46 ++-- wire/msgmempool.go | 4 +- wire/msgmempool_test.go | 9 +- wire/msgmerkleblock.go | 4 +- wire/msgmerkleblock_test.go | 66 +++-- wire/msgnotfound.go | 4 +- wire/msgnotfound_test.go | 46 ++-- wire/msgping.go | 4 +- wire/msgping_test.go | 43 ++- wire/msgpong.go | 4 +- wire/msgpong_test.go | 50 ++-- wire/msgreject.go | 4 +- wire/msgreject_test.go | 54 ++-- wire/msgsendheaders.go | 4 +- wire/msgsendheaders_test.go | 27 +- wire/msgtx.go | 293 +-------------------- wire/msgtx_test.go | 363 +++----------------------- wire/msgverack.go | 4 +- wire/msgverack_test.go | 18 +- wire/msgversion.go | 4 +- wire/msgversion_test.go | 76 +++--- wire/protocol.go | 12 - wire/protocol_test.go | 4 +- 70 files changed, 579 insertions(+), 1445 deletions(-) diff --git a/blockchain/fullblocks_test.go b/blockchain/fullblocks_test.go index 166edb5b8..244046d79 100644 --- a/blockchain/fullblocks_test.go +++ b/blockchain/fullblocks_test.go @@ -229,7 +229,7 @@ func TestFullBlocks(t *testing.T) { // Ensure there is an error due to deserializing the block. var msgBlock wire.MsgBlock - err := msgBlock.BtcDecode(bytes.NewReader(item.RawBlock), 0, wire.BaseEncoding) + err := msgBlock.BtcDecode(bytes.NewReader(item.RawBlock), 0) if _, ok := err.(*wire.MessageError); !ok { t.Fatalf("block %q (hash %s, height %d) should have "+ "failed to decode", item.Name, blockHash, diff --git a/blockchain/fullblocktests/generate.go b/blockchain/fullblocktests/generate.go index cf9fd0622..ae44edd6f 100644 --- a/blockchain/fullblocktests/generate.go +++ b/blockchain/fullblocktests/generate.go @@ -635,10 +635,10 @@ func nonCanonicalVarInt(val uint32) []byte { // encoding. func encodeNonCanonicalBlock(b *wire.MsgBlock) []byte { var buf bytes.Buffer - b.Header.BtcEncode(&buf, 0, wire.BaseEncoding) + b.Header.BtcEncode(&buf, 0) buf.Write(nonCanonicalVarInt(uint32(len(b.Transactions)))) for _, tx := range b.Transactions { - tx.BtcEncode(&buf, 0, wire.BaseEncoding) + tx.BtcEncode(&buf, 0) } return buf.Bytes() } diff --git a/blockchain/validate_test.go b/blockchain/validate_test.go index 67d0c8e12..6a2dc0219 100644 --- a/blockchain/validate_test.go +++ b/blockchain/validate_test.go @@ -176,7 +176,7 @@ func TestCheckSerializedHeight(t *testing.T) { // Create an empty coinbase template to be used in the tests below. coinbaseOutpoint := wire.NewOutPoint(&chainhash.Hash{}, math.MaxUint32) coinbaseTx := wire.NewMsgTx(1) - coinbaseTx.AddTxIn(wire.NewTxIn(coinbaseOutpoint, nil, nil)) + coinbaseTx.AddTxIn(wire.NewTxIn(coinbaseOutpoint, nil)) // Expected rule errors. missingHeightError := RuleError{ diff --git a/integration/rpctest/memwallet.go b/integration/rpctest/memwallet.go index 8bf91feae..7d146e656 100644 --- a/integration/rpctest/memwallet.go +++ b/integration/rpctest/memwallet.go @@ -403,7 +403,7 @@ func (m *memWallet) fundTx(tx *wire.MsgTx, amt btcutil.Amount, feeRate btcutil.A // Add the selected output to the transaction, updating the // current tx size while accounting for the size of the future // sigScript. - tx.AddTxIn(wire.NewTxIn(&outPoint, nil, nil)) + tx.AddTxIn(wire.NewTxIn(&outPoint, nil)) txSize = tx.SerializeSize() + spendSize*len(tx.TxIn) // Calculate the fee required for the txn at this point diff --git a/peer/peer.go b/peer/peer.go index 893f9c4a5..a9e059330 100644 --- a/peer/peer.go +++ b/peer/peer.go @@ -324,7 +324,6 @@ func newNetAddress(addr net.Addr, services wire.ServiceFlag) (*wire.NetAddress, type outMsg struct { msg wire.Message doneChan chan<- struct{} - encoding wire.MessageEncoding } // stallControlCmd represents the command of a stall control message. @@ -440,8 +439,6 @@ type Peer struct { sendHeadersPreferred bool // peer sent a sendheaders message verAckReceived bool - wireEncoding wire.MessageEncoding - knownInventory *mruInventoryMap prevGetBlocksMtx sync.Mutex prevGetBlocksBegin *chainhash.Hash @@ -1116,9 +1113,9 @@ func (p *Peer) handlePongMsg(msg *wire.MsgPong) { } // readMessage reads the next bitcoin message from the peer with logging. -func (p *Peer) readMessage(encoding wire.MessageEncoding) (wire.Message, []byte, error) { - n, msg, buf, err := wire.ReadMessageWithEncodingN(p.conn, - p.ProtocolVersion(), p.cfg.ChainParams.Net, encoding) +func (p *Peer) readMessage() (wire.Message, []byte, error) { + n, msg, buf, err := wire.ReadMessageN(p.conn, + p.ProtocolVersion(), p.cfg.ChainParams.Net) atomic.AddUint64(&p.bytesReceived, uint64(n)) if p.cfg.Listeners.OnRead != nil { p.cfg.Listeners.OnRead(p, n, msg, err) @@ -1149,7 +1146,7 @@ func (p *Peer) readMessage(encoding wire.MessageEncoding) (wire.Message, []byte, } // writeMessage sends a bitcoin message to the peer with logging. -func (p *Peer) writeMessage(msg wire.Message, enc wire.MessageEncoding) error { +func (p *Peer) writeMessage(msg wire.Message) error { // Don't do anything if we're disconnecting. if atomic.LoadInt32(&p.disconnect) != 0 { return nil @@ -1171,8 +1168,8 @@ func (p *Peer) writeMessage(msg wire.Message, enc wire.MessageEncoding) error { })) log.Tracef("%v", newLogClosure(func() string { var buf bytes.Buffer - _, err := wire.WriteMessageWithEncodingN(&buf, msg, p.ProtocolVersion(), - p.cfg.ChainParams.Net, enc) + _, err := wire.WriteMessageN(&buf, msg, p.ProtocolVersion(), + p.cfg.ChainParams.Net) if err != nil { return err.Error() } @@ -1180,8 +1177,8 @@ func (p *Peer) writeMessage(msg wire.Message, enc wire.MessageEncoding) error { })) // Write the message to the peer. - n, err := wire.WriteMessageWithEncodingN(p.conn, msg, - p.ProtocolVersion(), p.cfg.ChainParams.Net, enc) + n, err := wire.WriteMessageN(p.conn, msg, + p.ProtocolVersion(), p.cfg.ChainParams.Net) atomic.AddUint64(&p.bytesSent, uint64(n)) if p.cfg.Listeners.OnWrite != nil { p.cfg.Listeners.OnWrite(p, n, msg, err) @@ -1442,7 +1439,7 @@ out: // Read a message and stop the idle timer as soon as the read // is done. The timer is reset below for the next iteration if // needed. - rmsg, buf, err := p.readMessage(p.wireEncoding) + rmsg, buf, err := p.readMessage() idleTimer.Stop() if err != nil { // In order to allow regression tests with malformed messages, don't @@ -1838,7 +1835,7 @@ out: p.stallControl <- stallControlMsg{sccSendMessage, msg.msg} - err := p.writeMessage(msg.msg, msg.encoding) + err := p.writeMessage(msg.msg) if err != nil { p.Disconnect() if p.shouldLogWriteError(err) { @@ -1915,18 +1912,6 @@ out: // // This function is safe for concurrent access. func (p *Peer) QueueMessage(msg wire.Message, doneChan chan<- struct{}) { - p.QueueMessageWithEncoding(msg, doneChan, wire.BaseEncoding) -} - -// QueueMessageWithEncoding adds the passed bitcoin message to the peer send -// queue. This function is identical to QueueMessage, however it allows the -// caller to specify the wire encoding type that should be used when -// encoding/decoding blocks and transactions. -// -// This function is safe for concurrent access. -func (p *Peer) QueueMessageWithEncoding(msg wire.Message, doneChan chan<- struct{}, - encoding wire.MessageEncoding) { - // Avoid risk of deadlock if goroutine already exited. The goroutine // we will be sending to hangs around until it knows for a fact that // it is marked as disconnected and *then* it drains the channels. @@ -1938,7 +1923,7 @@ func (p *Peer) QueueMessageWithEncoding(msg wire.Message, doneChan chan<- struct } return } - p.outputQueue <- outMsg{msg: msg, encoding: encoding, doneChan: doneChan} + p.outputQueue <- outMsg{msg: msg, doneChan: doneChan} } // QueueInventory adds the passed inventory to the inventory send queue which @@ -2070,7 +2055,7 @@ func (p *Peer) WaitForDisconnect() { // acceptable then return an error. func (p *Peer) readRemoteVersionMsg() error { // Read their version message. - msg, _, err := p.readMessage(wire.LatestEncoding) + msg, _, err := p.readMessage() if err != nil { return err } @@ -2082,7 +2067,7 @@ func (p *Peer) readRemoteVersionMsg() error { rejectMsg := wire.NewMsgReject(msg.Command(), wire.RejectMalformed, errStr) - return p.writeMessage(rejectMsg, wire.LatestEncoding) + return p.writeMessage(rejectMsg) } if err := p.handleRemoteVersionMsg(remoteVerMsg); err != nil { @@ -2102,7 +2087,7 @@ func (p *Peer) writeLocalVersionMsg() error { return err } - return p.writeMessage(localVerMsg, wire.LatestEncoding) + return p.writeMessage(localVerMsg) } // negotiateInboundProtocol waits to receive a version message from the peer @@ -2145,7 +2130,6 @@ func newPeerBase(origCfg *Config, inbound bool) *Peer { p := Peer{ inbound: inbound, - wireEncoding: wire.BaseEncoding, knownInventory: newMruInventoryMap(maxKnownInventory), stallControl: make(chan stallControlMsg, 1), // nonblocking sync outputQueue: make(chan outMsg, outputBufferSize), diff --git a/rpcserver.go b/rpcserver.go index c0a25ec50..275c85ebe 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -500,7 +500,7 @@ func peerExists(connMgr rpcserverConnManager, addr string, nodeID int32) bool { // latest protocol version and returns a hex-encoded string of the result. func messageToHex(msg wire.Message) (string, error) { var buf bytes.Buffer - if err := msg.BtcEncode(&buf, maxProtocolVersion, wire.BaseEncoding); err != nil { + if err := msg.BtcEncode(&buf, maxProtocolVersion); err != nil { context := fmt.Sprintf("Failed to encode msg of type %T", msg) return "", internalRPCError(err.Error(), context) } @@ -531,7 +531,7 @@ func handleCreateRawTransaction(s *rpcServer, cmd interface{}, closeChan <-chan } prevOut := wire.NewOutPoint(txHash, input.Vout) - txIn := wire.NewTxIn(prevOut, []byte{}, nil) + txIn := wire.NewTxIn(prevOut, []byte{}) if c.LockTime != nil && *c.LockTime != 0 { txIn.Sequence = wire.MaxTxInSequenceNum - 1 } diff --git a/server.go b/server.go index 4e148714e..9af8518bc 100644 --- a/server.go +++ b/server.go @@ -617,11 +617,11 @@ func (sp *serverPeer) OnGetData(_ *peer.Peer, msg *wire.MsgGetData) { var err error switch iv.Type { case wire.InvTypeTx: - err = sp.server.pushTxMsg(sp, &iv.Hash, c, waitChan, wire.BaseEncoding) + err = sp.server.pushTxMsg(sp, &iv.Hash, c, waitChan) case wire.InvTypeBlock: - err = sp.server.pushBlockMsg(sp, &iv.Hash, c, waitChan, wire.BaseEncoding) + err = sp.server.pushBlockMsg(sp, &iv.Hash, c, waitChan) case wire.InvTypeFilteredBlock: - err = sp.server.pushMerkleBlockMsg(sp, &iv.Hash, c, waitChan, wire.BaseEncoding) + err = sp.server.pushMerkleBlockMsg(sp, &iv.Hash, c, waitChan) default: peerLog.Warnf("Unknown type in inventory request %d", iv.Type) @@ -1255,7 +1255,7 @@ func (s *server) TransactionConfirmed(tx *btcutil.Tx) { // pushTxMsg sends a tx message for the provided transaction hash to the // connected peer. An error is returned if the transaction hash is not known. func (s *server) pushTxMsg(sp *serverPeer, hash *chainhash.Hash, doneChan chan<- struct{}, - waitChan <-chan struct{}, encoding wire.MessageEncoding) error { + waitChan <-chan struct{}) error { // Attempt to fetch the requested transaction from the pool. A // call could be made to check for existence first, but simply trying @@ -1276,7 +1276,7 @@ func (s *server) pushTxMsg(sp *serverPeer, hash *chainhash.Hash, doneChan chan<- <-waitChan } - sp.QueueMessageWithEncoding(tx.MsgTx(), doneChan, encoding) + sp.QueueMessage(tx.MsgTx(), doneChan) return nil } @@ -1284,7 +1284,7 @@ func (s *server) pushTxMsg(sp *serverPeer, hash *chainhash.Hash, doneChan chan<- // pushBlockMsg sends a block message for the provided block hash to the // connected peer. An error is returned if the block hash is not known. func (s *server) pushBlockMsg(sp *serverPeer, hash *chainhash.Hash, doneChan chan<- struct{}, - waitChan <-chan struct{}, encoding wire.MessageEncoding) error { + waitChan <-chan struct{}) error { // Fetch the raw block bytes from the database. var blockBytes []byte @@ -1329,7 +1329,7 @@ func (s *server) pushBlockMsg(sp *serverPeer, hash *chainhash.Hash, doneChan cha if !sendInv { dc = doneChan } - sp.QueueMessageWithEncoding(&msgBlock, dc, encoding) + sp.QueueMessage(&msgBlock, dc) // When the peer requests the final block that was advertised in // response to a getblocks message which requested more blocks than @@ -1352,7 +1352,7 @@ func (s *server) pushBlockMsg(sp *serverPeer, hash *chainhash.Hash, doneChan cha // loaded, this call will simply be ignored if there is no filter loaded. An // error is returned if the block hash is not known. func (s *server) pushMerkleBlockMsg(sp *serverPeer, hash *chainhash.Hash, - doneChan chan<- struct{}, waitChan <-chan struct{}, encoding wire.MessageEncoding) error { + doneChan chan<- struct{}, waitChan <-chan struct{}) error { // Do not send a response if the peer doesn't have a filter loaded. if !sp.filter.IsLoaded() { @@ -1400,8 +1400,7 @@ func (s *server) pushMerkleBlockMsg(sp *serverPeer, hash *chainhash.Hash, dc = doneChan } if txIndex < uint32(len(blkTransactions)) { - sp.QueueMessageWithEncoding(blkTransactions[txIndex], dc, - encoding) + sp.QueueMessage(blkTransactions[txIndex], dc) } } diff --git a/txscript/example_test.go b/txscript/example_test.go index 6f9f3d5d6..51c1230ea 100644 --- a/txscript/example_test.go +++ b/txscript/example_test.go @@ -103,7 +103,7 @@ func ExampleSignTxOutput() { // contains a single output that pays to address in the amount of 1 BTC. originTx := wire.NewMsgTx(wire.TxVersion) prevOut := wire.NewOutPoint(&chainhash.Hash{}, ^uint32(0)) - txIn := wire.NewTxIn(prevOut, []byte{txscript.OP_0, txscript.OP_0}, nil) + txIn := wire.NewTxIn(prevOut, []byte{txscript.OP_0, txscript.OP_0}) originTx.AddTxIn(txIn) pkScript, err := txscript.PayToAddrScript(addr) if err != nil { @@ -121,7 +121,7 @@ func ExampleSignTxOutput() { // signature script at this point since it hasn't been created or signed // yet, hence nil is provided for it. prevOut = wire.NewOutPoint(&originTxHash, 0) - txIn = wire.NewTxIn(prevOut, nil, nil) + txIn = wire.NewTxIn(prevOut, nil) redeemTx.AddTxIn(txIn) // Ordinarily this would contain that actual destination of the funds, diff --git a/txscript/reference_test.go b/txscript/reference_test.go index 3542dd9b0..8768132ba 100644 --- a/txscript/reference_test.go +++ b/txscript/reference_test.go @@ -242,7 +242,7 @@ func createSpendingTx(sigScript, pkScript []byte) *wire.MsgTx { coinbaseTx := wire.NewMsgTx(wire.TxVersion) outPoint := wire.NewOutPoint(&chainhash.Hash{}, ^uint32(0)) - txIn := wire.NewTxIn(outPoint, []byte{OP_0, OP_0}, nil) + txIn := wire.NewTxIn(outPoint, []byte{OP_0, OP_0}) txOut := wire.NewTxOut(0, pkScript) coinbaseTx.AddTxIn(txIn) coinbaseTx.AddTxOut(txOut) @@ -250,7 +250,7 @@ func createSpendingTx(sigScript, pkScript []byte) *wire.MsgTx { spendingTx := wire.NewMsgTx(wire.TxVersion) coinbaseTxHash := coinbaseTx.TxHash() outPoint = wire.NewOutPoint(&coinbaseTxHash, 0) - txIn = wire.NewTxIn(outPoint, sigScript, nil) + txIn = wire.NewTxIn(outPoint, sigScript) txOut = wire.NewTxOut(0, nil) spendingTx.AddTxIn(txIn) diff --git a/txscript/sign_test.go b/txscript/sign_test.go index 0f786facb..4c817bbad 100644 --- a/txscript/sign_test.go +++ b/txscript/sign_test.go @@ -1626,7 +1626,7 @@ nexttest: tx.AddTxOut(output) for range sigScriptTests[i].inputs { - txin := wire.NewTxIn(coinbaseOutPoint, nil, nil) + txin := wire.NewTxIn(coinbaseOutPoint, nil) tx.AddTxIn(txin) } diff --git a/wire/bench_test.go b/wire/bench_test.go index 8962e7b94..8ec7776d0 100644 --- a/wire/bench_test.go +++ b/wire/bench_test.go @@ -394,7 +394,7 @@ func BenchmarkDecodeGetHeaders(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgGetHeaders.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -404,7 +404,7 @@ func BenchmarkDecodeGetHeaders(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -424,7 +424,7 @@ func BenchmarkDecodeHeaders(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgHeaders.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -434,7 +434,7 @@ func BenchmarkDecodeHeaders(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -454,7 +454,7 @@ func BenchmarkDecodeGetBlocks(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgGetBlocks.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -464,7 +464,7 @@ func BenchmarkDecodeGetBlocks(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -481,7 +481,7 @@ func BenchmarkDecodeAddr(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := ma.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := ma.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgAddr.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -491,7 +491,7 @@ func BenchmarkDecodeAddr(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -511,7 +511,7 @@ func BenchmarkDecodeInv(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgInv.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -521,7 +521,7 @@ func BenchmarkDecodeInv(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -541,7 +541,7 @@ func BenchmarkDecodeNotFound(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgNotFound.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -551,7 +551,7 @@ func BenchmarkDecodeNotFound(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } @@ -579,7 +579,7 @@ func BenchmarkDecodeMerkleBlock(b *testing.B) { // Serialize it so the bytes are available to test the decode below. var bb bytes.Buffer - if err := m.BtcEncode(&bb, pver, LatestEncoding); err != nil { + if err := m.BtcEncode(&bb, pver); err != nil { b.Fatalf("MsgMerkleBlock.BtcEncode: unexpected error: %v", err) } buf := bb.Bytes() @@ -589,7 +589,7 @@ func BenchmarkDecodeMerkleBlock(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { r.Seek(0, 0) - msg.BtcDecode(r, pver, LatestEncoding) + msg.BtcDecode(r, pver) } } diff --git a/wire/blockheader.go b/wire/blockheader.go index b36936ae1..5a636f36c 100644 --- a/wire/blockheader.go +++ b/wire/blockheader.go @@ -60,7 +60,7 @@ func (h *BlockHeader) BlockHash() chainhash.Hash { // This is part of the Message interface implementation. // See Deserialize for decoding block headers stored to disk, such as in a // database, as opposed to decoding block headers from the wire. -func (h *BlockHeader) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (h *BlockHeader) BtcDecode(r io.Reader, pver uint32) error { return readBlockHeader(r, pver, h) } @@ -68,7 +68,7 @@ func (h *BlockHeader) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) e // This is part of the Message interface implementation. // See Serialize for encoding block headers to be stored to disk, such as in a // database, as opposed to encoding block headers for the wire. -func (h *BlockHeader) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (h *BlockHeader) BtcEncode(w io.Writer, pver uint32) error { return writeBlockHeader(w, pver, h) } diff --git a/wire/blockheader_test.go b/wire/blockheader_test.go index fef069679..2035b1aa7 100644 --- a/wire/blockheader_test.go +++ b/wire/blockheader_test.go @@ -79,11 +79,10 @@ func TestBlockHeaderWire(t *testing.T) { } tests := []struct { - in *BlockHeader // Data to encode - out *BlockHeader // Expected decoded data - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding variant to use + in *BlockHeader // Data to encode + out *BlockHeader // Expected decoded data + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -91,7 +90,6 @@ func TestBlockHeaderWire(t *testing.T) { baseBlockHdr, baseBlockHdrEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -100,7 +98,6 @@ func TestBlockHeaderWire(t *testing.T) { baseBlockHdr, baseBlockHdrEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -109,7 +106,6 @@ func TestBlockHeaderWire(t *testing.T) { baseBlockHdr, baseBlockHdrEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -118,7 +114,6 @@ func TestBlockHeaderWire(t *testing.T) { baseBlockHdr, baseBlockHdrEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -127,7 +122,6 @@ func TestBlockHeaderWire(t *testing.T) { baseBlockHdr, baseBlockHdrEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -147,7 +141,7 @@ func TestBlockHeaderWire(t *testing.T) { } buf.Reset() - err = test.in.BtcEncode(&buf, pver, 0) + err = test.in.BtcEncode(&buf, pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -173,7 +167,7 @@ func TestBlockHeaderWire(t *testing.T) { } rbuf = bytes.NewReader(test.buf) - err = bh.BtcDecode(rbuf, pver, test.enc) + err = bh.BtcDecode(rbuf, pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue diff --git a/wire/fakemessage_test.go b/wire/fakemessage_test.go index e3a2342d3..54958eed7 100644 --- a/wire/fakemessage_test.go +++ b/wire/fakemessage_test.go @@ -17,14 +17,14 @@ type fakeMessage struct { // BtcDecode doesn't do anything. It just satisfies the wire.Message // interface. -func (msg *fakeMessage) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *fakeMessage) BtcDecode(r io.Reader, pver uint32) error { return nil } // BtcEncode writes the payload field of the fake message or forces an error // if the forceEncodeErr flag of the fake message is set. It also satisfies the // wire.Message interface. -func (msg *fakeMessage) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *fakeMessage) BtcEncode(w io.Writer, pver uint32) error { if msg.forceEncodeErr { err := &MessageError{ Func: "fakeMessage.BtcEncode", diff --git a/wire/invvect.go b/wire/invvect.go index e88675263..1d1fb425d 100644 --- a/wire/invvect.go +++ b/wire/invvect.go @@ -18,10 +18,6 @@ const ( // Maximum payload size for an inventory vector. maxInvVectPayload = 4 + chainhash.HashSize - - // InvWitnessFlag denotes that the inventory vector type is requesting, - // or sending a version which includes witness data. - InvWitnessFlag = 1 << 30 ) // InvType represents the allowed types of inventory vectors. See InvVect. @@ -29,24 +25,18 @@ type InvType uint32 // These constants define the various supported inventory vector types. const ( - InvTypeError InvType = 0 - InvTypeTx InvType = 1 - InvTypeBlock InvType = 2 - InvTypeFilteredBlock InvType = 3 - InvTypeWitnessBlock InvType = InvTypeBlock | InvWitnessFlag - InvTypeWitnessTx InvType = InvTypeTx | InvWitnessFlag - InvTypeFilteredWitnessBlock InvType = InvTypeFilteredBlock | InvWitnessFlag + InvTypeError InvType = 0 + InvTypeTx InvType = 1 + InvTypeBlock InvType = 2 + InvTypeFilteredBlock InvType = 3 ) // Map of service flags back to their constant names for pretty printing. var ivStrings = map[InvType]string{ - InvTypeError: "ERROR", - InvTypeTx: "MSG_TX", - InvTypeBlock: "MSG_BLOCK", - InvTypeFilteredBlock: "MSG_FILTERED_BLOCK", - InvTypeWitnessBlock: "MSG_WITNESS_BLOCK", - InvTypeWitnessTx: "MSG_WITNESS_TX", - InvTypeFilteredWitnessBlock: "MSG_FILTERED_WITNESS_BLOCK", + InvTypeError: "ERROR", + InvTypeTx: "MSG_TX", + InvTypeBlock: "MSG_BLOCK", + InvTypeFilteredBlock: "MSG_FILTERED_BLOCK", } // String returns the InvType in human-readable form. diff --git a/wire/message.go b/wire/message.go index d298df7f5..74c189d81 100644 --- a/wire/message.go +++ b/wire/message.go @@ -59,31 +59,13 @@ const ( CmdCFCheckpt = "cfcheckpt" ) -// MessageEncoding represents the wire message encoding format to be used. -type MessageEncoding uint32 - -const ( - // BaseEncoding encodes all messages in the default format specified - // for the Bitcoin wire protocol. - BaseEncoding MessageEncoding = 1 << iota - - // WitnessEncoding encodes all messages other than transaction messages - // using the default Bitcoin wire protocol specification. For transaction - // messages, the new encoding format detailed in BIP0144 will be used. - WitnessEncoding -) - -// LatestEncoding is the most recently specified encoding for the Bitcoin wire -// protocol. -var LatestEncoding = WitnessEncoding - // Message is an interface that describes a bitcoin message. A type that // implements Message has complete control over the representation of its data // and may therefore contain additional or fewer fields than those which // are used directly in the protocol encoded message. type Message interface { - BtcDecode(io.Reader, uint32, MessageEncoding) error - BtcEncode(io.Writer, uint32, MessageEncoding) error + BtcDecode(io.Reader, uint32) error + BtcEncode(io.Writer, uint32) error Command() string MaxPayloadLength(uint32) uint32 } @@ -242,27 +224,6 @@ func discardInput(r io.Reader, n uint32) { // information and returns the number of bytes written. This function is the // same as WriteMessage except it also returns the number of bytes written. func WriteMessageN(w io.Writer, msg Message, pver uint32, btcnet BitcoinNet) (int, error) { - return WriteMessageWithEncodingN(w, msg, pver, btcnet, BaseEncoding) -} - -// WriteMessage writes a bitcoin Message to w including the necessary header -// information. This function is the same as WriteMessageN except it doesn't -// doesn't return the number of bytes written. This function is mainly provided -// for backwards compatibility with the original API, but it's also useful for -// callers that don't care about byte counts. -func WriteMessage(w io.Writer, msg Message, pver uint32, btcnet BitcoinNet) error { - _, err := WriteMessageN(w, msg, pver, btcnet) - return err -} - -// WriteMessageWithEncodingN writes a bitcoin Message to w including the -// necessary header information and returns the number of bytes written. -// This function is the same as WriteMessageN except it also allows the caller -// to specify the message encoding format to be used when serializing wire -// messages. -func WriteMessageWithEncodingN(w io.Writer, msg Message, pver uint32, - btcnet BitcoinNet, encoding MessageEncoding) (int, error) { - totalBytes := 0 // Enforce max command size. @@ -277,7 +238,7 @@ func WriteMessageWithEncodingN(w io.Writer, msg Message, pver uint32, // Encode the message payload. var bw bytes.Buffer - err := msg.BtcEncode(&bw, pver, encoding) + err := msg.BtcEncode(&bw, pver) if err != nil { return totalBytes, err } @@ -327,15 +288,22 @@ func WriteMessageWithEncodingN(w io.Writer, msg Message, pver uint32, return totalBytes, err } -// ReadMessageWithEncodingN reads, validates, and parses the next bitcoin Message -// from r for the provided protocol version and bitcoin network. It returns the -// number of bytes read in addition to the parsed Message and raw bytes which -// comprise the message. This function is the same as ReadMessageN except it -// allows the caller to specify which message encoding is to to consult when -// decoding wire messages. -func ReadMessageWithEncodingN(r io.Reader, pver uint32, btcnet BitcoinNet, - enc MessageEncoding) (int, Message, []byte, error) { +// WriteMessage writes a bitcoin Message to w including the necessary header +// information. This function is the same as WriteMessageN except it doesn't +// doesn't return the number of bytes written. This function is mainly provided +// for backwards compatibility with the original API, but it's also useful for +// callers that don't care about byte counts. +func WriteMessage(w io.Writer, msg Message, pver uint32, btcnet BitcoinNet) error { + _, err := WriteMessageN(w, msg, pver, btcnet) + return err +} +// ReadMessageN reads, validates, and parses the next bitcoin Message from r for +// the provided protocol version and bitcoin network. It returns the number of +// bytes read in addition to the parsed Message and raw bytes which comprise the +// message. This function is the same as ReadMessage except it also returns the +// number of bytes read. +func ReadMessageN(r io.Reader, pver uint32, btcnet BitcoinNet) (int, Message, []byte, error) { totalBytes := 0 n, hdr, err := readMessageHeader(r) totalBytes += n @@ -407,7 +375,7 @@ func ReadMessageWithEncodingN(r io.Reader, pver uint32, btcnet BitcoinNet, // Unmarshal message. NOTE: This must be a *bytes.Buffer since the // MsgVersion BtcDecode function requires it. pr := bytes.NewBuffer(payload) - err = msg.BtcDecode(pr, pver, enc) + err = msg.BtcDecode(pr, pver) if err != nil { return totalBytes, nil, nil, err } @@ -415,15 +383,6 @@ func ReadMessageWithEncodingN(r io.Reader, pver uint32, btcnet BitcoinNet, return totalBytes, msg, payload, nil } -// ReadMessageN reads, validates, and parses the next bitcoin Message from r for -// the provided protocol version and bitcoin network. It returns the number of -// bytes read in addition to the parsed Message and raw bytes which comprise the -// message. This function is the same as ReadMessage except it also returns the -// number of bytes read. -func ReadMessageN(r io.Reader, pver uint32, btcnet BitcoinNet) (int, Message, []byte, error) { - return ReadMessageWithEncodingN(r, pver, btcnet, BaseEncoding) -} - // ReadMessage reads, validates, and parses the next bitcoin Message from r for // the provided protocol version and bitcoin network. It returns the parsed // Message and raw bytes which comprise the message. This function only differs diff --git a/wire/msgaddr.go b/wire/msgaddr.go index ce945c8c0..f64f9267d 100644 --- a/wire/msgaddr.go +++ b/wire/msgaddr.go @@ -57,7 +57,7 @@ func (msg *MsgAddr) ClearAddresses() { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgAddr) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgAddr) BtcDecode(r io.Reader, pver uint32) error { count, err := ReadVarInt(r, pver) if err != nil { return err @@ -85,7 +85,7 @@ func (msg *MsgAddr) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) err // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgAddr) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgAddr) BtcEncode(w io.Writer, pver uint32) error { // Protocol versions before MultipleAddressVersion only allowed 1 address // per message. count := len(msg.AddrList) diff --git a/wire/msgaddr_test.go b/wire/msgaddr_test.go index 7516d3247..fc466e034 100644 --- a/wire/msgaddr_test.go +++ b/wire/msgaddr_test.go @@ -139,11 +139,10 @@ func TestAddrWire(t *testing.T) { } tests := []struct { - in *MsgAddr // Message to encode - out *MsgAddr // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgAddr // Message to encode + out *MsgAddr // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no addresses. { @@ -151,7 +150,6 @@ func TestAddrWire(t *testing.T) { noAddr, noAddrEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple addresses. @@ -160,7 +158,6 @@ func TestAddrWire(t *testing.T) { multiAddr, multiAddrEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion-1 with no addresses. @@ -169,7 +166,6 @@ func TestAddrWire(t *testing.T) { noAddr, noAddrEncoded, MultipleAddressVersion - 1, - BaseEncoding, }, } @@ -177,7 +173,7 @@ func TestAddrWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -191,7 +187,7 @@ func TestAddrWire(t *testing.T) { // Decode the message from wire format. var msg MsgAddr rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -255,31 +251,30 @@ func TestAddrWireErrors(t *testing.T) { } tests := []struct { - in *MsgAddr // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgAddr // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in addresses count - {baseAddr, baseAddrEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseAddr, baseAddrEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in address list. - {baseAddr, baseAddrEncoded, pver, BaseEncoding, 1, io.ErrShortWrite, io.EOF}, + {baseAddr, baseAddrEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error with greater than max inventory vectors. - {maxAddr, maxAddrEncoded, pver, BaseEncoding, 3, wireErr, wireErr}, + {maxAddr, maxAddrEncoded, pver, 3, wireErr, wireErr}, // Force error with greater than max inventory vectors for // protocol versions before multiple addresses were allowed. - {maxAddr, maxAddrEncoded, pverMA - 1, BaseEncoding, 3, wireErr, wireErr}, + {maxAddr, maxAddrEncoded, pverMA - 1, 3, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -299,7 +294,7 @@ func TestAddrWireErrors(t *testing.T) { // Decode from wire format. var msg MsgAddr r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgalert.go b/wire/msgalert.go index 71c4e220f..8bddae19f 100644 --- a/wire/msgalert.go +++ b/wire/msgalert.go @@ -333,7 +333,7 @@ type MsgAlert struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgAlert) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgAlert) BtcDecode(r io.Reader, pver uint32) error { var err error msg.SerializedPayload, err = ReadVarBytes(r, pver, MaxMessagePayload, @@ -354,7 +354,7 @@ func (msg *MsgAlert) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) er // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgAlert) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgAlert) BtcEncode(w io.Writer, pver uint32) error { var err error var serializedpayload []byte if msg.Payload != nil { diff --git a/wire/msgalert_test.go b/wire/msgalert_test.go index 7c34419d2..82c3ccce5 100644 --- a/wire/msgalert_test.go +++ b/wire/msgalert_test.go @@ -16,7 +16,6 @@ import ( // TestMsgAlert tests the MsgAlert API. func TestMsgAlert(t *testing.T) { pver := ProtocolVersion - encoding := BaseEncoding serializedpayload := []byte("some message") signature := []byte("some sig") @@ -49,7 +48,7 @@ func TestMsgAlert(t *testing.T) { // Test BtcEncode with Payload == nil var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, encoding) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Error(err.Error()) } @@ -66,7 +65,7 @@ func TestMsgAlert(t *testing.T) { // note: Payload is an empty Alert but not nil msg.Payload = new(Alert) buf = *new(bytes.Buffer) - err = msg.BtcEncode(&buf, pver, encoding) + err = msg.BtcEncode(&buf, pver) if err != nil { t.Error(err.Error()) } @@ -95,11 +94,10 @@ func TestMsgAlertWire(t *testing.T) { } tests := []struct { - in *MsgAlert // Message to encode - out *MsgAlert // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgAlert // Message to encode + out *MsgAlert // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -107,7 +105,6 @@ func TestMsgAlertWire(t *testing.T) { baseMsgAlert, baseMsgAlertEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -116,7 +113,6 @@ func TestMsgAlertWire(t *testing.T) { baseMsgAlert, baseMsgAlertEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -125,7 +121,6 @@ func TestMsgAlertWire(t *testing.T) { baseMsgAlert, baseMsgAlertEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -134,7 +129,6 @@ func TestMsgAlertWire(t *testing.T) { baseMsgAlert, baseMsgAlertEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -143,7 +137,6 @@ func TestMsgAlertWire(t *testing.T) { baseMsgAlert, baseMsgAlertEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -151,7 +144,7 @@ func TestMsgAlertWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -165,7 +158,7 @@ func TestMsgAlertWire(t *testing.T) { // Decode the message from wire format. var msg MsgAlert rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -182,7 +175,6 @@ func TestMsgAlertWire(t *testing.T) { // of MsgAlert to confirm error paths work correctly. func TestMsgAlertWireErrors(t *testing.T) { pver := ProtocolVersion - encoding := BaseEncoding baseMsgAlert := NewMsgAlert([]byte("some payload"), []byte("somesig")) baseMsgAlertEncoded := []byte{ @@ -194,29 +186,28 @@ func TestMsgAlertWireErrors(t *testing.T) { } tests := []struct { - in *MsgAlert // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgAlert // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in payload length. - {baseMsgAlert, baseMsgAlertEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseMsgAlert, baseMsgAlertEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in payload. - {baseMsgAlert, baseMsgAlertEncoded, pver, BaseEncoding, 1, io.ErrShortWrite, io.EOF}, + {baseMsgAlert, baseMsgAlertEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error in signature length. - {baseMsgAlert, baseMsgAlertEncoded, pver, BaseEncoding, 13, io.ErrShortWrite, io.EOF}, + {baseMsgAlert, baseMsgAlertEncoded, pver, 13, io.ErrShortWrite, io.EOF}, // Force error in signature. - {baseMsgAlert, baseMsgAlertEncoded, pver, BaseEncoding, 14, io.ErrShortWrite, io.EOF}, + {baseMsgAlert, baseMsgAlertEncoded, pver, 14, io.ErrShortWrite, io.EOF}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -236,7 +227,7 @@ func TestMsgAlertWireErrors(t *testing.T) { // Decode from wire format. var msg MsgAlert r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) @@ -257,7 +248,7 @@ func TestMsgAlertWireErrors(t *testing.T) { // Test Error on empty Payload baseMsgAlert.SerializedPayload = []byte{} w := new(bytes.Buffer) - err := baseMsgAlert.BtcEncode(w, pver, encoding) + err := baseMsgAlert.BtcEncode(w, pver) if _, ok := err.(*MessageError); !ok { t.Errorf("MsgAlert.BtcEncode wrong error got: %T, want: %T", err, MessageError{}) @@ -268,7 +259,7 @@ func TestMsgAlertWireErrors(t *testing.T) { baseMsgAlert.Payload = new(Alert) baseMsgAlert.Payload.SetCancel = make([]int32, maxCountSetCancel+1) buf := *new(bytes.Buffer) - err = baseMsgAlert.BtcEncode(&buf, pver, encoding) + err = baseMsgAlert.BtcEncode(&buf, pver) if _, ok := err.(*MessageError); !ok { t.Errorf("MsgAlert.BtcEncode wrong error got: %T, want: %T", err, MessageError{}) @@ -278,7 +269,7 @@ func TestMsgAlertWireErrors(t *testing.T) { baseMsgAlert.Payload = new(Alert) baseMsgAlert.Payload.SetSubVer = make([]string, maxCountSetSubVer+1) buf = *new(bytes.Buffer) - err = baseMsgAlert.BtcEncode(&buf, pver, encoding) + err = baseMsgAlert.BtcEncode(&buf, pver) if _, ok := err.(*MessageError); !ok { t.Errorf("MsgAlert.BtcEncode wrong error got: %T, want: %T", err, MessageError{}) diff --git a/wire/msgblock.go b/wire/msgblock.go index 1d30f70f4..d94e6313d 100644 --- a/wire/msgblock.go +++ b/wire/msgblock.go @@ -60,7 +60,7 @@ func (msg *MsgBlock) ClearTransactions() { // This is part of the Message interface implementation. // See Deserialize for decoding blocks stored to disk, such as in a database, as // opposed to decoding blocks from the wire. -func (msg *MsgBlock) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgBlock) BtcDecode(r io.Reader, pver uint32) error { err := readBlockHeader(r, pver, &msg.Header) if err != nil { return err @@ -83,7 +83,7 @@ func (msg *MsgBlock) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) er msg.Transactions = make([]*MsgTx, 0, txCount) for i := uint64(0); i < txCount; i++ { tx := MsgTx{} - err := tx.BtcDecode(r, pver, enc) + err := tx.BtcDecode(r, pver) if err != nil { return err } @@ -106,19 +106,7 @@ func (msg *MsgBlock) Deserialize(r io.Reader) error { // At the current time, there is no difference between the wire encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of BtcDecode. - // - // Passing an encoding type of WitnessEncoding to BtcEncode for the - // MessageEncoding parameter indicates that the transactions within the - // block are expected to be serialized according to the new - // serialization structure defined in BIP0141. - return msg.BtcDecode(r, 0, WitnessEncoding) -} - -// DeserializeNoWitness decodes a block from r into the receiver similar to -// Deserialize, however DeserializeWitness strips all (if any) witness data -// from the transactions within the block before encoding them. -func (msg *MsgBlock) DeserializeNoWitness(r io.Reader) error { - return msg.BtcDecode(r, 0, BaseEncoding) + return msg.BtcDecode(r, 0) } // DeserializeTxLoc decodes r in the same manner Deserialize does, but it takes @@ -172,7 +160,7 @@ func (msg *MsgBlock) DeserializeTxLoc(r *bytes.Buffer) ([]TxLoc, error) { // This is part of the Message interface implementation. // See Serialize for encoding blocks to be stored to disk, such as in a // database, as opposed to encoding blocks for the wire. -func (msg *MsgBlock) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgBlock) BtcEncode(w io.Writer, pver uint32) error { err := writeBlockHeader(w, pver, &msg.Header) if err != nil { return err @@ -184,7 +172,7 @@ func (msg *MsgBlock) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) er } for _, tx := range msg.Transactions { - err = tx.BtcEncode(w, pver, enc) + err = tx.BtcEncode(w, pver) if err != nil { return err } @@ -206,24 +194,11 @@ func (msg *MsgBlock) Serialize(w io.Writer) error { // At the current time, there is no difference between the wire encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of BtcEncode. - // - // Passing WitnessEncoding as the encoding type here indicates that - // each of the transactions should be serialized using the witness - // serialization structure defined in BIP0141. - return msg.BtcEncode(w, 0, WitnessEncoding) -} - -// SerializeNoWitness encodes a block to w using an identical format to -// Serialize, with all (if any) witness data stripped from all transactions. -// This method is provided in additon to the regular Serialize, in order to -// allow one to selectively encode transaction witness data to non-upgraded -// peers which are unaware of the new encoding. -func (msg *MsgBlock) SerializeNoWitness(w io.Writer) error { - return msg.BtcEncode(w, 0, BaseEncoding) + return msg.BtcEncode(w, 0) } // SerializeSize returns the number of bytes it would take to serialize the -// block, factoring in any witness data within transaction. +// block. func (msg *MsgBlock) SerializeSize() int { // Block header bytes + Serialized varint size for the number of // transactions. @@ -236,20 +211,6 @@ func (msg *MsgBlock) SerializeSize() int { return n } -// SerializeSizeStripped returns the number of bytes it would take to serialize -// the block, excluding any witness data (if any). -func (msg *MsgBlock) SerializeSizeStripped() int { - // Block header bytes + Serialized varint size for the number of - // transactions. - n := blockHeaderLen + VarIntSerializeSize(uint64(len(msg.Transactions))) - - for _, tx := range msg.Transactions { - n += tx.SerializeSizeStripped() - } - - return n -} - // Command returns the protocol command string for the message. This is part // of the Message interface implementation. func (msg *MsgBlock) Command() string { diff --git a/wire/msgblock_test.go b/wire/msgblock_test.go index 087d0bf2c..2ff6351b3 100644 --- a/wire/msgblock_test.go +++ b/wire/msgblock_test.go @@ -110,12 +110,11 @@ func TestBlockHash(t *testing.T) { // of transaction inputs and outputs and protocol versions. func TestBlockWire(t *testing.T) { tests := []struct { - in *MsgBlock // Message to encode - out *MsgBlock // Expected decoded message - buf []byte // Wire encoding - txLocs []TxLoc // Expected transaction locations - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgBlock // Message to encode + out *MsgBlock // Expected decoded message + buf []byte // Wire encoding + txLocs []TxLoc // Expected transaction locations + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -124,7 +123,6 @@ func TestBlockWire(t *testing.T) { blockOneBytes, blockOneTxLocs, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -134,7 +132,6 @@ func TestBlockWire(t *testing.T) { blockOneBytes, blockOneTxLocs, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -144,7 +141,6 @@ func TestBlockWire(t *testing.T) { blockOneBytes, blockOneTxLocs, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -154,7 +150,6 @@ func TestBlockWire(t *testing.T) { blockOneBytes, blockOneTxLocs, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -164,16 +159,14 @@ func TestBlockWire(t *testing.T) { blockOneBytes, blockOneTxLocs, MultipleAddressVersion, - BaseEncoding, }, - // TODO(roasbeef): add case for witnessy block } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -187,7 +180,7 @@ func TestBlockWire(t *testing.T) { // Decode the message from wire format. var msg MsgBlock rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -209,37 +202,36 @@ func TestBlockWireErrors(t *testing.T) { pver := uint32(60002) tests := []struct { - in *MsgBlock // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgBlock // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in version. - {&blockOne, blockOneBytes, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in prev block hash. - {&blockOne, blockOneBytes, pver, BaseEncoding, 4, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 4, io.ErrShortWrite, io.EOF}, // Force error in merkle root. - {&blockOne, blockOneBytes, pver, BaseEncoding, 36, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 36, io.ErrShortWrite, io.EOF}, // Force error in timestamp. - {&blockOne, blockOneBytes, pver, BaseEncoding, 68, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 68, io.ErrShortWrite, io.EOF}, // Force error in difficulty bits. - {&blockOne, blockOneBytes, pver, BaseEncoding, 72, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 72, io.ErrShortWrite, io.EOF}, // Force error in header nonce. - {&blockOne, blockOneBytes, pver, BaseEncoding, 76, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 76, io.ErrShortWrite, io.EOF}, // Force error in transaction count. - {&blockOne, blockOneBytes, pver, BaseEncoding, 80, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 80, io.ErrShortWrite, io.EOF}, // Force error in transactions. - {&blockOne, blockOneBytes, pver, BaseEncoding, 81, io.ErrShortWrite, io.EOF}, + {&blockOne, blockOneBytes, pver, 81, io.ErrShortWrite, io.EOF}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if err != test.writeErr { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -249,7 +241,7 @@ func TestBlockWireErrors(t *testing.T) { // Decode from wire format. var msg MsgBlock r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if err != test.readErr { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) @@ -396,10 +388,9 @@ func TestBlockOverflowErrors(t *testing.T) { pver := uint32(70001) tests := []struct { - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - err error // Expected error + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + err error // Expected error }{ // Block that claims to have ~uint64(0) transactions. { @@ -418,7 +409,7 @@ func TestBlockOverflowErrors(t *testing.T) { 0x01, 0xe3, 0x62, 0x99, // Nonce 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // TxnCount - }, pver, BaseEncoding, &MessageError{}, + }, pver, &MessageError{}, }, } @@ -427,7 +418,7 @@ func TestBlockOverflowErrors(t *testing.T) { // Decode from wire format. var msg MsgBlock r := bytes.NewReader(test.buf) - err := msg.BtcDecode(r, test.pver, test.enc) + err := msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, reflect.TypeOf(test.err)) diff --git a/wire/msgcfcheckpt.go b/wire/msgcfcheckpt.go index c28991382..c9f8626c7 100644 --- a/wire/msgcfcheckpt.go +++ b/wire/msgcfcheckpt.go @@ -41,7 +41,7 @@ func (msg *MsgCFCheckpt) AddCFHeader(header *chainhash.Hash) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgCFCheckpt) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFCheckpt) BtcDecode(r io.Reader, pver uint32) error { // Read filter type err := readElement(r, &msg.FilterType) if err != nil { @@ -77,7 +77,7 @@ func (msg *MsgCFCheckpt) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgCFCheckpt) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFCheckpt) BtcEncode(w io.Writer, pver uint32) error { // Write filter type err := writeElement(w, msg.FilterType) if err != nil { @@ -120,7 +120,7 @@ func (msg *MsgCFCheckpt) Deserialize(r io.Reader) error { // At the current time, there is no difference between the wire encoding // and the stable long-term storage format. As a result, make use of // BtcDecode. - return msg.BtcDecode(r, 0, BaseEncoding) + return msg.BtcDecode(r, 0) } // Command returns the protocol command string for the message. This is part diff --git a/wire/msgcfheaders.go b/wire/msgcfheaders.go index b36e243fe..9986bf696 100644 --- a/wire/msgcfheaders.go +++ b/wire/msgcfheaders.go @@ -47,7 +47,7 @@ func (msg *MsgCFHeaders) AddCFHash(hash *chainhash.Hash) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgCFHeaders) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFHeaders) BtcDecode(r io.Reader, pver uint32) error { // Read filter type err := readElement(r, &msg.FilterType) if err != nil { @@ -97,7 +97,7 @@ func (msg *MsgCFHeaders) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgCFHeaders) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFHeaders) BtcEncode(w io.Writer, pver uint32) error { // Write filter type err := writeElement(w, msg.FilterType) if err != nil { @@ -153,7 +153,7 @@ func (msg *MsgCFHeaders) Deserialize(r io.Reader) error { // At the current time, there is no difference between the wire encoding // and the stable long-term storage format. As a result, make use of // BtcDecode. - return msg.BtcDecode(r, 0, BaseEncoding) + return msg.BtcDecode(r, 0) } // Command returns the protocol command string for the message. This is part diff --git a/wire/msgcfilter.go b/wire/msgcfilter.go index 01a527a3a..a48bd2fe9 100644 --- a/wire/msgcfilter.go +++ b/wire/msgcfilter.go @@ -39,7 +39,7 @@ type MsgCFilter struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgCFilter) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFilter) BtcDecode(r io.Reader, pver uint32) error { // Read filter type err := readElement(r, &msg.FilterType) if err != nil { @@ -60,7 +60,7 @@ func (msg *MsgCFilter) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) er // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgCFilter) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgCFilter) BtcEncode(w io.Writer, pver uint32) error { size := len(msg.Data) if size > MaxCFilterDataSize { str := fmt.Sprintf("cfilter size too large for message "+ @@ -94,7 +94,7 @@ func (msg *MsgCFilter) Deserialize(r io.Reader) error { // At the current time, there is no difference between the wire encoding // and the stable long-term storage format. As a result, make use of // BtcDecode. - return msg.BtcDecode(r, 0, BaseEncoding) + return msg.BtcDecode(r, 0) } // Command returns the protocol command string for the message. This is part diff --git a/wire/msgfeefilter.go b/wire/msgfeefilter.go index 754647a27..0162f8387 100644 --- a/wire/msgfeefilter.go +++ b/wire/msgfeefilter.go @@ -21,7 +21,7 @@ type MsgFeeFilter struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgFeeFilter) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgFeeFilter) BtcDecode(r io.Reader, pver uint32) error { if pver < FeeFilterVersion { str := fmt.Sprintf("feefilter message invalid for protocol "+ "version %d", pver) @@ -33,7 +33,7 @@ func (msg *MsgFeeFilter) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgFeeFilter) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgFeeFilter) BtcEncode(w io.Writer, pver uint32) error { if pver < FeeFilterVersion { str := fmt.Sprintf("feefilter message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgfeefilter_test.go b/wire/msgfeefilter_test.go index ccea45b4f..029462406 100644 --- a/wire/msgfeefilter_test.go +++ b/wire/msgfeefilter_test.go @@ -43,14 +43,14 @@ func TestFeeFilterLatest(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, BaseEncoding) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgFeeFilter failed %v err <%v>", msg, err) } // Test decode with latest protocol version. readmsg := NewMsgFeeFilter(0) - err = readmsg.BtcDecode(&buf, pver, BaseEncoding) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgFeeFilter failed [%v] err <%v>", buf, err) } @@ -91,7 +91,7 @@ func TestFeeFilterWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, BaseEncoding) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -105,7 +105,7 @@ func TestFeeFilterWire(t *testing.T) { // Decode the message from wire format. var msg MsgFeeFilter rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, BaseEncoding) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -149,7 +149,7 @@ func TestFeeFilterWireErrors(t *testing.T) { for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, BaseEncoding) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -169,7 +169,7 @@ func TestFeeFilterWireErrors(t *testing.T) { // Decode from wire format. var msg MsgFeeFilter r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, BaseEncoding) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgfilteradd.go b/wire/msgfilteradd.go index 21b67cabb..b9e8a8697 100644 --- a/wire/msgfilteradd.go +++ b/wire/msgfilteradd.go @@ -27,7 +27,7 @@ type MsgFilterAdd struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgFilterAdd) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterAdd) BtcDecode(r io.Reader, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filteradd message invalid for protocol "+ "version %d", pver) @@ -42,7 +42,7 @@ func (msg *MsgFilterAdd) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgFilterAdd) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterAdd) BtcEncode(w io.Writer, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filteradd message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgfilteradd_test.go b/wire/msgfilteradd_test.go index 6099b0fc4..1d1f1bf09 100644 --- a/wire/msgfilteradd_test.go +++ b/wire/msgfilteradd_test.go @@ -14,7 +14,6 @@ import ( // TestFilterAddLatest tests the MsgFilterAdd API against the latest protocol // version. func TestFilterAddLatest(t *testing.T) { - enc := BaseEncoding pver := ProtocolVersion data := []byte{0x01, 0x02} @@ -38,14 +37,14 @@ func TestFilterAddLatest(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgFilterAdd failed %v err <%v>", msg, err) } // Test decode with latest protocol version. var readmsg MsgFilterAdd - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgFilterAdd failed [%v] err <%v>", buf, err) } @@ -62,14 +61,14 @@ func TestFilterAddCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, LatestEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgFilterAdd failed %v err <%v>", msg, err) } // Decode with old protocol version. var readmsg MsgFilterAdd - err = readmsg.BtcDecode(&buf, BIP0031Version, LatestEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err == nil { t.Errorf("decode of MsgFilterAdd succeeded when it shouldn't "+ "have %v", msg) @@ -90,7 +89,7 @@ func TestFilterAddMaxDataSize(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, LatestEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err == nil { t.Errorf("encode of MsgFilterAdd succeeded when it shouldn't "+ "have %v", msg) @@ -98,7 +97,7 @@ func TestFilterAddMaxDataSize(t *testing.T) { // Decode with latest protocol version. readbuf := bytes.NewReader(data) - err = msg.BtcDecode(readbuf, ProtocolVersion, LatestEncoding) + err = msg.BtcDecode(readbuf, ProtocolVersion) if err == nil { t.Errorf("decode of MsgFilterAdd succeeded when it shouldn't "+ "have %v", msg) @@ -117,37 +116,27 @@ func TestFilterAddWireErrors(t *testing.T) { baseFilterAddEncoded := append([]byte{0x04}, baseData...) tests := []struct { - in *MsgFilterAdd // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgFilterAdd // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in data size. - { - baseFilterAdd, baseFilterAddEncoded, pver, BaseEncoding, 0, - io.ErrShortWrite, io.EOF, - }, + {baseFilterAdd, baseFilterAddEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in data. - { - baseFilterAdd, baseFilterAddEncoded, pver, BaseEncoding, 1, - io.ErrShortWrite, io.EOF, - }, + {baseFilterAdd, baseFilterAddEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error due to unsupported protocol version. - { - baseFilterAdd, baseFilterAddEncoded, pverNoFilterAdd, BaseEncoding, 5, - wireErr, wireErr, - }, + {baseFilterAdd, baseFilterAddEncoded, pverNoFilterAdd, 5, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -167,7 +156,7 @@ func TestFilterAddWireErrors(t *testing.T) { // Decode from wire format. var msg MsgFilterAdd r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgfilterclear.go b/wire/msgfilterclear.go index 7562fe2c0..b82d6b85c 100644 --- a/wire/msgfilterclear.go +++ b/wire/msgfilterclear.go @@ -18,7 +18,7 @@ type MsgFilterClear struct{} // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgFilterClear) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterClear) BtcDecode(r io.Reader, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filterclear message invalid for protocol "+ "version %d", pver) @@ -30,7 +30,7 @@ func (msg *MsgFilterClear) BtcDecode(r io.Reader, pver uint32, enc MessageEncodi // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgFilterClear) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterClear) BtcEncode(w io.Writer, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filterclear message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgfilterclear_test.go b/wire/msgfilterclear_test.go index 23adea561..1962e6142 100644 --- a/wire/msgfilterclear_test.go +++ b/wire/msgfilterclear_test.go @@ -43,14 +43,14 @@ func TestFilterClearCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, LatestEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgFilterClear failed %v err <%v>", msg, err) } // Decode with old protocol version. var readmsg MsgFilterClear - err = readmsg.BtcDecode(&buf, BIP0031Version, LatestEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err == nil { t.Errorf("decode of MsgFilterClear succeeded when it "+ "shouldn't have %v", msg) @@ -68,7 +68,6 @@ func TestFilterClearWire(t *testing.T) { out *MsgFilterClear // Expected decoded message buf []byte // Wire encoding pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format }{ // Latest protocol version. { @@ -76,7 +75,6 @@ func TestFilterClearWire(t *testing.T) { msgFilterClear, msgFilterClearEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0037Version + 1. @@ -85,7 +83,6 @@ func TestFilterClearWire(t *testing.T) { msgFilterClear, msgFilterClearEncoded, BIP0037Version + 1, - BaseEncoding, }, // Protocol version BIP0037Version. @@ -94,7 +91,6 @@ func TestFilterClearWire(t *testing.T) { msgFilterClear, msgFilterClearEncoded, BIP0037Version, - BaseEncoding, }, } @@ -102,7 +98,7 @@ func TestFilterClearWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -116,7 +112,7 @@ func TestFilterClearWire(t *testing.T) { // Decode the message from wire format. var msg MsgFilterClear rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -142,15 +138,13 @@ func TestFilterClearWireErrors(t *testing.T) { in *MsgFilterClear // Value to encode buf []byte // Wire encoding pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error }{ // Force error due to unsupported protocol version. { - baseFilterClear, baseFilterClearEncoded, - pverNoFilterClear, BaseEncoding, 4, wireErr, wireErr, + baseFilterClear, baseFilterClearEncoded, pverNoFilterClear, 4, wireErr, wireErr, }, } @@ -158,7 +152,7 @@ func TestFilterClearWireErrors(t *testing.T) { for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -178,7 +172,7 @@ func TestFilterClearWireErrors(t *testing.T) { // Decode from wire format. var msg MsgFilterClear r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgfilterload.go b/wire/msgfilterload.go index dbda73762..80374194f 100644 --- a/wire/msgfilterload.go +++ b/wire/msgfilterload.go @@ -51,7 +51,7 @@ type MsgFilterLoad struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgFilterLoad) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterLoad) BtcDecode(r io.Reader, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filterload message invalid for protocol "+ "version %d", pver) @@ -81,7 +81,7 @@ func (msg *MsgFilterLoad) BtcDecode(r io.Reader, pver uint32, enc MessageEncodin // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgFilterLoad) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgFilterLoad) BtcEncode(w io.Writer, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("filterload message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgfilterload_test.go b/wire/msgfilterload_test.go index fb045ffa3..231169ebd 100644 --- a/wire/msgfilterload_test.go +++ b/wire/msgfilterload_test.go @@ -15,7 +15,6 @@ import ( // version. func TestFilterLoadLatest(t *testing.T) { pver := ProtocolVersion - enc := BaseEncoding data := []byte{0x01, 0x02} msg := NewMsgFilterLoad(data, 10, 0, 0) @@ -38,14 +37,14 @@ func TestFilterLoadLatest(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgFilterLoad failed %v err <%v>", msg, err) } // Test decode with latest protocol version. readmsg := MsgFilterLoad{} - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgFilterLoad failed [%v] err <%v>", buf, err) } @@ -59,7 +58,7 @@ func TestFilterLoadCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of NewMsgFilterLoad failed %v err <%v>", msg, err) @@ -67,7 +66,7 @@ func TestFilterLoadCrossProtocol(t *testing.T) { // Decode with old protocol version. var readmsg MsgFilterLoad - err = readmsg.BtcDecode(&buf, BIP0031Version, BaseEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err == nil { t.Errorf("decode of MsgFilterLoad succeeded when it shouldn't have %v", msg) @@ -81,7 +80,7 @@ func TestFilterLoadMaxFilterSize(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err == nil { t.Errorf("encode of MsgFilterLoad succeeded when it shouldn't "+ "have %v", msg) @@ -89,7 +88,7 @@ func TestFilterLoadMaxFilterSize(t *testing.T) { // Decode with latest protocol version. readbuf := bytes.NewReader(data) - err = msg.BtcDecode(readbuf, ProtocolVersion, BaseEncoding) + err = msg.BtcDecode(readbuf, ProtocolVersion) if err == nil { t.Errorf("decode of MsgFilterLoad succeeded when it shouldn't "+ "have %v", msg) @@ -103,7 +102,7 @@ func TestFilterLoadMaxHashFuncsSize(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err == nil { t.Errorf("encode of MsgFilterLoad succeeded when it shouldn't have %v", msg) @@ -118,7 +117,7 @@ func TestFilterLoadMaxHashFuncsSize(t *testing.T) { } // Decode with latest protocol version. readbuf := bytes.NewReader(newBuf) - err = msg.BtcDecode(readbuf, ProtocolVersion, BaseEncoding) + err = msg.BtcDecode(readbuf, ProtocolVersion) if err == nil { t.Errorf("decode of MsgFilterLoad succeeded when it shouldn't have %v", msg) @@ -141,44 +140,37 @@ func TestFilterLoadWireErrors(t *testing.T) { 0x00) // Flags tests := []struct { - in *MsgFilterLoad // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgFilterLoad // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in filter size. { - baseFilterLoad, baseFilterLoadEncoded, pver, BaseEncoding, 0, - io.ErrShortWrite, io.EOF, + baseFilterLoad, baseFilterLoadEncoded, pver, 0, io.ErrShortWrite, io.EOF, }, // Force error in filter. { - baseFilterLoad, baseFilterLoadEncoded, pver, BaseEncoding, 1, - io.ErrShortWrite, io.EOF, + baseFilterLoad, baseFilterLoadEncoded, pver, 1, io.ErrShortWrite, io.EOF, }, // Force error in hash funcs. { - baseFilterLoad, baseFilterLoadEncoded, pver, BaseEncoding, 5, - io.ErrShortWrite, io.EOF, + baseFilterLoad, baseFilterLoadEncoded, pver, 5, io.ErrShortWrite, io.EOF, }, // Force error in tweak. { - baseFilterLoad, baseFilterLoadEncoded, pver, BaseEncoding, 9, - io.ErrShortWrite, io.EOF, + baseFilterLoad, baseFilterLoadEncoded, pver, 9, io.ErrShortWrite, io.EOF, }, // Force error in flags. { - baseFilterLoad, baseFilterLoadEncoded, pver, BaseEncoding, 13, - io.ErrShortWrite, io.EOF, + baseFilterLoad, baseFilterLoadEncoded, pver, 13, io.ErrShortWrite, io.EOF, }, // Force error due to unsupported protocol version. { - baseFilterLoad, baseFilterLoadEncoded, pverNoFilterLoad, BaseEncoding, - 10, wireErr, wireErr, + baseFilterLoad, baseFilterLoadEncoded, pverNoFilterLoad, 10, wireErr, wireErr, }, } @@ -186,7 +178,7 @@ func TestFilterLoadWireErrors(t *testing.T) { for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -206,7 +198,7 @@ func TestFilterLoadWireErrors(t *testing.T) { // Decode from wire format. var msg MsgFilterLoad r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msggetaddr.go b/wire/msggetaddr.go index 2af8018f8..0a4bf57ad 100644 --- a/wire/msggetaddr.go +++ b/wire/msggetaddr.go @@ -18,13 +18,13 @@ type MsgGetAddr struct{} // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetAddr) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetAddr) BtcDecode(r io.Reader, pver uint32) error { return nil } // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetAddr) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetAddr) BtcEncode(w io.Writer, pver uint32) error { return nil } diff --git a/wire/msggetaddr_test.go b/wire/msggetaddr_test.go index 6a6f0f9c0..a5427322d 100644 --- a/wire/msggetaddr_test.go +++ b/wire/msggetaddr_test.go @@ -42,11 +42,10 @@ func TestGetAddrWire(t *testing.T) { msgGetAddrEncoded := []byte{} tests := []struct { - in *MsgGetAddr // Message to encode - out *MsgGetAddr // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding variant. + in *MsgGetAddr // Message to encode + out *MsgGetAddr // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -54,7 +53,6 @@ func TestGetAddrWire(t *testing.T) { msgGetAddr, msgGetAddrEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -63,7 +61,6 @@ func TestGetAddrWire(t *testing.T) { msgGetAddr, msgGetAddrEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -72,7 +69,6 @@ func TestGetAddrWire(t *testing.T) { msgGetAddr, msgGetAddrEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -81,7 +77,6 @@ func TestGetAddrWire(t *testing.T) { msgGetAddr, msgGetAddrEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -90,7 +85,6 @@ func TestGetAddrWire(t *testing.T) { msgGetAddr, msgGetAddrEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -98,7 +92,7 @@ func TestGetAddrWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -112,7 +106,7 @@ func TestGetAddrWire(t *testing.T) { // Decode the message from wire format. var msg MsgGetAddr rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue diff --git a/wire/msggetblocks.go b/wire/msggetblocks.go index 65d0c4aad..c8ed4d192 100644 --- a/wire/msggetblocks.go +++ b/wire/msggetblocks.go @@ -50,7 +50,7 @@ func (msg *MsgGetBlocks) AddBlockLocatorHash(hash *chainhash.Hash) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetBlocks) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetBlocks) BtcDecode(r io.Reader, pver uint32) error { err := readElement(r, &msg.ProtocolVersion) if err != nil { return err @@ -85,7 +85,7 @@ func (msg *MsgGetBlocks) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetBlocks) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetBlocks) BtcEncode(w io.Writer, pver uint32) error { count := len(msg.BlockLocatorHashes) if count > MaxBlockLocatorsPerMsg { str := fmt.Sprintf("too many block locator hashes for message "+ diff --git a/wire/msggetblocks_test.go b/wire/msggetblocks_test.go index ad6ca802e..2feac8c7d 100644 --- a/wire/msggetblocks_test.go +++ b/wire/msggetblocks_test.go @@ -142,11 +142,10 @@ func TestGetBlocksWire(t *testing.T) { } tests := []struct { - in *MsgGetBlocks // Message to encode - out *MsgGetBlocks // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgGetBlocks // Message to encode + out *MsgGetBlocks // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no block locators. { @@ -154,7 +153,6 @@ func TestGetBlocksWire(t *testing.T) { noLocators, noLocatorsEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple block locators. @@ -163,7 +161,6 @@ func TestGetBlocksWire(t *testing.T) { multiLocators, multiLocatorsEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version with no block locators. @@ -172,7 +169,6 @@ func TestGetBlocksWire(t *testing.T) { noLocators, noLocatorsEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple block locators. @@ -181,7 +177,6 @@ func TestGetBlocksWire(t *testing.T) { multiLocators, multiLocatorsEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version with no block locators. @@ -190,7 +185,6 @@ func TestGetBlocksWire(t *testing.T) { noLocators, noLocatorsEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Versionwith multiple block locators. @@ -199,7 +193,6 @@ func TestGetBlocksWire(t *testing.T) { multiLocators, multiLocatorsEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with no block locators. @@ -208,7 +201,6 @@ func TestGetBlocksWire(t *testing.T) { noLocators, noLocatorsEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion multiple block locators. @@ -217,7 +209,6 @@ func TestGetBlocksWire(t *testing.T) { multiLocators, multiLocatorsEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with no block locators. @@ -226,7 +217,6 @@ func TestGetBlocksWire(t *testing.T) { noLocators, noLocatorsEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion multiple block locators. @@ -235,7 +225,6 @@ func TestGetBlocksWire(t *testing.T) { multiLocators, multiLocatorsEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -243,7 +232,7 @@ func TestGetBlocksWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -257,7 +246,7 @@ func TestGetBlocksWire(t *testing.T) { // Decode the message from wire format. var msg MsgGetBlocks rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -336,31 +325,30 @@ func TestGetBlocksWireErrors(t *testing.T) { } tests := []struct { - in *MsgGetBlocks // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgGetBlocks // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in protocol version. - {baseGetBlocks, baseGetBlocksEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseGetBlocks, baseGetBlocksEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in block locator hash count. - {baseGetBlocks, baseGetBlocksEncoded, pver, BaseEncoding, 4, io.ErrShortWrite, io.EOF}, + {baseGetBlocks, baseGetBlocksEncoded, pver, 4, io.ErrShortWrite, io.EOF}, // Force error in block locator hashes. - {baseGetBlocks, baseGetBlocksEncoded, pver, BaseEncoding, 5, io.ErrShortWrite, io.EOF}, + {baseGetBlocks, baseGetBlocksEncoded, pver, 5, io.ErrShortWrite, io.EOF}, // Force error in stop hash. - {baseGetBlocks, baseGetBlocksEncoded, pver, BaseEncoding, 69, io.ErrShortWrite, io.EOF}, + {baseGetBlocks, baseGetBlocksEncoded, pver, 69, io.ErrShortWrite, io.EOF}, // Force error with greater than max block locator hashes. - {maxGetBlocks, maxGetBlocksEncoded, pver, BaseEncoding, 7, wireErr, wireErr}, + {maxGetBlocks, maxGetBlocksEncoded, pver, 7, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -380,7 +368,7 @@ func TestGetBlocksWireErrors(t *testing.T) { // Decode from wire format. var msg MsgGetBlocks r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msggetcfcheckpt.go b/wire/msggetcfcheckpt.go index 6d209b16f..f3620730f 100644 --- a/wire/msggetcfcheckpt.go +++ b/wire/msggetcfcheckpt.go @@ -20,7 +20,7 @@ type MsgGetCFCheckpt struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetCFCheckpt) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFCheckpt) BtcDecode(r io.Reader, pver uint32) error { err := readElement(r, &msg.FilterType) if err != nil { return err @@ -31,7 +31,7 @@ func (msg *MsgGetCFCheckpt) BtcDecode(r io.Reader, pver uint32, _ MessageEncodin // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetCFCheckpt) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFCheckpt) BtcEncode(w io.Writer, pver uint32) error { err := writeElement(w, msg.FilterType) if err != nil { return err diff --git a/wire/msggetcfheaders.go b/wire/msggetcfheaders.go index 562514848..dbfa0cdfa 100644 --- a/wire/msggetcfheaders.go +++ b/wire/msggetcfheaders.go @@ -21,7 +21,7 @@ type MsgGetCFHeaders struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetCFHeaders) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFHeaders) BtcDecode(r io.Reader, pver uint32) error { err := readElement(r, &msg.FilterType) if err != nil { return err @@ -37,7 +37,7 @@ func (msg *MsgGetCFHeaders) BtcDecode(r io.Reader, pver uint32, _ MessageEncodin // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetCFHeaders) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFHeaders) BtcEncode(w io.Writer, pver uint32) error { err := writeElement(w, msg.FilterType) if err != nil { return err diff --git a/wire/msggetcfilters.go b/wire/msggetcfilters.go index e07526c6e..04d1c4a5f 100644 --- a/wire/msggetcfilters.go +++ b/wire/msggetcfilters.go @@ -25,7 +25,7 @@ type MsgGetCFilters struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetCFilters) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFilters) BtcDecode(r io.Reader, pver uint32) error { err := readElement(r, &msg.FilterType) if err != nil { return err @@ -41,7 +41,7 @@ func (msg *MsgGetCFilters) BtcDecode(r io.Reader, pver uint32, _ MessageEncoding // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetCFilters) BtcEncode(w io.Writer, pver uint32, _ MessageEncoding) error { +func (msg *MsgGetCFilters) BtcEncode(w io.Writer, pver uint32) error { err := writeElement(w, msg.FilterType) if err != nil { return err diff --git a/wire/msggetdata.go b/wire/msggetdata.go index 5837fac5b..b646c46cc 100644 --- a/wire/msggetdata.go +++ b/wire/msggetdata.go @@ -37,7 +37,7 @@ func (msg *MsgGetData) AddInvVect(iv *InvVect) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetData) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetData) BtcDecode(r io.Reader, pver uint32) error { count, err := ReadVarInt(r, pver) if err != nil { return err @@ -67,7 +67,7 @@ func (msg *MsgGetData) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetData) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetData) BtcEncode(w io.Writer, pver uint32) error { // Limit to max inventory vectors per message. count := len(msg.InvList) if count > MaxInvPerMsg { diff --git a/wire/msggetdata_test.go b/wire/msggetdata_test.go index 581a8e513..eade88286 100644 --- a/wire/msggetdata_test.go +++ b/wire/msggetdata_test.go @@ -113,11 +113,10 @@ func TestGetDataWire(t *testing.T) { } tests := []struct { - in *MsgGetData // Message to encode - out *MsgGetData // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgGetData // Message to encode + out *MsgGetData // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no inv vectors. { @@ -125,7 +124,6 @@ func TestGetDataWire(t *testing.T) { NoInv, NoInvEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple inv vectors. @@ -134,7 +132,6 @@ func TestGetDataWire(t *testing.T) { MultiInv, MultiInvEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version no inv vectors. @@ -143,7 +140,6 @@ func TestGetDataWire(t *testing.T) { NoInv, NoInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple inv vectors. @@ -152,7 +148,6 @@ func TestGetDataWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version no inv vectors. @@ -161,7 +156,6 @@ func TestGetDataWire(t *testing.T) { NoInv, NoInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Version with multiple inv vectors. @@ -170,7 +164,6 @@ func TestGetDataWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion no inv vectors. @@ -179,7 +172,6 @@ func TestGetDataWire(t *testing.T) { NoInv, NoInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with multiple inv vectors. @@ -188,7 +180,6 @@ func TestGetDataWire(t *testing.T) { MultiInv, MultiInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion no inv vectors. @@ -197,7 +188,6 @@ func TestGetDataWire(t *testing.T) { NoInv, NoInvEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with multiple inv vectors. @@ -206,7 +196,6 @@ func TestGetDataWire(t *testing.T) { MultiInv, MultiInvEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -214,7 +203,7 @@ func TestGetDataWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -228,7 +217,7 @@ func TestGetDataWire(t *testing.T) { // Decode the message from wire format. var msg MsgGetData rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -280,28 +269,27 @@ func TestGetDataWireErrors(t *testing.T) { } tests := []struct { - in *MsgGetData // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgGetData // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in inventory vector count - {baseGetData, baseGetDataEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseGetData, baseGetDataEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in inventory list. - {baseGetData, baseGetDataEncoded, pver, BaseEncoding, 1, io.ErrShortWrite, io.EOF}, + {baseGetData, baseGetDataEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error with greater than max inventory vectors. - {maxGetData, maxGetDataEncoded, pver, BaseEncoding, 3, wireErr, wireErr}, + {maxGetData, maxGetDataEncoded, pver, 3, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -321,7 +309,7 @@ func TestGetDataWireErrors(t *testing.T) { // Decode from wire format. var msg MsgGetData r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msggetheaders.go b/wire/msggetheaders.go index dd339d37c..58b50f74c 100644 --- a/wire/msggetheaders.go +++ b/wire/msggetheaders.go @@ -47,7 +47,7 @@ func (msg *MsgGetHeaders) AddBlockLocatorHash(hash *chainhash.Hash) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgGetHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetHeaders) BtcDecode(r io.Reader, pver uint32) error { err := readElement(r, &msg.ProtocolVersion) if err != nil { return err @@ -82,7 +82,7 @@ func (msg *MsgGetHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncodin // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgGetHeaders) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgGetHeaders) BtcEncode(w io.Writer, pver uint32) error { // Limit to max block locator hashes per message. count := len(msg.BlockLocatorHashes) if count > MaxBlockLocatorsPerMsg { diff --git a/wire/msggetheaders_test.go b/wire/msggetheaders_test.go index c9d99d9e7..a10eb9f18 100644 --- a/wire/msggetheaders_test.go +++ b/wire/msggetheaders_test.go @@ -132,11 +132,10 @@ func TestGetHeadersWire(t *testing.T) { } tests := []struct { - in *MsgGetHeaders // Message to encode - out *MsgGetHeaders // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgGetHeaders // Message to encode + out *MsgGetHeaders // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no block locators. { @@ -144,7 +143,6 @@ func TestGetHeadersWire(t *testing.T) { noLocators, noLocatorsEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple block locators. @@ -153,7 +151,6 @@ func TestGetHeadersWire(t *testing.T) { multiLocators, multiLocatorsEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version with no block locators. @@ -162,7 +159,6 @@ func TestGetHeadersWire(t *testing.T) { noLocators, noLocatorsEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple block locators. @@ -171,7 +167,6 @@ func TestGetHeadersWire(t *testing.T) { multiLocators, multiLocatorsEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version with no block locators. @@ -180,7 +175,6 @@ func TestGetHeadersWire(t *testing.T) { noLocators, noLocatorsEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Versionwith multiple block locators. @@ -189,7 +183,6 @@ func TestGetHeadersWire(t *testing.T) { multiLocators, multiLocatorsEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with no block locators. @@ -198,7 +191,6 @@ func TestGetHeadersWire(t *testing.T) { noLocators, noLocatorsEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion multiple block locators. @@ -207,7 +199,6 @@ func TestGetHeadersWire(t *testing.T) { multiLocators, multiLocatorsEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with no block locators. @@ -216,7 +207,6 @@ func TestGetHeadersWire(t *testing.T) { noLocators, noLocatorsEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion multiple block locators. @@ -225,7 +215,6 @@ func TestGetHeadersWire(t *testing.T) { multiLocators, multiLocatorsEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -233,7 +222,7 @@ func TestGetHeadersWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -247,7 +236,7 @@ func TestGetHeadersWire(t *testing.T) { // Decode the message from wire format. var msg MsgGetHeaders rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -327,31 +316,30 @@ func TestGetHeadersWireErrors(t *testing.T) { } tests := []struct { - in *MsgGetHeaders // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgGetHeaders // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in protocol version. - {baseGetHeaders, baseGetHeadersEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseGetHeaders, baseGetHeadersEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in block locator hash count. - {baseGetHeaders, baseGetHeadersEncoded, pver, BaseEncoding, 4, io.ErrShortWrite, io.EOF}, + {baseGetHeaders, baseGetHeadersEncoded, pver, 4, io.ErrShortWrite, io.EOF}, // Force error in block locator hashes. - {baseGetHeaders, baseGetHeadersEncoded, pver, BaseEncoding, 5, io.ErrShortWrite, io.EOF}, + {baseGetHeaders, baseGetHeadersEncoded, pver, 5, io.ErrShortWrite, io.EOF}, // Force error in stop hash. - {baseGetHeaders, baseGetHeadersEncoded, pver, BaseEncoding, 69, io.ErrShortWrite, io.EOF}, + {baseGetHeaders, baseGetHeadersEncoded, pver, 69, io.ErrShortWrite, io.EOF}, // Force error with greater than max block locator hashes. - {maxGetHeaders, maxGetHeadersEncoded, pver, BaseEncoding, 7, wireErr, wireErr}, + {maxGetHeaders, maxGetHeadersEncoded, pver, 7, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -371,7 +359,7 @@ func TestGetHeadersWireErrors(t *testing.T) { // Decode from wire format. var msg MsgGetHeaders r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgheaders.go b/wire/msgheaders.go index 7d18d930e..588b8be5f 100644 --- a/wire/msgheaders.go +++ b/wire/msgheaders.go @@ -36,7 +36,7 @@ func (msg *MsgHeaders) AddBlockHeader(bh *BlockHeader) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgHeaders) BtcDecode(r io.Reader, pver uint32) error { count, err := ReadVarInt(r, pver) if err != nil { return err @@ -79,7 +79,7 @@ func (msg *MsgHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgHeaders) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgHeaders) BtcEncode(w io.Writer, pver uint32) error { // Limit to max block headers per message. count := len(msg.Headers) if count > MaxBlockHeadersPerMsg { diff --git a/wire/msgheaders_test.go b/wire/msgheaders_test.go index 9b94545bd..1e44c56d2 100644 --- a/wire/msgheaders_test.go +++ b/wire/msgheaders_test.go @@ -95,11 +95,10 @@ func TestHeadersWire(t *testing.T) { } tests := []struct { - in *MsgHeaders // Message to encode - out *MsgHeaders // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgHeaders // Message to encode + out *MsgHeaders // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no headers. { @@ -107,7 +106,6 @@ func TestHeadersWire(t *testing.T) { noHeaders, noHeadersEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with one header. @@ -116,7 +114,6 @@ func TestHeadersWire(t *testing.T) { oneHeader, oneHeaderEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version with no headers. @@ -125,7 +122,6 @@ func TestHeadersWire(t *testing.T) { noHeaders, noHeadersEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with one header. @@ -134,7 +130,6 @@ func TestHeadersWire(t *testing.T) { oneHeader, oneHeaderEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version with no headers. @@ -143,7 +138,6 @@ func TestHeadersWire(t *testing.T) { noHeaders, noHeadersEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Version with one header. @@ -152,7 +146,6 @@ func TestHeadersWire(t *testing.T) { oneHeader, oneHeaderEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with no headers. { @@ -160,7 +153,6 @@ func TestHeadersWire(t *testing.T) { noHeaders, noHeadersEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with one header. @@ -169,7 +161,6 @@ func TestHeadersWire(t *testing.T) { oneHeader, oneHeaderEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with no headers. @@ -178,7 +169,6 @@ func TestHeadersWire(t *testing.T) { noHeaders, noHeadersEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with one header. @@ -187,7 +177,6 @@ func TestHeadersWire(t *testing.T) { oneHeader, oneHeaderEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -195,7 +184,7 @@ func TestHeadersWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -209,7 +198,7 @@ func TestHeadersWire(t *testing.T) { // Decode the message from wire format. var msg MsgHeaders rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -293,32 +282,31 @@ func TestHeadersWireErrors(t *testing.T) { } tests := []struct { - in *MsgHeaders // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgHeaders // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in header count. - {oneHeader, oneHeaderEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {oneHeader, oneHeaderEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in block header. - {oneHeader, oneHeaderEncoded, pver, BaseEncoding, 5, io.ErrShortWrite, io.EOF}, + {oneHeader, oneHeaderEncoded, pver, 5, io.ErrShortWrite, io.EOF}, // Force error with greater than max headers. - {maxHeaders, maxHeadersEncoded, pver, BaseEncoding, 3, wireErr, wireErr}, + {maxHeaders, maxHeadersEncoded, pver, 3, wireErr, wireErr}, // Force error with number of transactions. - {transHeader, transHeaderEncoded, pver, BaseEncoding, 81, io.ErrShortWrite, io.EOF}, + {transHeader, transHeaderEncoded, pver, 81, io.ErrShortWrite, io.EOF}, // Force error with included transactions. - {transHeader, transHeaderEncoded, pver, BaseEncoding, len(transHeaderEncoded), nil, wireErr}, + {transHeader, transHeaderEncoded, pver, len(transHeaderEncoded), nil, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -338,7 +326,7 @@ func TestHeadersWireErrors(t *testing.T) { // Decode from wire format. var msg MsgHeaders r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msginv.go b/wire/msginv.go index 5377b179c..34db4bb0d 100644 --- a/wire/msginv.go +++ b/wire/msginv.go @@ -45,7 +45,7 @@ func (msg *MsgInv) AddInvVect(iv *InvVect) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgInv) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgInv) BtcDecode(r io.Reader, pver uint32) error { count, err := ReadVarInt(r, pver) if err != nil { return err @@ -75,7 +75,7 @@ func (msg *MsgInv) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) erro // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgInv) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgInv) BtcEncode(w io.Writer, pver uint32) error { // Limit to max inventory vectors per message. count := len(msg.InvList) if count > MaxInvPerMsg { diff --git a/wire/msginv_test.go b/wire/msginv_test.go index c8ca98c1d..1950127e4 100644 --- a/wire/msginv_test.go +++ b/wire/msginv_test.go @@ -113,11 +113,10 @@ func TestInvWire(t *testing.T) { } tests := []struct { - in *MsgInv // Message to encode - out *MsgInv // Expected decoded message - buf []byte // Wire encoding pver uint32 - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encodinf format + in *MsgInv // Message to encode + out *MsgInv // Expected decoded message + buf []byte // Wire encoding pver uint32 + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no inv vectors. { @@ -125,7 +124,6 @@ func TestInvWire(t *testing.T) { NoInv, NoInvEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple inv vectors. @@ -134,7 +132,6 @@ func TestInvWire(t *testing.T) { MultiInv, MultiInvEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version no inv vectors. @@ -143,7 +140,6 @@ func TestInvWire(t *testing.T) { NoInv, NoInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple inv vectors. @@ -152,7 +148,6 @@ func TestInvWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version no inv vectors. @@ -161,7 +156,6 @@ func TestInvWire(t *testing.T) { NoInv, NoInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Version with multiple inv vectors. @@ -170,7 +164,6 @@ func TestInvWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion no inv vectors. @@ -179,7 +172,6 @@ func TestInvWire(t *testing.T) { NoInv, NoInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with multiple inv vectors. @@ -188,7 +180,6 @@ func TestInvWire(t *testing.T) { MultiInv, MultiInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion no inv vectors. @@ -197,7 +188,6 @@ func TestInvWire(t *testing.T) { NoInv, NoInvEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with multiple inv vectors. @@ -206,7 +196,6 @@ func TestInvWire(t *testing.T) { MultiInv, MultiInvEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -214,7 +203,7 @@ func TestInvWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -228,7 +217,7 @@ func TestInvWire(t *testing.T) { // Decode the message from wire format. var msg MsgInv rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -280,28 +269,27 @@ func TestInvWireErrors(t *testing.T) { } tests := []struct { - in *MsgInv // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgInv // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in inventory vector count - {baseInv, baseInvEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseInv, baseInvEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in inventory list. - {baseInv, baseInvEncoded, pver, BaseEncoding, 1, io.ErrShortWrite, io.EOF}, + {baseInv, baseInvEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error with greater than max inventory vectors. - {maxInv, maxInvEncoded, pver, BaseEncoding, 3, wireErr, wireErr}, + {maxInv, maxInvEncoded, pver, 3, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -321,7 +309,7 @@ func TestInvWireErrors(t *testing.T) { // Decode from wire format. var msg MsgInv r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgmempool.go b/wire/msgmempool.go index 25760c52e..f6b08c2e4 100644 --- a/wire/msgmempool.go +++ b/wire/msgmempool.go @@ -19,7 +19,7 @@ type MsgMemPool struct{} // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgMemPool) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgMemPool) BtcDecode(r io.Reader, pver uint32) error { if pver < BIP0035Version { str := fmt.Sprintf("mempool message invalid for protocol "+ "version %d", pver) @@ -31,7 +31,7 @@ func (msg *MsgMemPool) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgMemPool) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgMemPool) BtcEncode(w io.Writer, pver uint32) error { if pver < BIP0035Version { str := fmt.Sprintf("mempool message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgmempool_test.go b/wire/msgmempool_test.go index 04652eb44..5d05e7212 100644 --- a/wire/msgmempool_test.go +++ b/wire/msgmempool_test.go @@ -11,7 +11,6 @@ import ( func TestMemPool(t *testing.T) { pver := ProtocolVersion - enc := BaseEncoding // Ensure the command is expected value. wantCmd := "mempool" @@ -32,7 +31,7 @@ func TestMemPool(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgMemPool failed %v err <%v>", msg, err) } @@ -40,7 +39,7 @@ func TestMemPool(t *testing.T) { // Older protocol versions should fail encode since message didn't // exist yet. oldPver := BIP0035Version - 1 - err = msg.BtcEncode(&buf, oldPver, enc) + err = msg.BtcEncode(&buf, oldPver) if err == nil { s := "encode of MsgMemPool passed for old protocol version %v err <%v>" t.Errorf(s, msg, err) @@ -48,14 +47,14 @@ func TestMemPool(t *testing.T) { // Test decode with latest protocol version. readmsg := NewMsgMemPool() - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgMemPool failed [%v] err <%v>", buf, err) } // Older protocol versions should fail decode since message didn't // exist yet. - err = readmsg.BtcDecode(&buf, oldPver, enc) + err = readmsg.BtcDecode(&buf, oldPver) if err == nil { s := "decode of MsgMemPool passed for old protocol version %v err <%v>" t.Errorf(s, msg, err) diff --git a/wire/msgmerkleblock.go b/wire/msgmerkleblock.go index ae70dd267..b82b7b24f 100644 --- a/wire/msgmerkleblock.go +++ b/wire/msgmerkleblock.go @@ -42,7 +42,7 @@ func (msg *MsgMerkleBlock) AddTxHash(hash *chainhash.Hash) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgMerkleBlock) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgMerkleBlock) BtcDecode(r io.Reader, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("merkleblock message invalid for protocol "+ "version %d", pver) @@ -90,7 +90,7 @@ func (msg *MsgMerkleBlock) BtcDecode(r io.Reader, pver uint32, enc MessageEncodi // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgMerkleBlock) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgMerkleBlock) BtcEncode(w io.Writer, pver uint32) error { if pver < BIP0037Version { str := fmt.Sprintf("merkleblock message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgmerkleblock_test.go b/wire/msgmerkleblock_test.go index 175526fdb..1d407f409 100644 --- a/wire/msgmerkleblock_test.go +++ b/wire/msgmerkleblock_test.go @@ -19,7 +19,6 @@ import ( // TestMerkleBlock tests the MsgMerkleBlock API. func TestMerkleBlock(t *testing.T) { pver := ProtocolVersion - enc := BaseEncoding // Block 1 header. prevHash := &blockOne.Header.PrevBlock @@ -77,21 +76,21 @@ func TestMerkleBlock(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgMerkleBlock failed %v err <%v>", msg, err) } // Test decode with latest protocol version. readmsg := MsgMerkleBlock{} - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgMerkleBlock failed [%v] err <%v>", buf, err) } // Force extra hash to test maxTxPerBlock. msg.Hashes = append(msg.Hashes, hash) - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err == nil { t.Errorf("encode of MsgMerkleBlock succeeded with too many " + "tx hashes when it should have failed") @@ -102,7 +101,7 @@ func TestMerkleBlock(t *testing.T) { // Reset the number of hashes back to a valid value. msg.Hashes = msg.Hashes[len(msg.Hashes)-1:] msg.Flags = make([]byte, maxFlagsPerMerkleBlock+1) - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err == nil { t.Errorf("encode of MsgMerkleBlock succeeded with too many " + "flag bytes when it should have failed") @@ -124,7 +123,7 @@ func TestMerkleBlockCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of NewMsgFilterLoad failed %v err <%v>", msg, err) @@ -132,7 +131,7 @@ func TestMerkleBlockCrossProtocol(t *testing.T) { // Decode with old protocol version. var readmsg MsgFilterLoad - err = readmsg.BtcDecode(&buf, BIP0031Version, BaseEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err == nil { t.Errorf("decode of MsgFilterLoad succeeded when it shouldn't have %v", msg) @@ -147,18 +146,15 @@ func TestMerkleBlockWire(t *testing.T) { out *MsgMerkleBlock // Expected decoded message buf []byte // Wire encoding pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format }{ // Latest protocol version. { - &merkleBlockOne, &merkleBlockOne, merkleBlockOneBytes, - ProtocolVersion, BaseEncoding, + &merkleBlockOne, &merkleBlockOne, merkleBlockOneBytes, ProtocolVersion, }, // Protocol version BIP0037Version. { - &merkleBlockOne, &merkleBlockOne, merkleBlockOneBytes, - BIP0037Version, BaseEncoding, + &merkleBlockOne, &merkleBlockOne, merkleBlockOneBytes, BIP0037Version, }, } @@ -166,7 +162,7 @@ func TestMerkleBlockWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -180,7 +176,7 @@ func TestMerkleBlockWire(t *testing.T) { // Decode the message from wire format. var msg MsgMerkleBlock rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -207,70 +203,69 @@ func TestMerkleBlockWireErrors(t *testing.T) { in *MsgMerkleBlock // Value to encode buf []byte // Wire encoding pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error }{ // Force error in version. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 0, + &merkleBlockOne, merkleBlockOneBytes, pver, 0, io.ErrShortWrite, io.EOF, }, // Force error in prev block hash. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 4, + &merkleBlockOne, merkleBlockOneBytes, pver, 4, io.ErrShortWrite, io.EOF, }, // Force error in merkle root. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 36, + &merkleBlockOne, merkleBlockOneBytes, pver, 36, io.ErrShortWrite, io.EOF, }, // Force error in timestamp. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 68, + &merkleBlockOne, merkleBlockOneBytes, pver, 68, io.ErrShortWrite, io.EOF, }, // Force error in difficulty bits. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 72, + &merkleBlockOne, merkleBlockOneBytes, pver, 72, io.ErrShortWrite, io.EOF, }, // Force error in header nonce. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 76, + &merkleBlockOne, merkleBlockOneBytes, pver, 76, io.ErrShortWrite, io.EOF, }, // Force error in transaction count. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 80, + &merkleBlockOne, merkleBlockOneBytes, pver, 80, io.ErrShortWrite, io.EOF, }, // Force error in num hashes. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 84, + &merkleBlockOne, merkleBlockOneBytes, pver, 84, io.ErrShortWrite, io.EOF, }, // Force error in hashes. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 85, + &merkleBlockOne, merkleBlockOneBytes, pver, 85, io.ErrShortWrite, io.EOF, }, // Force error in num flag bytes. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 117, + &merkleBlockOne, merkleBlockOneBytes, pver, 117, io.ErrShortWrite, io.EOF, }, // Force error in flag bytes. { - &merkleBlockOne, merkleBlockOneBytes, pver, BaseEncoding, 118, + &merkleBlockOne, merkleBlockOneBytes, pver, 118, io.ErrShortWrite, io.EOF, }, // Force error due to unsupported protocol version. { &merkleBlockOne, merkleBlockOneBytes, pverNoMerkleBlock, - BaseEncoding, 119, wireErr, wireErr, + 119, wireErr, wireErr, }, } @@ -278,7 +273,7 @@ func TestMerkleBlockWireErrors(t *testing.T) { for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -298,7 +293,7 @@ func TestMerkleBlockWireErrors(t *testing.T) { // Decode from wire format. var msg MsgMerkleBlock r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) @@ -346,15 +341,14 @@ func TestMerkleBlockOverflowErrors(t *testing.T) { exceedMaxFlagBytes = append(exceedMaxFlagBytes, buf.Bytes()...) tests := []struct { - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - err error // Expected error + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + err error // Expected error }{ // Block that claims to have more than max allowed hashes. - {exceedMaxHashes, pver, BaseEncoding, &MessageError{}}, + {exceedMaxHashes, pver, &MessageError{}}, // Block that claims to have more than max allowed flag bytes. - {exceedMaxFlagBytes, pver, BaseEncoding, &MessageError{}}, + {exceedMaxFlagBytes, pver, &MessageError{}}, } t.Logf("Running %d tests", len(tests)) @@ -362,7 +356,7 @@ func TestMerkleBlockOverflowErrors(t *testing.T) { // Decode from wire format. var msg MsgMerkleBlock r := bytes.NewReader(test.buf) - err := msg.BtcDecode(r, test.pver, test.enc) + err := msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, reflect.TypeOf(test.err)) diff --git a/wire/msgnotfound.go b/wire/msgnotfound.go index e86768166..0c95020d3 100644 --- a/wire/msgnotfound.go +++ b/wire/msgnotfound.go @@ -34,7 +34,7 @@ func (msg *MsgNotFound) AddInvVect(iv *InvVect) error { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgNotFound) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgNotFound) BtcDecode(r io.Reader, pver uint32) error { count, err := ReadVarInt(r, pver) if err != nil { return err @@ -64,7 +64,7 @@ func (msg *MsgNotFound) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgNotFound) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgNotFound) BtcEncode(w io.Writer, pver uint32) error { // Limit to max inventory vectors per message. count := len(msg.InvList) if count > MaxInvPerMsg { diff --git a/wire/msgnotfound_test.go b/wire/msgnotfound_test.go index e5623aed0..b840f87d0 100644 --- a/wire/msgnotfound_test.go +++ b/wire/msgnotfound_test.go @@ -104,11 +104,10 @@ func TestNotFoundWire(t *testing.T) { } tests := []struct { - in *MsgNotFound // Message to encode - out *MsgNotFound // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgNotFound // Message to encode + out *MsgNotFound // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no inv vectors. { @@ -116,7 +115,6 @@ func TestNotFoundWire(t *testing.T) { NoInv, NoInvEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple inv vectors. @@ -125,7 +123,6 @@ func TestNotFoundWire(t *testing.T) { MultiInv, MultiInvEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version no inv vectors. @@ -134,7 +131,6 @@ func TestNotFoundWire(t *testing.T) { NoInv, NoInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple inv vectors. @@ -143,7 +139,6 @@ func TestNotFoundWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version no inv vectors. @@ -152,7 +147,6 @@ func TestNotFoundWire(t *testing.T) { NoInv, NoInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Version with multiple inv vectors. @@ -161,7 +155,6 @@ func TestNotFoundWire(t *testing.T) { MultiInv, MultiInvEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion no inv vectors. @@ -170,7 +163,6 @@ func TestNotFoundWire(t *testing.T) { NoInv, NoInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with multiple inv vectors. @@ -179,7 +171,6 @@ func TestNotFoundWire(t *testing.T) { MultiInv, MultiInvEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion no inv vectors. @@ -188,7 +179,6 @@ func TestNotFoundWire(t *testing.T) { NoInv, NoInvEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with multiple inv vectors. @@ -197,7 +187,6 @@ func TestNotFoundWire(t *testing.T) { MultiInv, MultiInvEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -205,7 +194,7 @@ func TestNotFoundWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -219,7 +208,7 @@ func TestNotFoundWire(t *testing.T) { // Decode the message from wire format. var msg MsgNotFound rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -271,27 +260,26 @@ func TestNotFoundWireErrors(t *testing.T) { } tests := []struct { - in *MsgNotFound // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgNotFound // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in inventory vector count - {baseNotFound, baseNotFoundEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseNotFound, baseNotFoundEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in inventory list. - {baseNotFound, baseNotFoundEncoded, pver, BaseEncoding, 1, io.ErrShortWrite, io.EOF}, + {baseNotFound, baseNotFoundEncoded, pver, 1, io.ErrShortWrite, io.EOF}, // Force error with greater than max inventory vectors. - {maxNotFound, maxNotFoundEncoded, pver, BaseEncoding, 3, wireErr, wireErr}, + {maxNotFound, maxNotFoundEncoded, pver, 3, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -311,7 +299,7 @@ func TestNotFoundWireErrors(t *testing.T) { // Decode from wire format. var msg MsgNotFound r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgping.go b/wire/msgping.go index b2f346e0e..c9e3f646b 100644 --- a/wire/msgping.go +++ b/wire/msgping.go @@ -27,7 +27,7 @@ type MsgPing struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgPing) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgPing) BtcDecode(r io.Reader, pver uint32) error { // There was no nonce for BIP0031Version and earlier. // NOTE: > is not a mistake here. The BIP0031 was defined as AFTER // the version unlike most others. @@ -43,7 +43,7 @@ func (msg *MsgPing) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) err // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgPing) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgPing) BtcEncode(w io.Writer, pver uint32) error { // There was no nonce for BIP0031Version and earlier. // NOTE: > is not a mistake here. The BIP0031 was defined as AFTER // the version unlike most others. diff --git a/wire/msgping_test.go b/wire/msgping_test.go index 511325cb5..7a00dafc7 100644 --- a/wire/msgping_test.go +++ b/wire/msgping_test.go @@ -50,7 +50,6 @@ func TestPing(t *testing.T) { func TestPingBIP0031(t *testing.T) { // Use the protocol version just prior to BIP0031Version changes. pver := BIP0031Version - enc := BaseEncoding nonce, err := RandomUint64() if err != nil { @@ -73,14 +72,14 @@ func TestPingBIP0031(t *testing.T) { // Test encode with old protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgPing failed %v err <%v>", msg, err) } // Test decode with old protocol version. readmsg := NewMsgPing(0) - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgPing failed [%v] err <%v>", buf, err) } @@ -107,14 +106,14 @@ func TestPingCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err = msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgPing failed %v err <%v>", msg, err) } // Decode with old protocol version. readmsg := NewMsgPing(0) - err = readmsg.BtcDecode(&buf, BIP0031Version, BaseEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err != nil { t.Errorf("decode of MsgPing failed [%v] err <%v>", buf, err) } @@ -130,11 +129,10 @@ func TestPingCrossProtocol(t *testing.T) { // versions. func TestPingWire(t *testing.T) { tests := []struct { - in MsgPing // Message to encode - out MsgPing // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in MsgPing // Message to encode + out MsgPing // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -142,7 +140,6 @@ func TestPingWire(t *testing.T) { MsgPing{Nonce: 123123}, // 0x1e0f3 []byte{0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0031Version+1 @@ -151,7 +148,6 @@ func TestPingWire(t *testing.T) { MsgPing{Nonce: 456456}, // 0x6f708 []byte{0x08, 0xf7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00}, BIP0031Version + 1, - BaseEncoding, }, // Protocol version BIP0031Version @@ -160,7 +156,6 @@ func TestPingWire(t *testing.T) { MsgPing{Nonce: 0}, // No nonce for pver []byte{}, // No nonce for pver BIP0031Version, - BaseEncoding, }, } @@ -168,7 +163,7 @@ func TestPingWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -182,7 +177,7 @@ func TestPingWire(t *testing.T) { // Decode the message from wire format. var msg MsgPing rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -201,20 +196,18 @@ func TestPingWireErrors(t *testing.T) { pver := ProtocolVersion tests := []struct { - in *MsgPing // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgPing // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. { &MsgPing{Nonce: 123123}, // 0x1e0f3 []byte{0xf3, 0xe0, 0x01, 0x00}, pver, - BaseEncoding, 2, io.ErrShortWrite, io.ErrUnexpectedEOF, @@ -225,7 +218,7 @@ func TestPingWireErrors(t *testing.T) { for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if err != test.writeErr { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -235,7 +228,7 @@ func TestPingWireErrors(t *testing.T) { // Decode from wire format. var msg MsgPing r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if err != test.readErr { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgpong.go b/wire/msgpong.go index eec80d8d5..9fd02721f 100644 --- a/wire/msgpong.go +++ b/wire/msgpong.go @@ -22,7 +22,7 @@ type MsgPong struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgPong) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgPong) BtcDecode(r io.Reader, pver uint32) error { // NOTE: <= is not a mistake here. The BIP0031 was defined as AFTER // the version unlike most others. if pver <= BIP0031Version { @@ -36,7 +36,7 @@ func (msg *MsgPong) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) err // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgPong) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgPong) BtcEncode(w io.Writer, pver uint32) error { // NOTE: <= is not a mistake here. The BIP0031 was defined as AFTER // the version unlike most others. if pver <= BIP0031Version { diff --git a/wire/msgpong_test.go b/wire/msgpong_test.go index 148a46a02..a6684c08d 100644 --- a/wire/msgpong_test.go +++ b/wire/msgpong_test.go @@ -15,7 +15,6 @@ import ( // TestPongLatest tests the MsgPong API against the latest protocol version. func TestPongLatest(t *testing.T) { - enc := BaseEncoding pver := ProtocolVersion nonce, err := RandomUint64() @@ -46,14 +45,14 @@ func TestPongLatest(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgPong failed %v err <%v>", msg, err) } // Test decode with latest protocol version. readmsg := NewMsgPong(0) - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgPong failed [%v] err <%v>", buf, err) } @@ -69,7 +68,6 @@ func TestPongLatest(t *testing.T) { func TestPongBIP0031(t *testing.T) { // Use the protocol version just prior to BIP0031Version changes. pver := BIP0031Version - enc := BaseEncoding nonce, err := RandomUint64() if err != nil { @@ -89,7 +87,7 @@ func TestPongBIP0031(t *testing.T) { // Test encode with old protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, pver, enc) + err = msg.BtcEncode(&buf, pver) if err == nil { t.Errorf("encode of MsgPong succeeded when it shouldn't have %v", msg) @@ -97,7 +95,7 @@ func TestPongBIP0031(t *testing.T) { // Test decode with old protocol version. readmsg := NewMsgPong(0) - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err == nil { t.Errorf("decode of MsgPong succeeded when it shouldn't have %v", spew.Sdump(buf)) @@ -124,14 +122,14 @@ func TestPongCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err = msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err = msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgPong failed %v err <%v>", msg, err) } // Decode with old protocol version. readmsg := NewMsgPong(0) - err = readmsg.BtcDecode(&buf, BIP0031Version, BaseEncoding) + err = readmsg.BtcDecode(&buf, BIP0031Version) if err == nil { t.Errorf("encode of MsgPong succeeded when it shouldn't have %v", msg) @@ -148,11 +146,10 @@ func TestPongCrossProtocol(t *testing.T) { // versions. func TestPongWire(t *testing.T) { tests := []struct { - in MsgPong // Message to encode - out MsgPong // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in MsgPong // Message to encode + out MsgPong // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -160,7 +157,6 @@ func TestPongWire(t *testing.T) { MsgPong{Nonce: 123123}, // 0x1e0f3 []byte{0xf3, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0031Version+1 @@ -169,7 +165,6 @@ func TestPongWire(t *testing.T) { MsgPong{Nonce: 456456}, // 0x6f708 []byte{0x08, 0xf7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00}, BIP0031Version + 1, - BaseEncoding, }, } @@ -177,7 +172,7 @@ func TestPongWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -191,7 +186,7 @@ func TestPongWire(t *testing.T) { // Decode the message from wire format. var msg MsgPong rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -217,26 +212,25 @@ func TestPongWireErrors(t *testing.T) { } tests := []struct { - in *MsgPong // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgPong // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in nonce. - {basePong, basePongEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {basePong, basePongEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error due to unsupported protocol version. - {basePong, basePongEncoded, pverNoPong, BaseEncoding, 4, wireErr, wireErr}, + {basePong, basePongEncoded, pverNoPong, 4, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -256,7 +250,7 @@ func TestPongWireErrors(t *testing.T) { // Decode from wire format. var msg MsgPong r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgreject.go b/wire/msgreject.go index 1534f5dd9..5077970c3 100644 --- a/wire/msgreject.go +++ b/wire/msgreject.go @@ -73,7 +73,7 @@ type MsgReject struct { // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgReject) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgReject) BtcDecode(r io.Reader, pver uint32) error { if pver < RejectVersion { str := fmt.Sprintf("reject message invalid for protocol "+ "version %d", pver) @@ -115,7 +115,7 @@ func (msg *MsgReject) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) e // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgReject) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgReject) BtcEncode(w io.Writer, pver uint32) error { if pver < RejectVersion { str := fmt.Sprintf("reject message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgreject_test.go b/wire/msgreject_test.go index 0285c5010..610801a88 100644 --- a/wire/msgreject_test.go +++ b/wire/msgreject_test.go @@ -45,7 +45,6 @@ func TestRejectCodeStringer(t *testing.T) { // TestRejectLatest tests the MsgPong API against the latest protocol version. func TestRejectLatest(t *testing.T) { pver := ProtocolVersion - enc := BaseEncoding // Create reject message data. rejCommand := (&MsgBlock{}).Command() @@ -87,14 +86,14 @@ func TestRejectLatest(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgReject failed %v err <%v>", msg, err) } // Test decode with latest protocol version. readMsg := MsgReject{} - err = readMsg.BtcDecode(&buf, pver, enc) + err = readMsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgReject failed %v err <%v>", buf.Bytes(), err) @@ -124,7 +123,6 @@ func TestRejectLatest(t *testing.T) { func TestRejectBeforeAdded(t *testing.T) { // Use the protocol version just prior to RejectVersion. pver := RejectVersion - 1 - enc := BaseEncoding // Create reject message data. rejCommand := (&MsgBlock{}).Command() @@ -144,7 +142,7 @@ func TestRejectBeforeAdded(t *testing.T) { // Test encode with old protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err == nil { t.Errorf("encode of MsgReject succeeded when it shouldn't "+ "have %v", msg) @@ -152,7 +150,7 @@ func TestRejectBeforeAdded(t *testing.T) { // // Test decode with old protocol version. readMsg := MsgReject{} - err = readMsg.BtcDecode(&buf, pver, enc) + err = readMsg.BtcDecode(&buf, pver) if err == nil { t.Errorf("decode of MsgReject succeeded when it shouldn't "+ "have %v", spew.Sdump(buf.Bytes())) @@ -193,14 +191,14 @@ func TestRejectCrossProtocol(t *testing.T) { // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, BaseEncoding) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgReject failed %v err <%v>", msg, err) } // Decode with old protocol version. readMsg := MsgReject{} - err = readMsg.BtcDecode(&buf, RejectVersion-1, BaseEncoding) + err = readMsg.BtcDecode(&buf, RejectVersion-1) if err == nil { t.Errorf("encode of MsgReject succeeded when it shouldn't "+ "have %v", msg) @@ -227,10 +225,9 @@ func TestRejectCrossProtocol(t *testing.T) { // protocol versions. func TestRejectWire(t *testing.T) { tests := []struct { - msg MsgReject // Message to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + msg MsgReject // Message to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version rejected command version (no hash). { @@ -247,7 +244,6 @@ func TestRejectWire(t *testing.T) { 0x6f, 0x6e, // "duplicate version" }, ProtocolVersion, - BaseEncoding, }, // Latest protocol version rejected command block (has hash). { @@ -268,7 +264,6 @@ func TestRejectWire(t *testing.T) { 0x68, 0xd6, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, // mainNetGenesisHash }, ProtocolVersion, - BaseEncoding, }, } @@ -276,7 +271,7 @@ func TestRejectWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.msg.BtcEncode(&buf, test.pver, test.enc) + err := test.msg.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -290,7 +285,7 @@ func TestRejectWire(t *testing.T) { // Decode the message from wire format. var msg MsgReject rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -324,32 +319,31 @@ func TestRejectWireErrors(t *testing.T) { } tests := []struct { - in *MsgReject // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgReject // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Latest protocol version with intentional read/write errors. // Force error in reject command. - {baseReject, baseRejectEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseReject, baseRejectEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in reject code. - {baseReject, baseRejectEncoded, pver, BaseEncoding, 6, io.ErrShortWrite, io.EOF}, + {baseReject, baseRejectEncoded, pver, 6, io.ErrShortWrite, io.EOF}, // Force error in reject reason. - {baseReject, baseRejectEncoded, pver, BaseEncoding, 7, io.ErrShortWrite, io.EOF}, + {baseReject, baseRejectEncoded, pver, 7, io.ErrShortWrite, io.EOF}, // Force error in reject hash. - {baseReject, baseRejectEncoded, pver, BaseEncoding, 23, io.ErrShortWrite, io.EOF}, + {baseReject, baseRejectEncoded, pver, 23, io.ErrShortWrite, io.EOF}, // Force error due to unsupported protocol version. - {baseReject, baseRejectEncoded, pverNoReject, BaseEncoding, 6, wireErr, wireErr}, + {baseReject, baseRejectEncoded, pverNoReject, 6, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -369,7 +363,7 @@ func TestRejectWireErrors(t *testing.T) { // Decode from wire format. var msg MsgReject r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) diff --git a/wire/msgsendheaders.go b/wire/msgsendheaders.go index 19505351e..532e4aa1d 100644 --- a/wire/msgsendheaders.go +++ b/wire/msgsendheaders.go @@ -19,7 +19,7 @@ type MsgSendHeaders struct{} // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgSendHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgSendHeaders) BtcDecode(r io.Reader, pver uint32) error { if pver < SendHeadersVersion { str := fmt.Sprintf("sendheaders message invalid for protocol "+ "version %d", pver) @@ -31,7 +31,7 @@ func (msg *MsgSendHeaders) BtcDecode(r io.Reader, pver uint32, enc MessageEncodi // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgSendHeaders) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgSendHeaders) BtcEncode(w io.Writer, pver uint32) error { if pver < SendHeadersVersion { str := fmt.Sprintf("sendheaders message invalid for protocol "+ "version %d", pver) diff --git a/wire/msgsendheaders_test.go b/wire/msgsendheaders_test.go index bd510fbaf..ed6505098 100644 --- a/wire/msgsendheaders_test.go +++ b/wire/msgsendheaders_test.go @@ -16,7 +16,6 @@ import ( // version. func TestSendHeaders(t *testing.T) { pver := ProtocolVersion - enc := BaseEncoding // Ensure the command is expected value. wantCmd := "sendheaders" @@ -37,7 +36,7 @@ func TestSendHeaders(t *testing.T) { // Test encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err != nil { t.Errorf("encode of MsgSendHeaders failed %v err <%v>", msg, err) @@ -46,7 +45,7 @@ func TestSendHeaders(t *testing.T) { // Older protocol versions should fail encode since message didn't // exist yet. oldPver := SendHeadersVersion - 1 - err = msg.BtcEncode(&buf, oldPver, enc) + err = msg.BtcEncode(&buf, oldPver) if err == nil { s := "encode of MsgSendHeaders passed for old protocol " + "version %v err <%v>" @@ -55,7 +54,7 @@ func TestSendHeaders(t *testing.T) { // Test decode with latest protocol version. readmsg := NewMsgSendHeaders() - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err != nil { t.Errorf("decode of MsgSendHeaders failed [%v] err <%v>", buf, err) @@ -63,7 +62,7 @@ func TestSendHeaders(t *testing.T) { // Older protocol versions should fail decode since message didn't // exist yet. - err = readmsg.BtcDecode(&buf, oldPver, enc) + err = readmsg.BtcDecode(&buf, oldPver) if err == nil { s := "decode of MsgSendHeaders passed for old protocol " + "version %v err <%v>" @@ -76,13 +75,12 @@ func TestSendHeaders(t *testing.T) { func TestSendHeadersBIP0130(t *testing.T) { // Use the protocol version just prior to SendHeadersVersion changes. pver := SendHeadersVersion - 1 - enc := BaseEncoding msg := NewMsgSendHeaders() // Test encode with old protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, pver, enc) + err := msg.BtcEncode(&buf, pver) if err == nil { t.Errorf("encode of MsgSendHeaders succeeded when it should " + "have failed") @@ -90,7 +88,7 @@ func TestSendHeadersBIP0130(t *testing.T) { // Test decode with old protocol version. readmsg := NewMsgSendHeaders() - err = readmsg.BtcDecode(&buf, pver, enc) + err = readmsg.BtcDecode(&buf, pver) if err == nil { t.Errorf("decode of MsgSendHeaders succeeded when it should " + "have failed") @@ -100,12 +98,11 @@ func TestSendHeadersBIP0130(t *testing.T) { // TestSendHeadersCrossProtocol tests the MsgSendHeaders API when encoding with // the latest protocol version and decoding with SendHeadersVersion. func TestSendHeadersCrossProtocol(t *testing.T) { - enc := BaseEncoding msg := NewMsgSendHeaders() // Encode with latest protocol version. var buf bytes.Buffer - err := msg.BtcEncode(&buf, ProtocolVersion, enc) + err := msg.BtcEncode(&buf, ProtocolVersion) if err != nil { t.Errorf("encode of MsgSendHeaders failed %v err <%v>", msg, err) @@ -113,7 +110,7 @@ func TestSendHeadersCrossProtocol(t *testing.T) { // Decode with old protocol version. readmsg := NewMsgSendHeaders() - err = readmsg.BtcDecode(&buf, SendHeadersVersion, enc) + err = readmsg.BtcDecode(&buf, SendHeadersVersion) if err != nil { t.Errorf("decode of MsgSendHeaders failed [%v] err <%v>", buf, err) @@ -131,7 +128,6 @@ func TestSendHeadersWire(t *testing.T) { out *MsgSendHeaders // Expected decoded message buf []byte // Wire encoding pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format }{ // Latest protocol version. { @@ -139,7 +135,6 @@ func TestSendHeadersWire(t *testing.T) { msgSendHeaders, msgSendHeadersEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version SendHeadersVersion+1 @@ -148,7 +143,6 @@ func TestSendHeadersWire(t *testing.T) { msgSendHeaders, msgSendHeadersEncoded, SendHeadersVersion + 1, - BaseEncoding, }, // Protocol version SendHeadersVersion @@ -157,7 +151,6 @@ func TestSendHeadersWire(t *testing.T) { msgSendHeaders, msgSendHeadersEncoded, SendHeadersVersion, - BaseEncoding, }, } @@ -165,7 +158,7 @@ func TestSendHeadersWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -179,7 +172,7 @@ func TestSendHeadersWire(t *testing.T) { // Decode the message from wire format. var msg MsgSendHeaders rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue diff --git a/wire/msgtx.go b/wire/msgtx.go index e6ceec809..06891a76c 100644 --- a/wire/msgtx.go +++ b/wire/msgtx.go @@ -93,31 +93,8 @@ const ( // peers. Thus, the peak usage of the free list is 12,500 * 512 = // 6,400,000 bytes. freeListMaxItems = 12500 - - // maxWitnessItemsPerInput is the maximum number of witness items to - // be read for the witness data for a single TxIn. This number is - // derived using a possble lower bound for the encoding of a witness - // item: 1 byte for length + 1 byte for the witness item itself, or two - // bytes. This value is then divided by the currently allowed maximum - // "cost" for a transaction. - maxWitnessItemsPerInput = 500000 - - // maxWitnessItemSize is the maximum allowed size for an item within - // an input's witness data. This number is derived from the fact that - // for script validation, each pushed item onto the stack must be less - // than 10k bytes. - maxWitnessItemSize = 11000 ) -// witnessMarkerBytes are a pair of bytes specific to the witness encoding. If -// this sequence is encoutered, then it indicates a transaction has iwtness -// data. The first byte is an always 0x00 marker byte, which allows decoders to -// distinguish a serialized transaction with witnesses from a regular (legacy) -// one. The second byte is the Flag field, which at the moment is always 0x01, -// but may be extended in the future to accommodate auxiliary non-committed -// fields. -var witessMarkerBytes = []byte{0x00, 0x01} - // scriptFreeList defines a free list of byte slices (up to the maximum number // defined by the freeListMaxItems constant) that have a cap according to the // freeListMaxScriptSize constant. It is used to provide temporary buffers for @@ -210,7 +187,6 @@ func (o OutPoint) String() string { type TxIn struct { PreviousOutPoint OutPoint SignatureScript []byte - Witness TxWitness Sequence uint32 } @@ -227,36 +203,14 @@ func (t *TxIn) SerializeSize() int { // NewTxIn returns a new bitcoin transaction input with the provided // previous outpoint point and signature script with a default sequence of // MaxTxInSequenceNum. -func NewTxIn(prevOut *OutPoint, signatureScript []byte, witness [][]byte) *TxIn { +func NewTxIn(prevOut *OutPoint, signatureScript []byte) *TxIn { return &TxIn{ PreviousOutPoint: *prevOut, SignatureScript: signatureScript, - Witness: witness, Sequence: MaxTxInSequenceNum, } } -// TxWitness defines the witness for a TxIn. A witness is to be interpreted as -// a slice of byte slices, or a stack with one or many elements. -type TxWitness [][]byte - -// SerializeSize returns the number of bytes it would take to serialize the the -// transaction input's witness. -func (t TxWitness) SerializeSize() int { - // A varint to signal the number of elements the witness has. - n := VarIntSerializeSize(uint64(len(t))) - - // For each element in the witness, we'll need a varint to signal the - // size of the element, then finally the number of bytes the element - // itself comprises. - for _, witItem := range t { - n += VarIntSerializeSize(uint64(len(witItem))) - n += len(witItem) - } - - return n -} - // TxOut defines a bitcoin transaction output. type TxOut struct { Value int64 @@ -309,26 +263,11 @@ func (msg *MsgTx) TxHash() chainhash.Hash { // Ignore the error returns since the only way the encode could fail // is being out of memory or due to nil pointers, both of which would // cause a run-time panic. - buf := bytes.NewBuffer(make([]byte, 0, msg.SerializeSizeStripped())) - _ = msg.SerializeNoWitness(buf) + buf := bytes.NewBuffer(make([]byte, 0, msg.SerializeSize())) + _ = msg.Serialize(buf) return chainhash.DoubleHashH(buf.Bytes()) } -// WitnessHash generates the hash of the transaction serialized according to -// the new witness serialization defined in BIP0141 and BIP0144. The final -// output is used within the Segregated Witness commitment of all the witnesses -// within a block. If a transaction has no witness data, then the witness hash, -// is the same as its txid. -func (msg *MsgTx) WitnessHash() chainhash.Hash { - if msg.HasWitness() { - buf := bytes.NewBuffer(make([]byte, 0, msg.SerializeSize())) - _ = msg.Serialize(buf) - return chainhash.DoubleHashH(buf.Bytes()) - } - - return msg.TxHash() -} - // Copy creates a deep copy of a transaction so that the original does not get // modified when the copy is manipulated. func (msg *MsgTx) Copy() *MsgTx { @@ -365,18 +304,6 @@ func (msg *MsgTx) Copy() *MsgTx { Sequence: oldTxIn.Sequence, } - // If the transaction is witnessy, then also copy the - // witnesses. - if len(oldTxIn.Witness) != 0 { - // Deep copy the old witness data. - newTxIn.Witness = make([][]byte, len(oldTxIn.Witness)) - for i, oldItem := range oldTxIn.Witness { - newItem := make([]byte, len(oldItem)) - copy(newItem, oldItem) - newTxIn.Witness[i] = newItem - } - } - // Finally, append this fully copied txin. newTx.TxIn = append(newTx.TxIn, &newTxIn) } @@ -408,7 +335,7 @@ func (msg *MsgTx) Copy() *MsgTx { // This is part of the Message interface implementation. // See Deserialize for decoding transactions stored to disk, such as in a // database, as opposed to decoding transactions from the wire. -func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32) error { version, err := binarySerializer.Uint32(r, littleEndian) if err != nil { return err @@ -420,30 +347,6 @@ func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error return err } - // A count of zero (meaning no TxIn's to the uninitiated) indicates - // this is a transaction with witness data. - var flag [1]byte - if count == 0 && enc == WitnessEncoding { - // Next, we need to read the flag, which is a single byte. - if _, err = io.ReadFull(r, flag[:]); err != nil { - return err - } - - // At the moment, the flag MUST be 0x01. In the future other - // flag types may be supported. - if flag[0] != 0x01 { - str := fmt.Sprintf("witness tx but flag byte is %x", flag) - return messageError("MsgTx.BtcDecode", str) - } - - // With the Segregated Witness specific fields decoded, we can - // now read in the actual txin count. - count, err = ReadVarInt(r, pver) - if err != nil { - return err - } - } - // Prevent more input transactions than could possibly fit into a // message. It would be possible to cause memory exhaustion and panics // without a sane upper bound on this count. @@ -468,12 +371,6 @@ func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error if txIn.SignatureScript != nil { scriptPool.Return(txIn.SignatureScript) } - - for _, witnessElem := range txIn.Witness { - if witnessElem != nil { - scriptPool.Return(witnessElem) - } - } } for _, txOut := range msg.TxOut { if txOut == nil || txOut.PkScript == nil { @@ -533,45 +430,6 @@ func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error totalScriptSize += uint64(len(to.PkScript)) } - // If the transaction's flag byte isn't 0x00 at this point, then one or - // more of its inputs has accompanying witness data. - if flag[0] != 0 && enc == WitnessEncoding { - for _, txin := range msg.TxIn { - // For each input, the witness is encoded as a stack - // with one or more items. Therefore, we first read a - // varint which encodes the number of stack items. - witCount, err := ReadVarInt(r, pver) - if err != nil { - returnScriptBuffers() - return err - } - - // Prevent a possible memory exhaustion attack by - // limiting the witCount value to a sane upper bound. - if witCount > maxWitnessItemsPerInput { - returnScriptBuffers() - str := fmt.Sprintf("too many witness items to fit "+ - "into max message size [count %d, max %d]", - witCount, maxWitnessItemsPerInput) - return messageError("MsgTx.BtcDecode", str) - } - - // Then for witCount number of stack items, each item - // has a varint length prefix, followed by the witness - // item itself. - txin.Witness = make([][]byte, witCount) - for j := uint64(0); j < witCount; j++ { - txin.Witness[j], err = readScript(r, pver, - maxWitnessItemSize, "script witness item") - if err != nil { - returnScriptBuffers() - return err - } - totalScriptSize += uint64(len(txin.Witness[j])) - } - } - } - msg.LockTime, err = binarySerializer.Uint32(r, littleEndian) if err != nil { returnScriptBuffers() @@ -609,25 +467,6 @@ func (msg *MsgTx) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error // Return the temporary script buffer to the pool. scriptPool.Return(signatureScript) - - for j := 0; j < len(msg.TxIn[i].Witness); j++ { - // Copy each item within the witness stack for this - // input into the contiguous buffer at the appropriate - // offset. - witnessElem := msg.TxIn[i].Witness[j] - copy(scripts[offset:], witnessElem) - - // Reset the witness item within the stack to the slice - // of the contiguous buffer where the witness lives. - witnessElemSize := uint64(len(witnessElem)) - end := offset + witnessElemSize - msg.TxIn[i].Witness[j] = scripts[offset:end:end] - offset += witnessElemSize - - // Return the temporary buffer used for the witness stack - // item to the pool. - scriptPool.Return(witnessElem) - } } for i := 0; i < len(msg.TxOut); i++ { // Copy the public key script into the contiguous buffer at the @@ -663,45 +502,19 @@ func (msg *MsgTx) Deserialize(r io.Reader) error { // At the current time, there is no difference between the wire encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of BtcDecode. - return msg.BtcDecode(r, 0, WitnessEncoding) -} - -// DeserializeNoWitness decodes a transaction from r into the receiver, where -// the transaction encoding format within r MUST NOT utilize the new -// serialization format created to encode transaction bearing witness data -// within inputs. -func (msg *MsgTx) DeserializeNoWitness(r io.Reader) error { - return msg.BtcDecode(r, 0, BaseEncoding) + return msg.BtcDecode(r, 0) } // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. // See Serialize for encoding transactions to be stored to disk, such as in a // database, as opposed to encoding transactions for the wire. -func (msg *MsgTx) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgTx) BtcEncode(w io.Writer, pver uint32) error { err := binarySerializer.PutUint32(w, littleEndian, uint32(msg.Version)) if err != nil { return err } - // If the encoding version is set to WitnessEncoding, and the Flags - // field for the MsgTx aren't 0x00, then this indicates the transaction - // is to be encoded using the new witness inclusionary structure - // defined in BIP0144. - doWitness := enc == WitnessEncoding && msg.HasWitness() - if doWitness { - // After the txn's Version field, we include two additional - // bytes specific to the witness encoding. The first byte is an - // always 0x00 marker byte, which allows decoders to - // distinguish a serialized transaction with witnesses from a - // regular (legacy) one. The second byte is the Flag field, - // which at the moment is always 0x01, but may be extended in - // the future to accommodate auxiliary non-committed fields. - if _, err := w.Write(witessMarkerBytes); err != nil { - return err - } - } - count := uint64(len(msg.TxIn)) err = WriteVarInt(w, pver, count) if err != nil { @@ -728,33 +541,9 @@ func (msg *MsgTx) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error } } - // If this transaction is a witness transaction, and the witness - // encoded is desired, then encode the witness for each of the inputs - // within the transaction. - if doWitness { - for _, ti := range msg.TxIn { - err = writeTxWitness(w, pver, msg.Version, ti.Witness) - if err != nil { - return err - } - } - } - return binarySerializer.PutUint32(w, littleEndian, msg.LockTime) } -// HasWitness returns false if none of the inputs within the transaction -// contain witness data, true false otherwise. -func (msg *MsgTx) HasWitness() bool { - for _, txIn := range msg.TxIn { - if len(txIn.Witness) != 0 { - return true - } - } - - return false -} - // Serialize encodes the transaction to w using a format that suitable for // long-term storage such as a database while respecting the Version field in // the transaction. This function differs from BtcEncode in that BtcEncode @@ -769,24 +558,12 @@ func (msg *MsgTx) Serialize(w io.Writer) error { // At the current time, there is no difference between the wire encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of BtcEncode. - // - // Passing a encoding type of WitnessEncoding to BtcEncode for MsgTx - // indicates that the transaction's witnesses (if any) should be - // serialized according to the new serialization structure defined in - // BIP0144. - return msg.BtcEncode(w, 0, WitnessEncoding) + return msg.BtcEncode(w, 0) } -// SerializeNoWitness encodes the transaction to w in an identical manner to -// Serialize, however even if the source transaction has inputs with witness -// data, the old serialization format will still be used. -func (msg *MsgTx) SerializeNoWitness(w io.Writer) error { - return msg.BtcEncode(w, 0, BaseEncoding) -} - -// baseSize returns the serialized size of the transaction without accounting -// for any witness data. -func (msg *MsgTx) baseSize() int { +// SerializeSize returns the number of bytes it would take to serialize the +// the transaction. +func (msg *MsgTx) SerializeSize() int { // Version 4 bytes + LockTime 4 bytes + Serialized varint size for the // number of transaction inputs and outputs. n := 8 + VarIntSerializeSize(uint64(len(msg.TxIn))) + @@ -803,31 +580,6 @@ func (msg *MsgTx) baseSize() int { return n } -// SerializeSize returns the number of bytes it would take to serialize the -// the transaction. -func (msg *MsgTx) SerializeSize() int { - n := msg.baseSize() - - if msg.HasWitness() { - // The marker, and flag fields take up two additional bytes. - n += 2 - - // Additionally, factor in the serialized size of each of the - // witnesses for each txin. - for _, txin := range msg.TxIn { - n += txin.Witness.SerializeSize() - } - } - - return n -} - -// SerializeSizeStripped returns the number of bytes it would take to serialize -// the transaction, excluding any included witness data. -func (msg *MsgTx) SerializeSizeStripped() int { - return msg.baseSize() -} - // Command returns the protocol command string for the message. This is part // of the Message interface implementation. func (msg *MsgTx) Command() string { @@ -859,12 +611,6 @@ func (msg *MsgTx) PkScriptLocs() []int { n := 4 + VarIntSerializeSize(uint64(len(msg.TxIn))) + VarIntSerializeSize(uint64(numTxOut)) - // If this transaction has a witness input, the an additional two bytes - // for the marker, and flag byte need to be taken into account. - if len(msg.TxIn) > 0 && msg.TxIn[0].Witness != nil { - n += 2 - } - for _, txIn := range msg.TxIn { n += txIn.SerializeSize() } @@ -998,9 +744,6 @@ func readTxOut(r io.Reader, pver uint32, version int32, to *TxOut) error { // WriteTxOut encodes to into the bitcoin protocol encoding for a transaction // output (TxOut) to w. -// -// NOTE: This function is exported in order to allow txscript to compute the -// new sighashes for witness transactions (BIP0143). func WriteTxOut(w io.Writer, pver uint32, version int32, to *TxOut) error { err := binarySerializer.PutUint64(w, littleEndian, uint64(to.Value)) if err != nil { @@ -1009,19 +752,3 @@ func WriteTxOut(w io.Writer, pver uint32, version int32, to *TxOut) error { return WriteVarBytes(w, pver, to.PkScript) } - -// writeTxWitness encodes the bitcoin protocol encoding for a transaction -// input's witness into to w. -func writeTxWitness(w io.Writer, pver uint32, version int32, wit [][]byte) error { - err := WriteVarInt(w, pver, uint64(len(wit))) - if err != nil { - return err - } - for _, item := range wit { - err = WriteVarBytes(w, pver, item) - if err != nil { - return err - } - } - return nil -} diff --git a/wire/msgtx_test.go b/wire/msgtx_test.go index 55ae0030c..06d83bc66 100644 --- a/wire/msgtx_test.go +++ b/wire/msgtx_test.go @@ -64,11 +64,7 @@ func TestTx(t *testing.T) { // Ensure we get the same transaction input back out. sigScript := []byte{0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62} - witnessData := [][]byte{ - {0x04, 0x31}, - {0x01, 0x43}, - } - txIn := NewTxIn(prevOut, sigScript, witnessData) + txIn := NewTxIn(prevOut, sigScript) if !reflect.DeepEqual(&txIn.PreviousOutPoint, prevOut) { t.Errorf("NewTxIn: wrong prev outpoint - got %v, want %v", spew.Sprint(&txIn.PreviousOutPoint), @@ -79,11 +75,6 @@ func TestTx(t *testing.T) { spew.Sdump(txIn.SignatureScript), spew.Sdump(sigScript)) } - if !reflect.DeepEqual(txIn.Witness, TxWitness(witnessData)) { - t.Errorf("NewTxIn: wrong witness data - got %v, want %v", - spew.Sdump(txIn.Witness), - spew.Sdump(witnessData)) - } // Ensure we get the same transaction output back out. txValue := int64(5000000000) @@ -182,83 +173,6 @@ func TestTxHash(t *testing.T) { } } -// TestTxSha tests the ability to generate the wtxid, and txid of a transaction -// with witness inputs accurately. -func TestWTxSha(t *testing.T) { - hashStrTxid := "0f167d1385a84d1518cfee208b653fc9163b605ccf1b75347e2850b3e2eb19f3" - wantHashTxid, err := chainhash.NewHashFromStr(hashStrTxid) - if err != nil { - t.Errorf("NewShaHashFromStr: %v", err) - return - } - hashStrWTxid := "0858eab78e77b6b033da30f46699996396cf48fcf625a783c85a51403e175e74" - wantHashWTxid, err := chainhash.NewHashFromStr(hashStrWTxid) - if err != nil { - t.Errorf("NewShaHashFromStr: %v", err) - return - } - - // From block 23157 in a past version of segnet. - msgTx := NewMsgTx(1) - txIn := TxIn{ - PreviousOutPoint: OutPoint{ - Hash: chainhash.Hash{ - 0xa5, 0x33, 0x52, 0xd5, 0x13, 0x57, 0x66, 0xf0, - 0x30, 0x76, 0x59, 0x74, 0x18, 0x26, 0x3d, 0xa2, - 0xd9, 0xc9, 0x58, 0x31, 0x59, 0x68, 0xfe, 0xa8, - 0x23, 0x52, 0x94, 0x67, 0x48, 0x1f, 0xf9, 0xcd, - }, - Index: 19, - }, - Witness: [][]byte{ - { // 70-byte signature - 0x30, 0x43, 0x02, 0x1f, 0x4d, 0x23, 0x81, 0xdc, - 0x97, 0xf1, 0x82, 0xab, 0xd8, 0x18, 0x5f, 0x51, - 0x75, 0x30, 0x18, 0x52, 0x32, 0x12, 0xf5, 0xdd, - 0xc0, 0x7c, 0xc4, 0xe6, 0x3a, 0x8d, 0xc0, 0x36, - 0x58, 0xda, 0x19, 0x02, 0x20, 0x60, 0x8b, 0x5c, - 0x4d, 0x92, 0xb8, 0x6b, 0x6d, 0xe7, 0xd7, 0x8e, - 0xf2, 0x3a, 0x2f, 0xa7, 0x35, 0xbc, 0xb5, 0x9b, - 0x91, 0x4a, 0x48, 0xb0, 0xe1, 0x87, 0xc5, 0xe7, - 0x56, 0x9a, 0x18, 0x19, 0x70, 0x01, - }, - { // 33-byte serialize pub key - 0x03, 0x07, 0xea, 0xd0, 0x84, 0x80, 0x7e, 0xb7, - 0x63, 0x46, 0xdf, 0x69, 0x77, 0x00, 0x0c, 0x89, - 0x39, 0x2f, 0x45, 0xc7, 0x64, 0x25, 0xb2, 0x61, - 0x81, 0xf5, 0x21, 0xd7, 0xf3, 0x70, 0x06, 0x6a, - 0x8f, - }, - }, - Sequence: 0xffffffff, - } - txOut := TxOut{ - Value: 395019, - PkScript: []byte{ - 0x00, // Version 0 witness program - 0x14, // OP_DATA_20 - 0x9d, 0xda, 0xc6, 0xf3, 0x9d, 0x51, 0xe0, 0x39, - 0x8e, 0x53, 0x2a, 0x22, 0xc4, 0x1b, 0xa1, 0x89, - 0x40, 0x6a, 0x85, 0x23, // 20-byte pub key hash - }, - } - msgTx.AddTxIn(&txIn) - msgTx.AddTxOut(&txOut) - msgTx.LockTime = 0 - - // Ensure the correct txid, and wtxid is produced as expected. - txid := msgTx.TxHash() - if !txid.IsEqual(wantHashTxid) { - t.Errorf("TxSha: wrong hash - got %v, want %v", - spew.Sprint(txid), spew.Sprint(wantHashTxid)) - } - wtxid := msgTx.WitnessHash() - if !wtxid.IsEqual(wantHashWTxid) { - t.Errorf("WTxSha: wrong hash - got %v, want %v", - spew.Sprint(wtxid), spew.Sprint(wantHashWTxid)) - } -} - // TestTxWire tests the MsgTx wire encode and decode for various numbers // of transaction inputs and outputs and protocol versions. func TestTxWire(t *testing.T) { @@ -273,18 +187,16 @@ func TestTxWire(t *testing.T) { } tests := []struct { - in *MsgTx // Message to encode - out *MsgTx // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgTx // Message to encode + out *MsgTx // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version with no transactions. { noTx, noTx, noTxEncoded, ProtocolVersion, - BaseEncoding, }, // Latest protocol version with multiple transactions. @@ -293,7 +205,6 @@ func TestTxWire(t *testing.T) { multiTx, multiTxEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version with no transactions. @@ -302,7 +213,6 @@ func TestTxWire(t *testing.T) { noTx, noTxEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0035Version with multiple transactions. @@ -311,7 +221,6 @@ func TestTxWire(t *testing.T) { multiTx, multiTxEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version with no transactions. @@ -320,7 +229,6 @@ func TestTxWire(t *testing.T) { noTx, noTxEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version BIP0031Version with multiple transactions. @@ -329,7 +237,6 @@ func TestTxWire(t *testing.T) { multiTx, multiTxEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with no transactions. @@ -338,7 +245,6 @@ func TestTxWire(t *testing.T) { noTx, noTxEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version NetAddressTimeVersion with multiple transactions. @@ -347,7 +253,6 @@ func TestTxWire(t *testing.T) { multiTx, multiTxEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with no transactions. @@ -356,7 +261,6 @@ func TestTxWire(t *testing.T) { noTx, noTxEncoded, MultipleAddressVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion with multiple transactions. @@ -365,7 +269,6 @@ func TestTxWire(t *testing.T) { multiTx, multiTxEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -373,7 +276,7 @@ func TestTxWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -387,7 +290,7 @@ func TestTxWire(t *testing.T) { // Decode the message from wire format. var msg MsgTx rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -409,45 +312,44 @@ func TestTxWireErrors(t *testing.T) { pver := uint32(60002) tests := []struct { - in *MsgTx // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgTx // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in version. - {multiTx, multiTxEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in number of transaction inputs. - {multiTx, multiTxEncoded, pver, BaseEncoding, 4, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 4, io.ErrShortWrite, io.EOF}, // Force error in transaction input previous block hash. - {multiTx, multiTxEncoded, pver, BaseEncoding, 5, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 5, io.ErrShortWrite, io.EOF}, // Force error in transaction input previous block output index. - {multiTx, multiTxEncoded, pver, BaseEncoding, 37, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 37, io.ErrShortWrite, io.EOF}, // Force error in transaction input signature script length. - {multiTx, multiTxEncoded, pver, BaseEncoding, 41, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 41, io.ErrShortWrite, io.EOF}, // Force error in transaction input signature script. - {multiTx, multiTxEncoded, pver, BaseEncoding, 42, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 42, io.ErrShortWrite, io.EOF}, // Force error in transaction input sequence. - {multiTx, multiTxEncoded, pver, BaseEncoding, 49, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 49, io.ErrShortWrite, io.EOF}, // Force error in number of transaction outputs. - {multiTx, multiTxEncoded, pver, BaseEncoding, 53, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 53, io.ErrShortWrite, io.EOF}, // Force error in transaction output value. - {multiTx, multiTxEncoded, pver, BaseEncoding, 54, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 54, io.ErrShortWrite, io.EOF}, // Force error in transaction output pk script length. - {multiTx, multiTxEncoded, pver, BaseEncoding, 62, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 62, io.ErrShortWrite, io.EOF}, // Force error in transaction output pk script. - {multiTx, multiTxEncoded, pver, BaseEncoding, 63, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 63, io.ErrShortWrite, io.EOF}, // Force error in transaction output lock time. - {multiTx, multiTxEncoded, pver, BaseEncoding, 206, io.ErrShortWrite, io.EOF}, + {multiTx, multiTxEncoded, pver, 206, io.ErrShortWrite, io.EOF}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if err != test.writeErr { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -457,7 +359,7 @@ func TestTxWireErrors(t *testing.T) { // Decode from wire format. var msg MsgTx r := newFixedReader(test.max, test.buf) - err = msg.BtcDecode(r, test.pver, test.enc) + err = msg.BtcDecode(r, test.pver) if err != test.readErr { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) @@ -482,7 +384,6 @@ func TestTxSerialize(t *testing.T) { out *MsgTx // Expected decoded message buf []byte // Serialized data pkScriptLocs []int // Expected output script locations - witness bool // Serialize using the witness encoding }{ // No transactions. { @@ -490,7 +391,6 @@ func TestTxSerialize(t *testing.T) { noTx, noTxEncoded, nil, - false, }, // Multiple transactions. @@ -499,15 +399,6 @@ func TestTxSerialize(t *testing.T) { multiTx, multiTxEncoded, multiTxPkScriptLocs, - false, - }, - // Multiple outputs witness transaction. - { - multiWitnessTx, - multiWitnessTx, - multiWitnessTxEncoded, - multiWitnessTxPkScriptLocs, - true, }, } @@ -529,11 +420,7 @@ func TestTxSerialize(t *testing.T) { // Deserialize the transaction. var tx MsgTx rbuf := bytes.NewReader(test.buf) - if test.witness { - err = tx.Deserialize(rbuf) - } else { - err = tx.DeserializeNoWitness(rbuf) - } + err = tx.Deserialize(rbuf) if err != nil { t.Errorf("Deserialize #%d error %v", i, err) continue @@ -636,11 +523,10 @@ func TestTxOverflowErrors(t *testing.T) { txVer := uint32(1) tests := []struct { - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - version uint32 // Transaction version - err error // Expected error + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + version uint32 // Transaction version + err error // Expected error }{ // Transaction that claims to have ~uint64(0) inputs. { @@ -648,7 +534,7 @@ func TestTxOverflowErrors(t *testing.T) { 0x00, 0x00, 0x00, 0x01, // Version 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Varint for number of input transactions - }, pver, BaseEncoding, txVer, &MessageError{}, + }, pver, txVer, &MessageError{}, }, // Transaction that claims to have ~uint64(0) outputs. @@ -658,7 +544,7 @@ func TestTxOverflowErrors(t *testing.T) { 0x00, // Varint for number of input transactions 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Varint for number of output transactions - }, pver, BaseEncoding, txVer, &MessageError{}, + }, pver, txVer, &MessageError{}, }, // Transaction that has an input with a signature script that @@ -674,7 +560,7 @@ func TestTxOverflowErrors(t *testing.T) { 0xff, 0xff, 0xff, 0xff, // Prevous output index 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Varint for length of signature script - }, pver, BaseEncoding, txVer, &MessageError{}, + }, pver, txVer, &MessageError{}, }, // Transaction that has an output with a public key script @@ -694,7 +580,7 @@ func TestTxOverflowErrors(t *testing.T) { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Transaction amount 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Varint for length of public key script - }, pver, BaseEncoding, txVer, &MessageError{}, + }, pver, txVer, &MessageError{}, }, } @@ -703,7 +589,7 @@ func TestTxOverflowErrors(t *testing.T) { // Decode from wire format. var msg MsgTx r := bytes.NewReader(test.buf) - err := msg.BtcDecode(r, test.pver, test.enc) + err := msg.BtcDecode(r, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, reflect.TypeOf(test.err)) @@ -721,9 +607,9 @@ func TestTxOverflowErrors(t *testing.T) { } } -// TestTxSerializeSizeStripped performs tests to ensure the serialize size for +// TestTxSerializeSize performs tests to ensure the serialize size for // various transactions is accurate. -func TestTxSerializeSizeStripped(t *testing.T) { +func TestTxSerializeSize(t *testing.T) { // Empty tx message. noTx := NewMsgTx(1) noTx.Version = 1 @@ -737,34 +623,6 @@ func TestTxSerializeSizeStripped(t *testing.T) { // Transcaction with an input and an output. {multiTx, 210}, - - // Transaction with an input which includes witness data, and - // one output. Note that this uses SerializeSizeStripped which - // excludes the additional bytes due to witness data encoding. - {multiWitnessTx, 82}, - } - - t.Logf("Running %d tests", len(tests)) - for i, test := range tests { - serializedSize := test.in.SerializeSizeStripped() - if serializedSize != test.size { - t.Errorf("MsgTx.SerializeSizeStripped: #%d got: %d, want: %d", i, - serializedSize, test.size) - continue - } - } -} - -// TestTxWitnessSize performs tests to ensure that the serialized size for -// various types of transactions that include witness data is accurate. -func TestTxWitnessSize(t *testing.T) { - tests := []struct { - in *MsgTx // Tx to encode - size int // Expected serialized size w/ witnesses - }{ - // Transaction with an input which includes witness data, and - // one output. - {multiWitnessTx, 190}, } t.Logf("Running %d tests", len(tests)) @@ -876,146 +734,3 @@ var multiTxEncoded = []byte{ // multiTxPkScriptLocs is the location information for the public key scripts // located in multiTx. var multiTxPkScriptLocs = []int{63, 139} - -// multiWitnessTx is a MsgTx with an input with witness data, and an -// output used in various tests. -var multiWitnessTx = &MsgTx{ - Version: 1, - TxIn: []*TxIn{ - { - PreviousOutPoint: OutPoint{ - Hash: chainhash.Hash{ - 0xa5, 0x33, 0x52, 0xd5, 0x13, 0x57, 0x66, 0xf0, - 0x30, 0x76, 0x59, 0x74, 0x18, 0x26, 0x3d, 0xa2, - 0xd9, 0xc9, 0x58, 0x31, 0x59, 0x68, 0xfe, 0xa8, - 0x23, 0x52, 0x94, 0x67, 0x48, 0x1f, 0xf9, 0xcd, - }, - Index: 19, - }, - SignatureScript: []byte{}, - Witness: [][]byte{ - { // 70-byte signature - 0x30, 0x43, 0x02, 0x1f, 0x4d, 0x23, 0x81, 0xdc, - 0x97, 0xf1, 0x82, 0xab, 0xd8, 0x18, 0x5f, 0x51, - 0x75, 0x30, 0x18, 0x52, 0x32, 0x12, 0xf5, 0xdd, - 0xc0, 0x7c, 0xc4, 0xe6, 0x3a, 0x8d, 0xc0, 0x36, - 0x58, 0xda, 0x19, 0x02, 0x20, 0x60, 0x8b, 0x5c, - 0x4d, 0x92, 0xb8, 0x6b, 0x6d, 0xe7, 0xd7, 0x8e, - 0xf2, 0x3a, 0x2f, 0xa7, 0x35, 0xbc, 0xb5, 0x9b, - 0x91, 0x4a, 0x48, 0xb0, 0xe1, 0x87, 0xc5, 0xe7, - 0x56, 0x9a, 0x18, 0x19, 0x70, 0x01, - }, - { // 33-byte serialize pub key - 0x03, 0x07, 0xea, 0xd0, 0x84, 0x80, 0x7e, 0xb7, - 0x63, 0x46, 0xdf, 0x69, 0x77, 0x00, 0x0c, 0x89, - 0x39, 0x2f, 0x45, 0xc7, 0x64, 0x25, 0xb2, 0x61, - 0x81, 0xf5, 0x21, 0xd7, 0xf3, 0x70, 0x06, 0x6a, - 0x8f, - }, - }, - Sequence: 0xffffffff, - }, - }, - TxOut: []*TxOut{ - { - Value: 395019, - PkScript: []byte{ // p2wkh output - 0x00, // Version 0 witness program - 0x14, // OP_DATA_20 - 0x9d, 0xda, 0xc6, 0xf3, 0x9d, 0x51, 0xe0, 0x39, - 0x8e, 0x53, 0x2a, 0x22, 0xc4, 0x1b, 0xa1, 0x89, - 0x40, 0x6a, 0x85, 0x23, // 20-byte pub key hash - }, - }, - }, -} - -// multiWitnessTxEncoded is the wire encoded bytes for multiWitnessTx including inputs -// with witness data using protocol version 70012 and is used in the various -// tests. -var multiWitnessTxEncoded = []byte{ - 0x1, 0x0, 0x0, 0x0, // Version - 0x0, // Marker byte indicating 0 inputs, or a segwit encoded tx - 0x1, // Flag byte - 0x1, // Varint for number of inputs - 0xa5, 0x33, 0x52, 0xd5, 0x13, 0x57, 0x66, 0xf0, - 0x30, 0x76, 0x59, 0x74, 0x18, 0x26, 0x3d, 0xa2, - 0xd9, 0xc9, 0x58, 0x31, 0x59, 0x68, 0xfe, 0xa8, - 0x23, 0x52, 0x94, 0x67, 0x48, 0x1f, 0xf9, 0xcd, // Previous output hash - 0x13, 0x0, 0x0, 0x0, // Little endian previous output index - 0x0, // No sig script (this is a witness input) - 0xff, 0xff, 0xff, 0xff, // Sequence - 0x1, // Varint for number of outputs - 0xb, 0x7, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, // Output amount - 0x16, // Varint for length of pk script - 0x0, // Version 0 witness program - 0x14, // OP_DATA_20 - 0x9d, 0xda, 0xc6, 0xf3, 0x9d, 0x51, 0xe0, 0x39, - 0x8e, 0x53, 0x2a, 0x22, 0xc4, 0x1b, 0xa1, 0x89, - 0x40, 0x6a, 0x85, 0x23, // 20-byte pub key hash - 0x2, // Two items on the witness stack - 0x46, // 70 byte stack item - 0x30, 0x43, 0x2, 0x1f, 0x4d, 0x23, 0x81, 0xdc, - 0x97, 0xf1, 0x82, 0xab, 0xd8, 0x18, 0x5f, 0x51, - 0x75, 0x30, 0x18, 0x52, 0x32, 0x12, 0xf5, 0xdd, - 0xc0, 0x7c, 0xc4, 0xe6, 0x3a, 0x8d, 0xc0, 0x36, - 0x58, 0xda, 0x19, 0x2, 0x20, 0x60, 0x8b, 0x5c, - 0x4d, 0x92, 0xb8, 0x6b, 0x6d, 0xe7, 0xd7, 0x8e, - 0xf2, 0x3a, 0x2f, 0xa7, 0x35, 0xbc, 0xb5, 0x9b, - 0x91, 0x4a, 0x48, 0xb0, 0xe1, 0x87, 0xc5, 0xe7, - 0x56, 0x9a, 0x18, 0x19, 0x70, 0x1, - 0x21, // 33 byte stack item - 0x3, 0x7, 0xea, 0xd0, 0x84, 0x80, 0x7e, 0xb7, - 0x63, 0x46, 0xdf, 0x69, 0x77, 0x0, 0xc, 0x89, - 0x39, 0x2f, 0x45, 0xc7, 0x64, 0x25, 0xb2, 0x61, - 0x81, 0xf5, 0x21, 0xd7, 0xf3, 0x70, 0x6, 0x6a, - 0x8f, - 0x0, 0x0, 0x0, 0x0, // Lock time -} - -// multiWitnessTxEncodedNonZeroFlag is an incorrect wire encoded bytes for -// multiWitnessTx including inputs with witness data. Instead of the flag byte -// being set to 0x01, the flag is 0x00, which should trigger a decoding error. -var multiWitnessTxEncodedNonZeroFlag = []byte{ - 0x1, 0x0, 0x0, 0x0, // Version - 0x0, // Marker byte indicating 0 inputs, or a segwit encoded tx - 0x0, // Incorrect flag byte (should be 0x01) - 0x1, // Varint for number of inputs - 0xa5, 0x33, 0x52, 0xd5, 0x13, 0x57, 0x66, 0xf0, - 0x30, 0x76, 0x59, 0x74, 0x18, 0x26, 0x3d, 0xa2, - 0xd9, 0xc9, 0x58, 0x31, 0x59, 0x68, 0xfe, 0xa8, - 0x23, 0x52, 0x94, 0x67, 0x48, 0x1f, 0xf9, 0xcd, // Previous output hash - 0x13, 0x0, 0x0, 0x0, // Little endian previous output index - 0x0, // No sig script (this is a witness input) - 0xff, 0xff, 0xff, 0xff, // Sequence - 0x1, // Varint for number of outputs - 0xb, 0x7, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, // Output amount - 0x16, // Varint for length of pk script - 0x0, // Version 0 witness program - 0x14, // OP_DATA_20 - 0x9d, 0xda, 0xc6, 0xf3, 0x9d, 0x51, 0xe0, 0x39, - 0x8e, 0x53, 0x2a, 0x22, 0xc4, 0x1b, 0xa1, 0x89, - 0x40, 0x6a, 0x85, 0x23, // 20-byte pub key hash - 0x2, // Two items on the witness stack - 0x46, // 70 byte stack item - 0x30, 0x43, 0x2, 0x1f, 0x4d, 0x23, 0x81, 0xdc, - 0x97, 0xf1, 0x82, 0xab, 0xd8, 0x18, 0x5f, 0x51, - 0x75, 0x30, 0x18, 0x52, 0x32, 0x12, 0xf5, 0xdd, - 0xc0, 0x7c, 0xc4, 0xe6, 0x3a, 0x8d, 0xc0, 0x36, - 0x58, 0xda, 0x19, 0x2, 0x20, 0x60, 0x8b, 0x5c, - 0x4d, 0x92, 0xb8, 0x6b, 0x6d, 0xe7, 0xd7, 0x8e, - 0xf2, 0x3a, 0x2f, 0xa7, 0x35, 0xbc, 0xb5, 0x9b, - 0x91, 0x4a, 0x48, 0xb0, 0xe1, 0x87, 0xc5, 0xe7, - 0x56, 0x9a, 0x18, 0x19, 0x70, 0x1, - 0x21, // 33 byte stack item - 0x3, 0x7, 0xea, 0xd0, 0x84, 0x80, 0x7e, 0xb7, - 0x63, 0x46, 0xdf, 0x69, 0x77, 0x0, 0xc, 0x89, - 0x39, 0x2f, 0x45, 0xc7, 0x64, 0x25, 0xb2, 0x61, - 0x81, 0xf5, 0x21, 0xd7, 0xf3, 0x70, 0x6, 0x6a, - 0x8f, - 0x0, 0x0, 0x0, 0x0, // Lock time -} - -// multiTxPkScriptLocs is the location information for the public key scripts -// located in multiWitnessTx. -var multiWitnessTxPkScriptLocs = []int{58} diff --git a/wire/msgverack.go b/wire/msgverack.go index 60342b564..6d89e61aa 100644 --- a/wire/msgverack.go +++ b/wire/msgverack.go @@ -17,13 +17,13 @@ type MsgVerAck struct{} // BtcDecode decodes r using the bitcoin protocol encoding into the receiver. // This is part of the Message interface implementation. -func (msg *MsgVerAck) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgVerAck) BtcDecode(r io.Reader, pver uint32) error { return nil } // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgVerAck) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgVerAck) BtcEncode(w io.Writer, pver uint32) error { return nil } diff --git a/wire/msgverack_test.go b/wire/msgverack_test.go index 7a1449127..05066f5b4 100644 --- a/wire/msgverack_test.go +++ b/wire/msgverack_test.go @@ -41,11 +41,10 @@ func TestVerAckWire(t *testing.T) { msgVerAckEncoded := []byte{} tests := []struct { - in *MsgVerAck // Message to encode - out *MsgVerAck // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgVerAck // Message to encode + out *MsgVerAck // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -53,7 +52,6 @@ func TestVerAckWire(t *testing.T) { msgVerAck, msgVerAckEncoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -62,7 +60,6 @@ func TestVerAckWire(t *testing.T) { msgVerAck, msgVerAckEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -71,7 +68,6 @@ func TestVerAckWire(t *testing.T) { msgVerAck, msgVerAckEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -80,7 +76,6 @@ func TestVerAckWire(t *testing.T) { msgVerAck, msgVerAckEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -89,7 +84,6 @@ func TestVerAckWire(t *testing.T) { msgVerAck, msgVerAckEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -97,7 +91,7 @@ func TestVerAckWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -111,7 +105,7 @@ func TestVerAckWire(t *testing.T) { // Decode the message from wire format. var msg MsgVerAck rbuf := bytes.NewReader(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue diff --git a/wire/msgversion.go b/wire/msgversion.go index 3077f1276..d6a3061f4 100644 --- a/wire/msgversion.go +++ b/wire/msgversion.go @@ -76,7 +76,7 @@ func (msg *MsgVersion) AddService(service ServiceFlag) { // *bytes.Buffer so the number of remaining bytes can be ascertained. // // This is part of the Message interface implementation. -func (msg *MsgVersion) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error { +func (msg *MsgVersion) BtcDecode(r io.Reader, pver uint32) error { buf, ok := r.(*bytes.Buffer) if !ok { return fmt.Errorf("MsgVersion.BtcDecode reader is not a " + @@ -149,7 +149,7 @@ func (msg *MsgVersion) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) // BtcEncode encodes the receiver to w using the bitcoin protocol encoding. // This is part of the Message interface implementation. -func (msg *MsgVersion) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error { +func (msg *MsgVersion) BtcEncode(w io.Writer, pver uint32) error { err := validateUserAgent(msg.UserAgent) if err != nil { return err diff --git a/wire/msgversion_test.go b/wire/msgversion_test.go index dc2b6e098..9d90a7e8f 100644 --- a/wire/msgversion_test.go +++ b/wire/msgversion_test.go @@ -139,11 +139,10 @@ func TestVersionWire(t *testing.T) { verRelayTxFalseEncoded[len(verRelayTxFalseEncoded)-1] = 0 tests := []struct { - in *MsgVersion // Message to encode - out *MsgVersion // Expected decoded message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + in *MsgVersion // Message to encode + out *MsgVersion // Expected decoded message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ // Latest protocol version. { @@ -151,7 +150,6 @@ func TestVersionWire(t *testing.T) { baseVersionBIP0037, baseVersionBIP0037Encoded, ProtocolVersion, - BaseEncoding, }, // Protocol version BIP0037Version with relay transactions field @@ -161,7 +159,6 @@ func TestVersionWire(t *testing.T) { baseVersionBIP0037, baseVersionBIP0037Encoded, BIP0037Version, - BaseEncoding, }, // Protocol version BIP0037Version with relay transactions field @@ -171,7 +168,6 @@ func TestVersionWire(t *testing.T) { verRelayTxFalse, verRelayTxFalseEncoded, BIP0037Version, - BaseEncoding, }, // Protocol version BIP0035Version. @@ -180,7 +176,6 @@ func TestVersionWire(t *testing.T) { baseVersion, baseVersionEncoded, BIP0035Version, - BaseEncoding, }, // Protocol version BIP0031Version. @@ -189,7 +184,6 @@ func TestVersionWire(t *testing.T) { baseVersion, baseVersionEncoded, BIP0031Version, - BaseEncoding, }, // Protocol version NetAddressTimeVersion. @@ -198,7 +192,6 @@ func TestVersionWire(t *testing.T) { baseVersion, baseVersionEncoded, NetAddressTimeVersion, - BaseEncoding, }, // Protocol version MultipleAddressVersion. @@ -207,7 +200,6 @@ func TestVersionWire(t *testing.T) { baseVersion, baseVersionEncoded, MultipleAddressVersion, - BaseEncoding, }, } @@ -215,7 +207,7 @@ func TestVersionWire(t *testing.T) { for i, test := range tests { // Encode the message to wire format. var buf bytes.Buffer - err := test.in.BtcEncode(&buf, test.pver, test.enc) + err := test.in.BtcEncode(&buf, test.pver) if err != nil { t.Errorf("BtcEncode #%d error %v", i, err) continue @@ -229,7 +221,7 @@ func TestVersionWire(t *testing.T) { // Decode the message from wire format. var msg MsgVersion rbuf := bytes.NewBuffer(test.buf) - err = msg.BtcDecode(rbuf, test.pver, test.enc) + err = msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue @@ -249,13 +241,12 @@ func TestVersionWireErrors(t *testing.T) { // because the test data is using bytes encoded with that protocol // version. pver := uint32(60002) - enc := BaseEncoding wireErr := &MessageError{} // Ensure calling MsgVersion.BtcDecode with a non *bytes.Buffer returns // error. fr := newFixedReader(0, []byte{}) - if err := baseVersion.BtcDecode(fr, pver, enc); err == nil { + if err := baseVersion.BtcDecode(fr, pver); err == nil { t.Errorf("Did not received error when calling " + "MsgVersion.BtcDecode with non *bytes.Buffer") } @@ -285,47 +276,46 @@ func TestVersionWireErrors(t *testing.T) { copy(exceedUAVerEncoded[83+len(newUA):], baseVersionEncoded[97:100]) tests := []struct { - in *MsgVersion // Value to encode - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format - max int // Max size of fixed buffer to induce errors - writeErr error // Expected write error - readErr error // Expected read error + in *MsgVersion // Value to encode + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding + max int // Max size of fixed buffer to induce errors + writeErr error // Expected write error + readErr error // Expected read error }{ // Force error in protocol version. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 0, io.ErrShortWrite, io.EOF}, + {baseVersion, baseVersionEncoded, pver, 0, io.ErrShortWrite, io.EOF}, // Force error in services. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 4, io.ErrShortWrite, io.EOF}, + {baseVersion, baseVersionEncoded, pver, 4, io.ErrShortWrite, io.EOF}, // Force error in timestamp. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 12, io.ErrShortWrite, io.EOF}, + {baseVersion, baseVersionEncoded, pver, 12, io.ErrShortWrite, io.EOF}, // Force error in remote address. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 20, io.ErrShortWrite, io.EOF}, + {baseVersion, baseVersionEncoded, pver, 20, io.ErrShortWrite, io.EOF}, // Force error in local address. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 47, io.ErrShortWrite, io.ErrUnexpectedEOF}, + {baseVersion, baseVersionEncoded, pver, 47, io.ErrShortWrite, io.ErrUnexpectedEOF}, // Force error in nonce. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 73, io.ErrShortWrite, io.ErrUnexpectedEOF}, + {baseVersion, baseVersionEncoded, pver, 73, io.ErrShortWrite, io.ErrUnexpectedEOF}, // Force error in user agent length. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 81, io.ErrShortWrite, io.EOF}, + {baseVersion, baseVersionEncoded, pver, 81, io.ErrShortWrite, io.EOF}, // Force error in user agent. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 82, io.ErrShortWrite, io.ErrUnexpectedEOF}, + {baseVersion, baseVersionEncoded, pver, 82, io.ErrShortWrite, io.ErrUnexpectedEOF}, // Force error in last block. - {baseVersion, baseVersionEncoded, pver, BaseEncoding, 98, io.ErrShortWrite, io.ErrUnexpectedEOF}, + {baseVersion, baseVersionEncoded, pver, 98, io.ErrShortWrite, io.ErrUnexpectedEOF}, // Force error in relay tx - no read error should happen since // it's optional. { baseVersionBIP0037, baseVersionBIP0037Encoded, - BIP0037Version, BaseEncoding, 101, io.ErrShortWrite, nil, + BIP0037Version, 101, io.ErrShortWrite, nil, }, // Force error due to user agent too big - {exceedUAVer, exceedUAVerEncoded, pver, BaseEncoding, newLen, wireErr, wireErr}, + {exceedUAVer, exceedUAVerEncoded, pver, newLen, wireErr, wireErr}, } t.Logf("Running %d tests", len(tests)) for i, test := range tests { // Encode to wire format. w := newFixedWriter(test.max) - err := test.in.BtcEncode(w, test.pver, test.enc) + err := test.in.BtcEncode(w, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.writeErr) { t.Errorf("BtcEncode #%d wrong error got: %v, want: %v", i, err, test.writeErr) @@ -345,7 +335,7 @@ func TestVersionWireErrors(t *testing.T) { // Decode from wire format. var msg MsgVersion buf := bytes.NewBuffer(test.buf[0:test.max]) - err = msg.BtcDecode(buf, test.pver, test.enc) + err = msg.BtcDecode(buf, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.readErr) { t.Errorf("BtcDecode #%d wrong error got: %v, want: %v", i, err, test.readErr) @@ -417,40 +407,34 @@ func TestVersionOptionalFields(t *testing.T) { copy(lastBlockVersionEncoded, baseVersionEncoded) tests := []struct { - msg *MsgVersion // Expected message - buf []byte // Wire encoding - pver uint32 // Protocol version for wire encoding - enc MessageEncoding // Message encoding format + msg *MsgVersion // Expected message + buf []byte // Wire encoding + pver uint32 // Protocol version for wire encoding }{ { &onlyRequiredVersion, onlyRequiredVersionEncoded, ProtocolVersion, - BaseEncoding, }, { &addrMeVersion, addrMeVersionEncoded, ProtocolVersion, - BaseEncoding, }, { &nonceVersion, nonceVersionEncoded, ProtocolVersion, - BaseEncoding, }, { &uaVersion, uaVersionEncoded, ProtocolVersion, - BaseEncoding, }, { &lastBlockVersion, lastBlockVersionEncoded, ProtocolVersion, - BaseEncoding, }, } @@ -458,7 +442,7 @@ func TestVersionOptionalFields(t *testing.T) { // Decode the message from wire format. var msg MsgVersion rbuf := bytes.NewBuffer(test.buf) - err := msg.BtcDecode(rbuf, test.pver, test.enc) + err := msg.BtcDecode(rbuf, test.pver) if err != nil { t.Errorf("BtcDecode #%d error %v", i, err) continue diff --git a/wire/protocol.go b/wire/protocol.go index 8cc9838a5..2547a7891 100644 --- a/wire/protocol.go +++ b/wire/protocol.go @@ -68,10 +68,6 @@ const ( // filtering. SFNodeBloom - // SFNodeWitness is a flag used to indicate a peer supports blocks - // and transactions including witness data (BIP0144). - SFNodeWitness - // SFNodeXthin is a flag used to indicate a peer supports xthin blocks. SFNodeXthin @@ -82,10 +78,6 @@ const ( // SFNodeCF is a flag used to indicate a peer supports committed // filters (CFs). SFNodeCF - - // SFNode2X is a flag used to indicate a peer is running the Segwit2X - // software. - SFNode2X ) // Map of service flags back to their constant names for pretty printing. @@ -93,11 +85,9 @@ var sfStrings = map[ServiceFlag]string{ SFNodeNetwork: "SFNodeNetwork", SFNodeGetUTXO: "SFNodeGetUTXO", SFNodeBloom: "SFNodeBloom", - SFNodeWitness: "SFNodeWitness", SFNodeXthin: "SFNodeXthin", SFNodeBit5: "SFNodeBit5", SFNodeCF: "SFNodeCF", - SFNode2X: "SFNode2X", } // orderedSFStrings is an ordered list of service flags from highest to @@ -106,11 +96,9 @@ var orderedSFStrings = []ServiceFlag{ SFNodeNetwork, SFNodeGetUTXO, SFNodeBloom, - SFNodeWitness, SFNodeXthin, SFNodeBit5, SFNodeCF, - SFNode2X, } // String returns the ServiceFlag in human-readable form. diff --git a/wire/protocol_test.go b/wire/protocol_test.go index 60bd0533e..79663ed1f 100644 --- a/wire/protocol_test.go +++ b/wire/protocol_test.go @@ -16,12 +16,10 @@ func TestServiceFlagStringer(t *testing.T) { {SFNodeNetwork, "SFNodeNetwork"}, {SFNodeGetUTXO, "SFNodeGetUTXO"}, {SFNodeBloom, "SFNodeBloom"}, - {SFNodeWitness, "SFNodeWitness"}, {SFNodeXthin, "SFNodeXthin"}, {SFNodeBit5, "SFNodeBit5"}, {SFNodeCF, "SFNodeCF"}, - {SFNode2X, "SFNode2X"}, - {0xffffffff, "SFNodeNetwork|SFNodeGetUTXO|SFNodeBloom|SFNodeWitness|SFNodeXthin|SFNodeBit5|SFNodeCF|SFNode2X|0xffffff00"}, + {0xffffffff, "SFNodeNetwork|SFNodeGetUTXO|SFNodeBloom|SFNodeXthin|SFNodeBit5|SFNodeCF|0xffffffc0"}, } t.Logf("Running %d tests", len(tests))