Skip to content

Commit 21d48a5

Browse files
Support ValueFlow v2 with burned CurrencyCollection
1 parent ca8c2b6 commit 21d48a5

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

tlb/blocks.go

+27-13
Original file line numberDiff line numberDiff line change
@@ -248,38 +248,45 @@ type BlockIdExt struct {
248248
}
249249

250250
// ValueFlow
251-
// value_flow ^[ from_prev_blk:CurrencyCollection
252-
// to_next_blk:CurrencyCollection
253-
// imported:CurrencyCollection
254-
// exported:CurrencyCollection ]
251+
//
252+
// v1:
253+
// ^[ from_prev_blk:CurrencyCollection to_next_blk:CurrencyCollection imported:CurrencyCollection exported:CurrencyCollection ]
255254
// fees_collected:CurrencyCollection
256-
// ^[
257-
// fees_imported:CurrencyCollection
258-
// recovered:CurrencyCollection
259-
// created:CurrencyCollection
260-
// minted:CurrencyCollection
261-
// ] = ValueFlow;
255+
// ^[ fees_imported:CurrencyCollection recovered:CurrencyCollection created:CurrencyCollection minted:CurrencyCollection
256+
// ];
257+
//
258+
// v2:
259+
//
260+
// ^[ from_prev_blk:CurrencyCollection to_next_blk:CurrencyCollection imported:CurrencyCollection exported:CurrencyCollection ]
261+
// fees_collected: CurrencyCollection
262+
// burned: CurrencyCollection
263+
// ^[ fees_imported:CurrencyCollection recovered:CurrencyCollection created:CurrencyCollection minted:CurrencyCollection ]
262264
type ValueFlow struct {
263-
Magic Magic `tlb:"value_flow#b8e48dfb" json:"-"`
265+
Magic Magic `json:"-"`
264266
FromPrevBlk CurrencyCollection
265267
ToNextBlk CurrencyCollection
266268
Imported CurrencyCollection
267269
Exported CurrencyCollection
268270
FeesCollected CurrencyCollection
271+
Burned *CurrencyCollection
269272
FeesImported CurrencyCollection
270273
Recovered CurrencyCollection
271274
Created CurrencyCollection
272275
Minted CurrencyCollection
273276
}
274277

278+
const valueFlowV1 = 0xb8e48dfb
279+
const valueFlowV2 = 0x3ebf98b7
280+
275281
func (m *ValueFlow) UnmarshalTLB(c *boc.Cell, decoder *Decoder) error {
276282
sumType, err := c.ReadUint(32)
277283
if err != nil {
278284
return err
279285
}
280-
if sumType != 0xb8e48dfb {
281-
return fmt.Errorf("invalid tag")
286+
if sumType != valueFlowV1 && sumType != valueFlowV2 {
287+
return fmt.Errorf("value flow invalid tag: %v", sumType)
282288
}
289+
m.Magic = Magic(sumType)
283290
firstGroup, err := c.NextRef()
284291
if err != nil {
285292
return err
@@ -304,6 +311,13 @@ func (m *ValueFlow) UnmarshalTLB(c *boc.Cell, decoder *Decoder) error {
304311
if err != nil {
305312
return err
306313
}
314+
if sumType == valueFlowV2 {
315+
m.Burned = &CurrencyCollection{}
316+
err = decoder.Unmarshal(c, &m.Burned)
317+
if err != nil {
318+
return err
319+
}
320+
}
307321
secondGroup, err := c.NextRef()
308322
if err != nil {
309323
return err

tlb/testdata/value-flow.expected.json

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"Grams": "8808391638",
2626
"Other": {}
2727
},
28+
"Burned": null,
2829
"FeesImported": {
2930
"Grams": "0",
3031
"Other": {}

0 commit comments

Comments
 (0)