toncenter / tvm_valuetypes

Collection of utils for handling The Open Network Virtual Machine value types
Other
9 stars 10 forks source link

Generating invalid BOC [refs] #8

Closed psylopunk closed 2 years ago

psylopunk commented 2 years ago
from tvm_valuetypes import Cell, deserialize_boc
from base64 import b64decode
cell = Cell()
cell.data.put_arbitrary_uint(1, 3)
cell.data.put_arbitrary_uint(2, 2)
cell.refs.append(
  deserialize_boc(b64decode('te6cckECDQEAAdAAART/APSkE/S88sgLAQIBYgIDAgLOBAUACaEfn+AFAgEgBgcCASALDALXDIhxwCSXwPg0NMDAXGwkl8D4PpA+kAx+gAxcdch+gAx+gAw8AIEs44UMGwiNFIyxwXy4ZUB+kDUMBAj8APgBtMf0z+CEF/MPRRSMLqOhzIQN14yQBPgMDQ0NTWCEC/LJqISuuMCXwSED/LwgCAkAET6RDBwuvLhTYAH2UTXHBfLhkfpAIfAB+kDSADH6AIIK+vCAG6EhlFMVoKHeItcLAcMAIJIGoZE24iDC//LhkiGOPoIQBRONkchQCc8WUAvPFnEkSRRURqBwgBDIywVQB88WUAX6AhXLahLLH8s/Im6zlFjPFwGRMuIByQH7ABBHlBAqN1viCgBycIIQi3cXNQXIy/9QBM8WECSAQHCAEMjLBVAHzxZQBfoCFctqEssfyz8ibrOUWM8XAZEy4gHJAfsAAIICjjUm8AGCENUydtsQN0QAbXFwgBDIywVQB88WUAX6AhXLahLLH8s/Im6zlFjPFwGRMuIByQH7AJMwMjTiVQLwAwA7O1E0NM/+kAg10nCAJp/AfpA1DAQJBAj4DBwWW1tgAB0A8jLP1jPFgHPFszJ7VSC/dQQb'))
  # NFT item code
)
boc = cell.serialize_boc()
deserialize_boc(boc)

deserialize_boc throws an error:

File "tvm_valuetypes/cell.py", line 372, in deserialize_boc
    assert absent_num == 0
AssertionError

Apparently there is some kind of error in serialization of a cell if it contains a reference to a cell with another link. Are there any possible solutions?

libtonlibjson decode result:

INVALID_BAG_OF_CELLS: initial_account_statecannot deserialize bag-of-cells: invalid header, error 0