cbor gen types and cleaning up after
This commit is contained in:
parent
b5bd1820d9
commit
1f1bbc9b8d
@ -207,13 +207,13 @@ func (ias *InitActorState) AddActor(cst *hamt.CborIpldStore, addr address.Addres
|
||||
func (ias *InitActorState) Lookup(cst *hamt.CborIpldStore, addr address.Address) (address.Address, error) {
|
||||
amap, err := hamt.LoadNode(context.TODO(), cst, ias.AddressMap)
|
||||
if err != nil {
|
||||
return address.Undef, err
|
||||
return address.Undef, xerrors.Errorf("ias lookup failed loading hamt node: %w", err)
|
||||
}
|
||||
|
||||
var val interface{}
|
||||
err = amap.Find(context.TODO(), string(addr.Bytes()), &val)
|
||||
if err != nil {
|
||||
return address.Undef, err
|
||||
return address.Undef, xerrors.Errorf("ias lookup failed to do lookup: %w", err)
|
||||
}
|
||||
|
||||
ival, ok := val.(uint64)
|
||||
|
@ -1,11 +1,15 @@
|
||||
package actors
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/filecoin-project/go-lotus/build"
|
||||
"github.com/filecoin-project/go-lotus/chain/actors/aerrors"
|
||||
"github.com/filecoin-project/go-lotus/chain/address"
|
||||
"github.com/filecoin-project/go-lotus/chain/types"
|
||||
|
||||
cid "github.com/ipfs/go-cid"
|
||||
hamt "github.com/ipfs/go-hamt-ipld"
|
||||
cbor "github.com/ipfs/go-ipld-cbor"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
)
|
||||
@ -46,7 +50,7 @@ func (sma StorageMarketActor) Exports() []interface{} {
|
||||
}
|
||||
|
||||
type StorageMarketState struct {
|
||||
Miners map[address.Address]struct{}
|
||||
Miners cid.Cid
|
||||
TotalStorage types.BigInt
|
||||
}
|
||||
|
||||
@ -88,7 +92,11 @@ func (sma StorageMarketActor) CreateStorageMiner(act *types.Actor, vmctx types.V
|
||||
return nil, err
|
||||
}
|
||||
|
||||
self.Miners[naddr] = struct{}{}
|
||||
ncid, err := MinerSetAdd(context.TODO(), vmctx, self.Miners, naddr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
self.Miners = ncid
|
||||
|
||||
nroot, err := vmctx.Storage().Put(self)
|
||||
if err != nil {
|
||||
@ -120,8 +128,12 @@ func (sma StorageMarketActor) UpdateStorage(act *types.Actor, vmctx types.VMCont
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, ok := self.Miners[vmctx.Message().From]
|
||||
if !ok {
|
||||
has, err := MinerSetHas(context.TODO(), vmctx, self.Miners, vmctx.Message().From)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !has {
|
||||
return nil, aerrors.New(1, "update storage must only be called by a miner actor")
|
||||
}
|
||||
|
||||
@ -158,7 +170,12 @@ func (sma StorageMarketActor) PowerLookup(act *types.Actor, vmctx types.VMContex
|
||||
return nil, aerrors.Wrap(err, "getting head")
|
||||
}
|
||||
|
||||
if _, ok := self.Miners[params.Miner]; !ok {
|
||||
has, err := MinerSetHas(context.TODO(), vmctx, self.Miners, params.Miner)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !has {
|
||||
return nil, aerrors.New(1, "miner not registered with storage market")
|
||||
}
|
||||
|
||||
@ -179,10 +196,54 @@ func (sma StorageMarketActor) IsMiner(act *types.Actor, vmctx types.VMContext, p
|
||||
if err := vmctx.Storage().Get(vmctx.Storage().GetHead(), &self); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, ok := self.Miners[param.Addr]
|
||||
out, err := SerializeParams(ok)
|
||||
|
||||
has, err := MinerSetHas(context.TODO(), vmctx, self.Miners, param.Addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out, err := SerializeParams(has)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func MinerSetHas(ctx context.Context, vmctx types.VMContext, rcid cid.Cid, maddr address.Address) (bool, aerrors.ActorError) {
|
||||
nd, err := hamt.LoadNode(context.TODO(), vmctx.Ipld(), rcid)
|
||||
if err != nil {
|
||||
return false, aerrors.Escalate(err, "failed to load miner set")
|
||||
}
|
||||
|
||||
_, err = nd.Find(context.TODO(), string(maddr.Bytes()))
|
||||
switch err {
|
||||
case hamt.ErrNotFound:
|
||||
return false, nil
|
||||
case nil:
|
||||
return true, nil
|
||||
default:
|
||||
return false, aerrors.Escalate(err, "failed to do set lookup")
|
||||
}
|
||||
}
|
||||
|
||||
func MinerSetAdd(ctx context.Context, vmctx types.VMContext, rcid cid.Cid, maddr address.Address) (cid.Cid, aerrors.ActorError) {
|
||||
nd, err := hamt.LoadNode(ctx, vmctx.Ipld(), rcid)
|
||||
if err != nil {
|
||||
return cid.Undef, aerrors.Escalate(err, "failed to load miner set")
|
||||
}
|
||||
|
||||
if err := nd.Set(ctx, string(maddr.Bytes()), uint64(1)); err != nil {
|
||||
return cid.Undef, aerrors.Escalate(err, "adding miner address to set failed")
|
||||
}
|
||||
|
||||
if err := nd.Flush(ctx); err != nil {
|
||||
return cid.Undef, aerrors.Escalate(err, "failed to flush miner set")
|
||||
}
|
||||
|
||||
c, err := vmctx.Ipld().Put(ctx, nd)
|
||||
if err != nil {
|
||||
return cid.Undef, aerrors.Escalate(err, "failed to persist miner set to storage")
|
||||
}
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package actors_test
|
||||
|
||||
import (
|
||||
"github.com/filecoin-project/go-lotus/build"
|
||||
"testing"
|
||||
|
||||
"github.com/filecoin-project/go-lotus/build"
|
||||
|
||||
. "github.com/filecoin-project/go-lotus/chain/actors"
|
||||
"github.com/filecoin-project/go-lotus/chain/address"
|
||||
"github.com/filecoin-project/go-lotus/chain/types"
|
||||
|
2244
chain/actors/cbor_gen.go
Normal file
2244
chain/actors/cbor_gen.go
Normal file
File diff suppressed because it is too large
Load Diff
@ -54,6 +54,8 @@ func SetupInitActor(bs bstore.Blockstore, addrs []address.Address) (*types.Actor
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fmt.Println("INIT ACTOR HEAD: ", statecid)
|
||||
|
||||
act := &types.Actor{
|
||||
Code: actors.InitActorCodeCid,
|
||||
Head: statecid,
|
||||
@ -66,12 +68,12 @@ func MakeInitialStateTree(bs bstore.Blockstore, actmap map[address.Address]types
|
||||
cst := hamt.CSTFromBstore(bs)
|
||||
state, err := state.NewStateTree(cst)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("making new state tree: %w", err)
|
||||
}
|
||||
|
||||
emptyobject, err := cst.Put(context.TODO(), map[string]string{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("failed putting empty object: %w", err)
|
||||
}
|
||||
|
||||
var addrs []address.Address
|
||||
@ -81,20 +83,20 @@ func MakeInitialStateTree(bs bstore.Blockstore, actmap map[address.Address]types
|
||||
|
||||
initact, err := SetupInitActor(bs, addrs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("setup init actor: %w", err)
|
||||
}
|
||||
|
||||
if err := state.SetActor(actors.InitActorAddress, initact); err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("set init actor: %w", err)
|
||||
}
|
||||
|
||||
smact, err := SetupStorageMarketActor(bs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("setup storage market actor: %w", err)
|
||||
}
|
||||
|
||||
if err := state.SetActor(actors.StorageMarketAddress, smact); err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("set storage market actor: %w", err)
|
||||
}
|
||||
|
||||
err = state.SetActor(actors.NetworkAddress, &types.Actor{
|
||||
@ -103,7 +105,7 @@ func MakeInitialStateTree(bs bstore.Blockstore, actmap map[address.Address]types
|
||||
Head: emptyobject,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("set network account actor: %w", err)
|
||||
}
|
||||
|
||||
for a, v := range actmap {
|
||||
@ -113,7 +115,7 @@ func MakeInitialStateTree(bs bstore.Blockstore, actmap map[address.Address]types
|
||||
Head: emptyobject,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, xerrors.Errorf("setting account from actmap: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,12 +123,19 @@ func MakeInitialStateTree(bs bstore.Blockstore, actmap map[address.Address]types
|
||||
}
|
||||
|
||||
func SetupStorageMarketActor(bs bstore.Blockstore) (*types.Actor, error) {
|
||||
cst := hamt.CSTFromBstore(bs)
|
||||
nd := hamt.NewNode(cst)
|
||||
emptyhamt, err := cst.Put(context.TODO(), nd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sms := &actors.StorageMarketState{
|
||||
Miners: make(map[address.Address]struct{}),
|
||||
Miners: emptyhamt,
|
||||
TotalStorage: types.NewInt(0),
|
||||
}
|
||||
|
||||
stcid, err := hamt.CSTFromBstore(bs).Put(context.TODO(), sms)
|
||||
stcid, err := cst.Put(context.TODO(), sms)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
hamt "github.com/ipfs/go-hamt-ipld"
|
||||
cbor "github.com/ipfs/go-ipld-cbor"
|
||||
logging "github.com/ipfs/go-log"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||
"github.com/filecoin-project/go-lotus/chain/address"
|
||||
@ -50,7 +51,7 @@ func (st *StateTree) SetActor(addr address.Address, act *types.Actor) error {
|
||||
if addr.Protocol() != address.ID {
|
||||
iaddr, err := st.lookupID(addr)
|
||||
if err != nil {
|
||||
return err
|
||||
return xerrors.Errorf("ID lookup failed: %w", err)
|
||||
}
|
||||
addr = iaddr
|
||||
}
|
||||
@ -60,6 +61,8 @@ func (st *StateTree) SetActor(addr address.Address, act *types.Actor) error {
|
||||
if act == cact {
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
st.actorcache[addr] = act
|
||||
}
|
||||
|
||||
return st.root.Set(context.TODO(), string(addr.Bytes()), act)
|
||||
@ -68,12 +71,12 @@ func (st *StateTree) SetActor(addr address.Address, act *types.Actor) error {
|
||||
func (st *StateTree) lookupID(addr address.Address) (address.Address, error) {
|
||||
act, err := st.GetActor(actors.InitActorAddress)
|
||||
if err != nil {
|
||||
return address.Undef, err
|
||||
return address.Undef, xerrors.Errorf("getting init actor: %w", err)
|
||||
}
|
||||
|
||||
var ias actors.InitActorState
|
||||
if err := st.Store.Get(context.TODO(), act.Head, &ias); err != nil {
|
||||
return address.Undef, err
|
||||
return address.Undef, xerrors.Errorf("loading init actor state: %w", err)
|
||||
}
|
||||
|
||||
return ias.Lookup(st.Store, addr)
|
||||
|
@ -23,7 +23,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Tickets ([]*types.Ticket)
|
||||
// t.t.Tickets ([]*Ticket)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Tickets)))); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -51,7 +51,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
||||
}
|
||||
}
|
||||
|
||||
// t.t.ParentWeight (types.BigInt)
|
||||
// t.t.ParentWeight (BigInt)
|
||||
if err := t.ParentWeight.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -71,7 +71,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
||||
return xerrors.Errorf("failed to write cid field t.Messages: %w", err)
|
||||
}
|
||||
|
||||
// t.t.BLSAggregate (types.Signature)
|
||||
// t.t.BLSAggregate (Signature)
|
||||
if err := t.BLSAggregate.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -86,7 +86,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.BlockSig (types.Signature)
|
||||
// t.t.BlockSig (Signature)
|
||||
if err := t.BlockSig.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -112,7 +112,7 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
||||
if err := t.Miner.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.Tickets ([]*types.Ticket)
|
||||
// t.t.Tickets ([]*Ticket)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
@ -179,7 +179,7 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
||||
t.Parents[i] = c
|
||||
}
|
||||
|
||||
// t.t.ParentWeight (types.BigInt)
|
||||
// t.t.ParentWeight (BigInt)
|
||||
|
||||
if err := t.ParentWeight.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
@ -212,7 +212,7 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
||||
}
|
||||
t.Messages = c
|
||||
}
|
||||
// t.t.BLSAggregate (types.Signature)
|
||||
// t.t.BLSAggregate (Signature)
|
||||
|
||||
if err := t.BLSAggregate.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
@ -236,7 +236,7 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Timestamp = extra
|
||||
// t.t.BlockSig (types.Signature)
|
||||
// t.t.BlockSig (Signature)
|
||||
|
||||
if err := t.BlockSig.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
@ -363,17 +363,17 @@ func (t *Message) MarshalCBOR(w io.Writer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Value (types.BigInt)
|
||||
// t.t.Value (BigInt)
|
||||
if err := t.Value.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.GasPrice (types.BigInt)
|
||||
// t.t.GasPrice (BigInt)
|
||||
if err := t.GasPrice.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.GasLimit (types.BigInt)
|
||||
// t.t.GasLimit (BigInt)
|
||||
if err := t.GasLimit.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -427,17 +427,17 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Nonce = extra
|
||||
// t.t.Value (types.BigInt)
|
||||
// t.t.Value (BigInt)
|
||||
|
||||
if err := t.Value.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.GasPrice (types.BigInt)
|
||||
// t.t.GasPrice (BigInt)
|
||||
|
||||
if err := t.GasPrice.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.GasLimit (types.BigInt)
|
||||
// t.t.GasLimit (BigInt)
|
||||
|
||||
if err := t.GasLimit.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
@ -477,12 +477,12 @@ func (t *SignedMessage) MarshalCBOR(w io.Writer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Message (types.Message)
|
||||
// t.t.Message (Message)
|
||||
if err := t.Message.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Signature (types.Signature)
|
||||
// t.t.Signature (Signature)
|
||||
if err := t.Signature.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -503,12 +503,12 @@ func (t *SignedMessage) UnmarshalCBOR(br io.Reader) error {
|
||||
return fmt.Errorf("cbor input had wrong number of fields")
|
||||
}
|
||||
|
||||
// t.t.Message (types.Message)
|
||||
// t.t.Message (Message)
|
||||
|
||||
if err := t.Message.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.Signature (types.Signature)
|
||||
// t.t.Signature (Signature)
|
||||
|
||||
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
@ -567,3 +567,309 @@ func (t *MsgMeta) UnmarshalCBOR(br io.Reader) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
||||
if _, err := w.Write([]byte{137}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.TimeLock (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.TimeLock)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.SecretPreimage ([]uint8)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(t.SecretPreimage)))); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := w.Write(t.SecretPreimage); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Extra (ModVerifyParams)
|
||||
if err := t.Extra.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Lane (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Lane)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Nonce (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Nonce)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Amount (BigInt)
|
||||
if err := t.Amount.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.MinCloseHeight (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.MinCloseHeight)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Merges ([]Merge)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Merges)))); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range t.Merges {
|
||||
if err := v.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// t.t.Signature (Signature)
|
||||
if err := t.Signature.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
||||
|
||||
maj, extra, err := cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajArray {
|
||||
return fmt.Errorf("cbor input should be of type array")
|
||||
}
|
||||
|
||||
if extra != 9 {
|
||||
return fmt.Errorf("cbor input had wrong number of fields")
|
||||
}
|
||||
|
||||
// t.t.TimeLock (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.TimeLock = extra
|
||||
// t.t.SecretPreimage ([]uint8)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if extra > 8192 {
|
||||
return fmt.Errorf("array too large")
|
||||
}
|
||||
|
||||
if maj != cbg.MajByteString {
|
||||
return fmt.Errorf("expected byte array")
|
||||
}
|
||||
t.SecretPreimage = make([]byte, extra)
|
||||
if _, err := io.ReadFull(br, t.SecretPreimage); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.Extra (ModVerifyParams)
|
||||
|
||||
t.Extra = new(ModVerifyParams)
|
||||
|
||||
if err := t.Extra.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.Lane (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Lane = extra
|
||||
// t.t.Nonce (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Nonce = extra
|
||||
// t.t.Amount (BigInt)
|
||||
|
||||
if err := t.Amount.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.MinCloseHeight (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.MinCloseHeight = extra
|
||||
// t.t.Merges ([]Merge)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if extra > 8192 {
|
||||
return fmt.Errorf("array too large")
|
||||
}
|
||||
|
||||
if maj != cbg.MajArray {
|
||||
return fmt.Errorf("expected cbor array")
|
||||
}
|
||||
if extra > 0 {
|
||||
t.Merges = make([]Merge, extra)
|
||||
}
|
||||
for i := 0; i < int(extra); i++ {
|
||||
var v Merge
|
||||
if err := v.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
t.Merges[i] = v
|
||||
}
|
||||
|
||||
// t.t.Signature (Signature)
|
||||
|
||||
t.Signature = new(Signature)
|
||||
|
||||
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
|
||||
if _, err := w.Write([]byte{131}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Actor (address.Address)
|
||||
if err := t.Actor.MarshalCBOR(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Method (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Method)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Data ([]uint8)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(t.Data)))); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := w.Write(t.Data); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
|
||||
|
||||
maj, extra, err := cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajArray {
|
||||
return fmt.Errorf("cbor input should be of type array")
|
||||
}
|
||||
|
||||
if extra != 3 {
|
||||
return fmt.Errorf("cbor input had wrong number of fields")
|
||||
}
|
||||
|
||||
// t.t.Actor (address.Address)
|
||||
|
||||
if err := t.Actor.UnmarshalCBOR(br); err != nil {
|
||||
return err
|
||||
}
|
||||
// t.t.Method (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Method = extra
|
||||
// t.t.Data ([]uint8)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if extra > 8192 {
|
||||
return fmt.Errorf("array too large")
|
||||
}
|
||||
|
||||
if maj != cbg.MajByteString {
|
||||
return fmt.Errorf("expected byte array")
|
||||
}
|
||||
t.Data = make([]byte, extra)
|
||||
if _, err := io.ReadFull(br, t.Data); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *Merge) MarshalCBOR(w io.Writer) error {
|
||||
if _, err := w.Write([]byte{130}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Lane (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Lane)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// t.t.Nonce (uint64)
|
||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, t.Nonce)); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *Merge) UnmarshalCBOR(br io.Reader) error {
|
||||
|
||||
maj, extra, err := cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajArray {
|
||||
return fmt.Errorf("cbor input should be of type array")
|
||||
}
|
||||
|
||||
if extra != 2 {
|
||||
return fmt.Errorf("cbor input had wrong number of fields")
|
||||
}
|
||||
|
||||
// t.t.Lane (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Lane = extra
|
||||
// t.t.Nonce (uint64)
|
||||
|
||||
maj, extra, err = cbg.CborReadHeader(br)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if maj != cbg.MajUnsignedInt {
|
||||
return fmt.Errorf("wrong type for uint64 field")
|
||||
}
|
||||
t.Nonce = extra
|
||||
return nil
|
||||
}
|
||||
|
155
gen/main.go
155
gen/main.go
@ -4,122 +4,75 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/filecoin-project/go-lotus/chain"
|
||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||
"github.com/filecoin-project/go-lotus/chain/types"
|
||||
gen "github.com/whyrusleeping/cbor-gen"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if false {
|
||||
fi, err := os.Create("./chain/types/cbor_gen.go")
|
||||
if err != nil {
|
||||
fmt.Println("failed to open file: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer fi.Close()
|
||||
|
||||
if err := gen.PrintHeaderAndUtilityMethods(fi, "types"); err != nil {
|
||||
fmt.Println("failed to write header: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
types := []interface{}{
|
||||
types.BlockHeader{},
|
||||
types.Ticket{},
|
||||
types.Message{},
|
||||
types.SignedMessage{},
|
||||
types.MsgMeta{},
|
||||
}
|
||||
|
||||
for _, t := range types {
|
||||
if err := gen.GenTupleEncodersForType(t, fi); err != nil {
|
||||
fmt.Println("failed to generate encoders: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
err := gen.WriteTupleEncodersToFile("./chain/types/cbor_gen.go", "types",
|
||||
types.BlockHeader{},
|
||||
types.Ticket{},
|
||||
types.Message{},
|
||||
types.SignedMessage{},
|
||||
types.MsgMeta{},
|
||||
types.SignedVoucher{},
|
||||
types.ModVerifyParams{},
|
||||
types.Merge{},
|
||||
)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if false {
|
||||
fi, err := os.Create("./chain/cbor_gen.go")
|
||||
if err != nil {
|
||||
fmt.Println("failed to open file: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer fi.Close()
|
||||
|
||||
if err := gen.PrintHeaderAndUtilityMethods(fi, "chain"); err != nil {
|
||||
fmt.Println("failed to write header: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
types := []interface{}{
|
||||
/*
|
||||
err = gen.WriteTupleEncodersToFile("./chain/cbor_gen.go", "chain",
|
||||
chain.BlockSyncRequest{},
|
||||
chain.BlockSyncResponse{},
|
||||
chain.BSTipSet{},
|
||||
chain.BlockMsg{},
|
||||
}
|
||||
|
||||
for _, t := range types {
|
||||
if err := gen.GenTupleEncodersForType(t, fi); err != nil {
|
||||
fmt.Println("failed to generate encoders: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
fi, err := os.Create("./chain/actors/cbor_gen.go")
|
||||
)
|
||||
if err != nil {
|
||||
fmt.Println("failed to open file: ", err)
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer fi.Close()
|
||||
*/
|
||||
|
||||
if err := gen.PrintHeaderAndUtilityMethods(fi, "actors"); err != nil {
|
||||
fmt.Println("failed to write header: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
types := []interface{}{
|
||||
actors.InitActorState{},
|
||||
actors.ExecParams{},
|
||||
actors.AccountActorState{},
|
||||
actors.StorageMinerActorState{},
|
||||
actors.StorageMinerConstructorParams{},
|
||||
actors.CommitSectorParams{},
|
||||
actors.MinerInfo{},
|
||||
actors.SubmitPoStParams{},
|
||||
actors.PieceInclVoucherData{},
|
||||
actors.InclusionProof{},
|
||||
actors.PaymentVerifyParams{},
|
||||
actors.UpdatePeerIDParams{},
|
||||
actors.MultiSigActorState{},
|
||||
actors.MultiSigConstructorParams{},
|
||||
actors.MultiSigProposeParams{},
|
||||
actors.MultiSigTxID{},
|
||||
actors.MultiSigSwapSignerParams{},
|
||||
actors.MultiSigChangeReqParams{},
|
||||
actors.MTransaction{},
|
||||
actors.MultiSigRemoveSignerParam{},
|
||||
actors.MultiSigAddSignerParam{},
|
||||
actors.PaymentChannelActorState{},
|
||||
actors.PCAConstructorParams{},
|
||||
actors.LaneState{},
|
||||
actors.PCAUpdateChannelStateParams{},
|
||||
actors.PaymentInfo{},
|
||||
actors.StorageMarketState{},
|
||||
actors.CreateStorageMinerParams{},
|
||||
actors.IsMinerParam{},
|
||||
actors.PowerLookupParams{},
|
||||
actors.UpdateStorageParams{},
|
||||
}
|
||||
|
||||
for _, t := range types {
|
||||
if err := gen.GenTupleEncodersForType(t, fi); err != nil {
|
||||
fmt.Println("failed to generate encoders: ", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
err = gen.WriteTupleEncodersToFile("./chain/actors/cbor_gen.go", "actors",
|
||||
actors.InitActorState{},
|
||||
actors.ExecParams{},
|
||||
actors.AccountActorState{},
|
||||
actors.StorageMinerActorState{},
|
||||
actors.StorageMinerConstructorParams{},
|
||||
actors.CommitSectorParams{},
|
||||
actors.MinerInfo{},
|
||||
actors.SubmitPoStParams{},
|
||||
actors.PieceInclVoucherData{},
|
||||
actors.InclusionProof{},
|
||||
actors.PaymentVerifyParams{},
|
||||
actors.UpdatePeerIDParams{},
|
||||
actors.MultiSigActorState{},
|
||||
actors.MultiSigConstructorParams{},
|
||||
actors.MultiSigProposeParams{},
|
||||
actors.MultiSigTxID{},
|
||||
actors.MultiSigSwapSignerParams{},
|
||||
actors.MultiSigChangeReqParams{},
|
||||
actors.MTransaction{},
|
||||
actors.MultiSigRemoveSignerParam{},
|
||||
actors.MultiSigAddSignerParam{},
|
||||
actors.PaymentChannelActorState{},
|
||||
actors.PCAConstructorParams{},
|
||||
actors.LaneState{},
|
||||
actors.PCAUpdateChannelStateParams{},
|
||||
actors.PaymentInfo{},
|
||||
actors.StorageMarketState{},
|
||||
actors.CreateStorageMinerParams{},
|
||||
actors.IsMinerParam{},
|
||||
actors.PowerLookupParams{},
|
||||
actors.UpdateStorageParams{},
|
||||
)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
2
go.mod
2
go.mod
@ -67,7 +67,7 @@ require (
|
||||
github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a
|
||||
github.com/stretchr/testify v1.4.0
|
||||
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909033959-82a1eed23149
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909233408-ae6265959798
|
||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
||||
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
|
||||
github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33
|
||||
|
6
go.sum
6
go.sum
@ -524,6 +524,12 @@ github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba/go.mod h1:CH
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190822231004-8db835b09a5a/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909033959-82a1eed23149 h1:0+oDY3qttEYo7chvV/vZT4KgsuThmTtrQox02G/9tCU=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909033959-82a1eed23149/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909204532-f582bfb50ea1 h1:WFo4d2jTbs6ZyNXpGg6iUgdSu1an8ur6owByKSfny+Y=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909204532-f582bfb50ea1/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909232404-de20c470a082 h1:Wh1HyuazKfGc2IOw0o6p0F8Li9VwWcO0/gSO699Y3qI=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909232404-de20c470a082/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909233408-ae6265959798 h1:4j/w+x60KmMsRwRavx3cxDgdV0iCRVoNCizhiAo2vF8=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190909233408-ae6265959798/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
|
||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
|
||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
|
||||
|
Loading…
Reference in New Issue
Block a user