github.com/filecoin-project/specs-actors/v4@v4.0.2/support/ipld/cbor.go (about) 1 package ipld 2 3 import ( 4 "bytes" 5 6 "github.com/filecoin-project/go-state-types/abi" 7 "github.com/filecoin-project/go-state-types/cbor" 8 "github.com/ipfs/go-cid" 9 ) 10 11 // Marshals an object to bytes for storing in state. 12 func MarshalCBOR(o cbor.Marshaler) (cid.Cid, []byte, error) { 13 r := bytes.Buffer{} 14 err := o.MarshalCBOR(&r) 15 if err != nil { 16 return cid.Undef, nil, err 17 } 18 data := r.Bytes() 19 key, err := abi.CidBuilder.Sum(data) 20 if err != nil { 21 return cid.Undef, nil, err 22 } 23 return key, data, nil 24 }