Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit edf83a5

Browse files
authored
updates to latest hive.go (#293)
1 parent f3d3c65 commit edf83a5

File tree

8 files changed

+33
-27
lines changed

8 files changed

+33
-27
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.16
55
require (
66
filippo.io/edwards25519 v1.0.0-rc.1
77
github.com/eclipse/paho.mqtt.golang v1.3.5
8-
github.com/iotaledger/hive.go v0.0.0-20210907083658-27edf6b49375
8+
github.com/iotaledger/hive.go v0.0.0-20211011085923-fd2eb0a47bf8
99
github.com/iotaledger/iota.go v1.0.0
1010
github.com/stretchr/testify v1.7.0
1111
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/C
170170
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
171171
github.com/iotaledger/hive.go v0.0.0-20210907083658-27edf6b49375 h1:fIUDROnv3eUGkgPWlU7RUQQZIXfS0GT9ZYPJn5JdOog=
172172
github.com/iotaledger/hive.go v0.0.0-20210907083658-27edf6b49375/go.mod h1:vZXMpgveUkATu1IueKmUJK3/OVgrYRQdH/Jh/yZ2j9Q=
173+
github.com/iotaledger/hive.go v0.0.0-20211011085923-fd2eb0a47bf8 h1:kAB5+8LBTMZSXaud4PrPsklqf7LUBrUy6ZtAlq+El9g=
174+
github.com/iotaledger/hive.go v0.0.0-20211011085923-fd2eb0a47bf8/go.mod h1:vZXMpgveUkATu1IueKmUJK3/OVgrYRQdH/Jh/yZ2j9Q=
173175
github.com/iotaledger/iota.go v1.0.0 h1:tqm1FxJ/zOdzbrAaQ5BQpVF8dUy2eeGlSeWlNG8GoXY=
174176
github.com/iotaledger/iota.go v1.0.0/go.mod h1:RiKYwDyY7aCD1L0YRzHSjOsJ5mUR9yvQpvhZncNcGQI=
175177
github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI=

indexation.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
89
"github.com/iotaledger/hive.go/serializer"
910
)
1011

@@ -51,7 +52,7 @@ func (u *Indexation) Deserialize(data []byte, deSeriMode serializer.DeSerializat
5152
Skip(serializer.TypeDenotationByteSize, func(err error) error {
5253
return fmt.Errorf("unable to skip indexation payload ID during deserialization: %w", err)
5354
}).
54-
ReadVariableByteSlice(&u.Index, serializer.SeriSliceLengthAsUint16, func(err error) error {
55+
ReadVariableByteSlice(&u.Index, serializer.SeriLengthPrefixTypeAsUint16, func(err error) error {
5556
return fmt.Errorf("unable to deserialize indexation index: %w", err)
5657
}, IndexationIndexMaxLength).
5758
AbortIf(func(err error) error {
@@ -63,7 +64,7 @@ func (u *Indexation) Deserialize(data []byte, deSeriMode serializer.DeSerializat
6364
}
6465
return nil
6566
}).
66-
ReadVariableByteSlice(&u.Data, serializer.SeriSliceLengthAsUint32, func(err error) error {
67+
ReadVariableByteSlice(&u.Data, serializer.SeriLengthPrefixTypeAsUint32, func(err error) error {
6768
return fmt.Errorf("unable to deserialize indexation data: %w", err)
6869
}, MessageBinSerializedMaxSize). // obviously can never be that size
6970
Done()
@@ -88,10 +89,10 @@ func (u *Indexation) Serialize(deSeriMode serializer.DeSerializationMode) ([]byt
8889
WriteNum(IndexationPayloadTypeID, func(err error) error {
8990
return fmt.Errorf("unable to serialize indexation payload ID: %w", err)
9091
}).
91-
WriteVariableByteSlice(u.Index, serializer.SeriSliceLengthAsUint16, func(err error) error {
92+
WriteVariableByteSlice(u.Index, serializer.SeriLengthPrefixTypeAsUint16, func(err error) error {
9293
return fmt.Errorf("unable to serialize indexation index: %w", err)
9394
}).
94-
WriteVariableByteSlice(u.Data, serializer.SeriSliceLengthAsUint32, func(err error) error {
95+
WriteVariableByteSlice(u.Data, serializer.SeriLengthPrefixTypeAsUint32, func(err error) error {
9596
return fmt.Errorf("unable to serialize indexation data: %w", err)
9697
}).
9798
Serialize()

message.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ func (m *Message) Deserialize(data []byte, deSeriMode serializer.DeSerialization
150150
ReadNum(&m.NetworkID, func(err error) error {
151151
return fmt.Errorf("unable to deserialize message network ID: %w", err)
152152
}).
153-
ReadSliceOfArraysOf32Bytes(&m.Parents, deSeriMode, serializer.SeriSliceLengthAsByte, &messageParentArrayRules, func(err error) error {
153+
ReadSliceOfArraysOf32Bytes(&m.Parents, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &messageParentArrayRules, func(err error) error {
154154
return fmt.Errorf("unable to deserialize message parents: %w", err)
155155
}).
156156
ReadPayload(func(seri serializer.Serializable) { m.Payload = seri }, deSeriMode, func(ty uint32) (serializer.Serializable, error) {
@@ -184,7 +184,7 @@ func (m *Message) Serialize(deSeriMode serializer.DeSerializationMode) ([]byte,
184184
WriteNum(m.NetworkID, func(err error) error {
185185
return fmt.Errorf("unable to serialize message network ID: %w", err)
186186
}).
187-
Write32BytesArraySlice(m.Parents, deSeriMode, serializer.SeriSliceLengthAsByte, &messageParentArrayRules, func(err error) error {
187+
Write32BytesArraySlice(m.Parents, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &messageParentArrayRules, func(err error) error {
188188
return fmt.Errorf("unable to serialize message parents: %w", err)
189189
}).
190190
WritePayload(m.Payload, deSeriMode, func(err error) error {

milestone.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func (m *Milestone) Essence() ([]byte, error) {
176176
WriteNum(m.Timestamp, func(err error) error {
177177
return fmt.Errorf("unable to serialize milestone timestamp for essence: %w", err)
178178
}).
179-
Write32BytesArraySlice(m.Parents, serializer.DeSeriModePerformValidation, serializer.SeriSliceLengthAsByte, &milestoneParentArrayRules, func(err error) error {
179+
Write32BytesArraySlice(m.Parents, serializer.DeSeriModePerformValidation, serializer.SeriLengthPrefixTypeAsByte, &milestoneParentArrayRules, func(err error) error {
180180
return fmt.Errorf("unable to serialize milestone parents for essence: %w", err)
181181
}).
182182
WriteBytes(m.InclusionMerkleProof[:], func(err error) error {
@@ -188,7 +188,7 @@ func (m *Milestone) Essence() ([]byte, error) {
188188
WriteNum(m.NextPoWScoreMilestoneIndex, func(err error) error {
189189
return fmt.Errorf("unable to serialize milestone next pow score milestone index for essence: %w", err)
190190
}).
191-
Write32BytesArraySlice(m.PublicKeys, serializer.DeSeriModePerformValidation, serializer.SeriSliceLengthAsByte, &milestonePublicKeyArrayRules, func(err error) error {
191+
Write32BytesArraySlice(m.PublicKeys, serializer.DeSeriModePerformValidation, serializer.SeriLengthPrefixTypeAsByte, &milestonePublicKeyArrayRules, func(err error) error {
192192
return fmt.Errorf("unable to serialize milestone public keys for essence: %w", err)
193193
}).
194194
WritePayload(m.Receipt, serializer.DeSeriModePerformValidation, func(err error) error {
@@ -349,7 +349,7 @@ func (m *Milestone) Deserialize(data []byte, deSeriMode serializer.DeSerializati
349349
ReadNum(&m.Timestamp, func(err error) error {
350350
return fmt.Errorf("unable to deserialize milestone timestamp: %w", err)
351351
}).
352-
ReadSliceOfArraysOf32Bytes(&m.Parents, deSeriMode, serializer.SeriSliceLengthAsByte, &milestoneParentArrayRules, func(err error) error {
352+
ReadSliceOfArraysOf32Bytes(&m.Parents, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestoneParentArrayRules, func(err error) error {
353353
return fmt.Errorf("unable to deserialize milestone parents: %w", err)
354354
}).
355355
ReadArrayOf32Bytes(&m.InclusionMerkleProof, func(err error) error {
@@ -368,7 +368,7 @@ func (m *Milestone) Deserialize(data []byte, deSeriMode serializer.DeSerializati
368368
}
369369
return nil
370370
}).
371-
ReadSliceOfArraysOf32Bytes(&m.PublicKeys, deSeriMode, serializer.SeriSliceLengthAsByte, &milestonePublicKeyArrayRules, func(err error) error {
371+
ReadSliceOfArraysOf32Bytes(&m.PublicKeys, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestonePublicKeyArrayRules, func(err error) error {
372372
return fmt.Errorf("unable to deserialize milestone public keys: %w", err)
373373
}).
374374
ReadPayload(func(seri serializer.Serializable) { m.Receipt = seri }, deSeriMode, func(ty uint32) (serializer.Serializable, error) {
@@ -379,7 +379,7 @@ func (m *Milestone) Deserialize(data []byte, deSeriMode serializer.DeSerializati
379379
}, func(err error) error {
380380
return fmt.Errorf("unable to deserialize milestone receipt: %w", err)
381381
}).
382-
ReadSliceOfArraysOf64Bytes(&m.Signatures, deSeriMode, serializer.SeriSliceLengthAsByte, &milestoneSignatureArrayRules, func(err error) error {
382+
ReadSliceOfArraysOf64Bytes(&m.Signatures, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestoneSignatureArrayRules, func(err error) error {
383383
return fmt.Errorf("unable to deserialize milestone signatures: %w", err)
384384
}).
385385
AbortIf(func(err error) error {
@@ -413,7 +413,7 @@ func (m *Milestone) Serialize(deSeriMode serializer.DeSerializationMode) ([]byte
413413
WriteNum(m.Timestamp, func(err error) error {
414414
return fmt.Errorf("unable to serialize milestone timestamp: %w", err)
415415
}).
416-
Write32BytesArraySlice(m.Parents, deSeriMode, serializer.SeriSliceLengthAsByte, &milestoneParentArrayRules, func(err error) error {
416+
Write32BytesArraySlice(m.Parents, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestoneParentArrayRules, func(err error) error {
417417
return fmt.Errorf("unable to serialize milestone parents: %w", err)
418418
}).
419419
WriteBytes(m.InclusionMerkleProof[:], func(err error) error {
@@ -425,13 +425,13 @@ func (m *Milestone) Serialize(deSeriMode serializer.DeSerializationMode) ([]byte
425425
WriteNum(m.NextPoWScoreMilestoneIndex, func(err error) error {
426426
return fmt.Errorf("unable to serialize milestone next pow score milestone index: %w", err)
427427
}).
428-
Write32BytesArraySlice(m.PublicKeys, deSeriMode, serializer.SeriSliceLengthAsByte, &milestonePublicKeyArrayRules, func(err error) error {
428+
Write32BytesArraySlice(m.PublicKeys, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestonePublicKeyArrayRules, func(err error) error {
429429
return fmt.Errorf("unable to serialize milestone public keys: %w", err)
430430
}).
431431
WritePayload(m.Receipt, deSeriMode, func(err error) error {
432432
return fmt.Errorf("unable to serialize milestone receipt: %w", err)
433433
}).
434-
Write64BytesArraySlice(m.Signatures, deSeriMode, serializer.SeriSliceLengthAsByte, &milestoneSignatureArrayRules, func(err error) error {
434+
Write64BytesArraySlice(m.Signatures, deSeriMode, serializer.SeriLengthPrefixTypeAsByte, &milestoneSignatureArrayRules, func(err error) error {
435435
return fmt.Errorf("unable to serialize milestone signatures: %w", err)
436436
}).
437437
Serialize()

receipt.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"github.com/iotaledger/hive.go/serializer"
87
"sort"
8+
9+
"github.com/iotaledger/hive.go/serializer"
910
)
1011

1112
const (
@@ -88,7 +89,7 @@ func (r *Receipt) Deserialize(data []byte, deSeriMode serializer.DeSerialization
8889
return fmt.Errorf("unable to deserialize receipt final flag: %w", err)
8990
}).
9091
// special as the MigratedFundsEntry has no type denotation byte
91-
ReadSliceOfObjects(func(seri serializer.Serializables) { r.Funds = seri }, deSeriMode, serializer.TypeDenotationNone, func(_ uint32) (serializer.Serializable, error) {
92+
ReadSliceOfObjects(func(seri serializer.Serializables) { r.Funds = seri }, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, serializer.TypeDenotationNone, func(_ uint32) (serializer.Serializable, error) {
9293
// there is no real selector, so we always return a fresh MigratedFundsEntry
9394
return &MigratedFundsEntry{}, nil
9495
}, migratedFundEntriesArrayRules, func(err error) error {
@@ -142,7 +143,7 @@ func (r *Receipt) Serialize(deSeriMode serializer.DeSerializationMode) ([]byte,
142143
WriteBool(r.Final, func(err error) error {
143144
return fmt.Errorf("unable to serialize receipt final flag: %w", err)
144145
}).
145-
WriteSliceOfObjects(r.Funds, deSeriMode, migratedFundsEntriesWrittenConsumer, func(err error) error {
146+
WriteSliceOfObjects(r.Funds, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, migratedFundsEntriesWrittenConsumer, func(err error) error {
146147
return fmt.Errorf("unable to serialize receipt funds: %w", err)
147148
}).
148149
WritePayload(r.Transaction, deSeriMode, func(err error) error {

transaction.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7+
78
"github.com/iotaledger/hive.go/serializer"
89

910
"golang.org/x/crypto/blake2b"
@@ -90,11 +91,11 @@ func (t *Transaction) Deserialize(data []byte, deSeriMode serializer.DeSerializa
9091
return fmt.Errorf("%w: unable to deserialize transaction essence within transaction", err)
9192
}).
9293
Do(func() {
93-
inputCount := uint16(len(t.Essence.(*TransactionEssence).Inputs))
94+
inputCount := uint(len(t.Essence.(*TransactionEssence).Inputs))
9495
unlockBlockArrayRules.Min = inputCount
9596
unlockBlockArrayRules.Max = inputCount
9697
}).
97-
ReadSliceOfObjects(func(seri serializer.Serializables) { t.UnlockBlocks = seri }, deSeriMode, serializer.TypeDenotationByte, UnlockBlockSelector, unlockBlockArrayRules, func(err error) error {
98+
ReadSliceOfObjects(func(seri serializer.Serializables) { t.UnlockBlocks = seri }, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, serializer.TypeDenotationByte, UnlockBlockSelector, unlockBlockArrayRules, func(err error) error {
9899
return fmt.Errorf("%w: unable to deserialize unlock blocks", err)
99100
}).
100101
AbortIf(func(err error) error {
@@ -120,7 +121,7 @@ func (t *Transaction) Serialize(deSeriMode serializer.DeSerializationMode) ([]by
120121
WriteObject(t.Essence, deSeriMode, func(err error) error {
121122
return fmt.Errorf("%w: unable to serialize transaction's essence", err)
122123
}).
123-
WriteSliceOfObjects(t.UnlockBlocks, deSeriMode, nil, func(err error) error {
124+
WriteSliceOfObjects(t.UnlockBlocks, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, nil, func(err error) error {
124125
return fmt.Errorf("%w: unable to serialize transaction's unlock blocks", err)
125126
}).
126127
Serialize()

transaction_essence.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"github.com/iotaledger/hive.go/serializer"
87
"sort"
98

9+
"github.com/iotaledger/hive.go/serializer"
10+
1011
"golang.org/x/crypto/blake2b"
1112
)
1213

@@ -18,7 +19,7 @@ const (
1819
TransactionEssenceNormal TransactionEssenceType = iota
1920

2021
// TransactionEssenceMinByteSize defines the minimum size of a TransactionEssence.
21-
TransactionEssenceMinByteSize = serializer.TypeDenotationByteSize + serializer.StructArrayLengthByteSize + serializer.StructArrayLengthByteSize + serializer.PayloadLengthByteSize
22+
TransactionEssenceMinByteSize = serializer.TypeDenotationByteSize + serializer.UInt16ByteSize + serializer.UInt16ByteSize + serializer.PayloadLengthByteSize
2223

2324
// MaxInputsCount defines the maximum amount of inputs within a TransactionEssence.
2425
MaxInputsCount = 127
@@ -116,7 +117,7 @@ func (u *TransactionEssence) Deserialize(data []byte, deSeriMode serializer.DeSe
116117
Skip(serializer.SmallTypeDenotationByteSize, func(err error) error {
117118
return fmt.Errorf("unable to skip transaction essence ID during deserialization: %w", err)
118119
}).
119-
ReadSliceOfObjects(func(seri serializer.Serializables) { u.Inputs = seri }, deSeriMode, serializer.TypeDenotationByte, func(ty uint32) (serializer.Serializable, error) {
120+
ReadSliceOfObjects(func(seri serializer.Serializables) { u.Inputs = seri }, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, serializer.TypeDenotationByte, func(ty uint32) (serializer.Serializable, error) {
120121
switch ty {
121122
case uint32(InputUTXO):
122123
default:
@@ -134,7 +135,7 @@ func (u *TransactionEssence) Deserialize(data []byte, deSeriMode serializer.DeSe
134135
}
135136
return nil
136137
}).
137-
ReadSliceOfObjects(func(seri serializer.Serializables) { u.Outputs = seri }, deSeriMode, serializer.TypeDenotationByte, func(ty uint32) (serializer.Serializable, error) {
138+
ReadSliceOfObjects(func(seri serializer.Serializables) { u.Outputs = seri }, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, serializer.TypeDenotationByte, func(ty uint32) (serializer.Serializable, error) {
138139
switch ty {
139140
case uint32(OutputSigLockedSingleOutput):
140141
case uint32(OutputSigLockedDustAllowanceOutput):
@@ -223,10 +224,10 @@ func (u *TransactionEssence) Serialize(deSeriMode serializer.DeSerializationMode
223224
WriteNum(TransactionEssenceNormal, func(err error) error {
224225
return fmt.Errorf("unable to serialize transaction essence type ID: %w", err)
225226
}).
226-
WriteSliceOfObjects(u.Inputs, deSeriMode, inputsWrittenConsumer, func(err error) error {
227+
WriteSliceOfObjects(u.Inputs, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, inputsWrittenConsumer, func(err error) error {
227228
return fmt.Errorf("unable to serialize transaction essence inputs: %w", err)
228229
}).
229-
WriteSliceOfObjects(u.Outputs, deSeriMode, outputsWrittenConsumer, func(err error) error {
230+
WriteSliceOfObjects(u.Outputs, deSeriMode, serializer.SeriLengthPrefixTypeAsUint16, outputsWrittenConsumer, func(err error) error {
230231
return fmt.Errorf("unable to serialize transaction essence outputs: %w", err)
231232
}).
232233
WritePayload(u.Payload, deSeriMode, func(err error) error {

0 commit comments

Comments
 (0)