@@ -248,38 +248,45 @@ type BlockIdExt struct {
248
248
}
249
249
250
250
// 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 ]
255
254
// 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 ]
262
264
type ValueFlow struct {
263
- Magic Magic `tlb:"value_flow#b8e48dfb" json:"-"`
265
+ Magic Magic `json:"-"`
264
266
FromPrevBlk CurrencyCollection
265
267
ToNextBlk CurrencyCollection
266
268
Imported CurrencyCollection
267
269
Exported CurrencyCollection
268
270
FeesCollected CurrencyCollection
271
+ Burned * CurrencyCollection
269
272
FeesImported CurrencyCollection
270
273
Recovered CurrencyCollection
271
274
Created CurrencyCollection
272
275
Minted CurrencyCollection
273
276
}
274
277
278
+ const valueFlowV1 = 0xb8e48dfb
279
+ const valueFlowV2 = 0x3ebf98b7
280
+
275
281
func (m * ValueFlow ) UnmarshalTLB (c * boc.Cell , decoder * Decoder ) error {
276
282
sumType , err := c .ReadUint (32 )
277
283
if err != nil {
278
284
return err
279
285
}
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 )
282
288
}
289
+ m .Magic = Magic (sumType )
283
290
firstGroup , err := c .NextRef ()
284
291
if err != nil {
285
292
return err
@@ -304,6 +311,13 @@ func (m *ValueFlow) UnmarshalTLB(c *boc.Cell, decoder *Decoder) error {
304
311
if err != nil {
305
312
return err
306
313
}
314
+ if sumType == valueFlowV2 {
315
+ m .Burned = & CurrencyCollection {}
316
+ err = decoder .Unmarshal (c , & m .Burned )
317
+ if err != nil {
318
+ return err
319
+ }
320
+ }
307
321
secondGroup , err := c .NextRef ()
308
322
if err != nil {
309
323
return err
0 commit comments