Skip to content

Commit 147995e

Browse files
committed
Updated subtree data serialization to use SerializeBytes() to determine whether original transactions is actually extended or not
1 parent 284cb69 commit 147995e

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

subtree_data.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func (s *SubtreeData) Serialize() ([]byte, error) {
100100
buf := bytes.NewBuffer(bufBytes)
101101

102102
for i := txStartIndex; i < subtreeLen; i++ {
103-
b := s.Txs[i].ExtendedBytes()
103+
b := s.Txs[i].SerializeBytes()
104104

105105
_, err = buf.Write(b)
106106
if err != nil {

subtree_data_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,33 @@ func TestSerialize(t *testing.T) {
192192
assert.Contains(t, err.Error(), "subtree length does not match tx data length")
193193
assert.Nil(t, serializedData)
194194
})
195+
196+
t.Run("serialize non-extended", func(t *testing.T) {
197+
subtree, err := NewTree(2)
198+
require.NoError(t, err)
199+
200+
_ = subtree.AddNode(*tx1.TxIDChainHash(), 111, 0)
201+
_ = subtree.AddNode(*tx2.TxIDChainHash(), 111, 0)
202+
203+
subtreeData := NewSubtreeData(subtree)
204+
205+
tx2NonExtended, err := bt.NewTxFromBytes(tx2.Bytes())
206+
require.NoError(t, err)
207+
208+
_ = subtreeData.AddTx(tx1, 0)
209+
_ = subtreeData.AddTx(tx2NonExtended, 1)
210+
211+
// Second transaction is missing, so serialization should fail
212+
serializedDataBytes, err := subtreeData.Serialize()
213+
require.NoError(t, err)
214+
215+
subtreeData2, err := NewSubtreeDataFromBytes(subtree, serializedDataBytes)
216+
require.NoError(t, err)
217+
require.NotNil(t, subtreeData2)
218+
219+
assert.True(t, subtreeData2.Txs[0].IsExtended())
220+
assert.False(t, subtreeData2.Txs[1].IsExtended())
221+
})
195222
}
196223

197224
func TestNewSubtreeDataFromBytes(t *testing.T) {

0 commit comments

Comments
 (0)