Skip to content

Commit 48da543

Browse files
committed
rework atomic testing
1 parent 0e57b7f commit 48da543

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

transaction/beef.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"encoding/binary"
66
"encoding/hex"
77
"fmt"
8-
"io"
98

109
"github.com/bsv-blockchain/go-sdk/chainhash"
1110
"github.com/bsv-blockchain/go-sdk/transaction/chaintracker"
@@ -116,19 +115,17 @@ func readBeefTx(reader *bytes.Reader, BUMPs []*MerklePath) (*map[string]*BeefTx,
116115
}
117116

118117
func NewBeefFromBytes(beef []byte) (*Beef, error) {
119-
reader := bytes.NewReader(beef)
118+
var reader *bytes.Reader
119+
if binary.LittleEndian.Uint32(beef[:4]) == ATOMIC_BEEF {
120+
reader = bytes.NewReader(beef[36:])
121+
} else {
122+
reader = bytes.NewReader(beef)
123+
}
120124
version, err := readVersion(reader)
121125
if err != nil {
122126
return nil, err
123127
}
124128

125-
if version == ATOMIC_BEEF {
126-
reader.Seek(32, io.SeekCurrent)
127-
if version, err = readVersion(reader); err != nil {
128-
return nil, err
129-
}
130-
}
131-
132129
if version == BEEF_V1 {
133130
BUMPs, err := readBUMPs(reader)
134131
if err != nil {

transaction/beef_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,19 @@ func TestNewBEEFFromBytes(t *testing.T) {
9696
require.Len(t, beef.BUMPs, 3, "BUMPs length does not match")
9797
require.Len(t, beef.Transactions, 3, "Transactions length does not match")
9898

99+
tx := beef.FindTransaction("b1fc0f44ba629dbdffab9e34fcc4faf9dbde3560a7365c55c26fe4daab052aac")
100+
require.NotNil(t, tx, "Transaction not found in BEEF data")
101+
102+
atomic, err := tx.AtomicBEEF(false)
103+
require.NoError(t, err, "AtomicBEEF method failed")
104+
105+
_, err = NewTransactionFromBEEF(atomic)
106+
require.NoError(t, err, "NewTransactionFromBEEF method failed")
107+
99108
binary.LittleEndian.PutUint32(beefBytes[0:4], 0xdeadbeef)
100109
_, err = NewTransactionFromBEEF(beefBytes)
101110
require.Error(t, err, "use NewBeefFromBytes to parse anything which isn't V1 BEEF or AtomicBEEF")
111+
102112
}
103113

104114
func TestBeefTransactionFinding(t *testing.T) {

0 commit comments

Comments
 (0)