bcabe7b3b5
Method numbers never change anyways. At worst, we'll deprecate old methods and have to explicitly import them from the correct actors version to use them.
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package account
|
|
|
|
import (
|
|
"golang.org/x/xerrors"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/go-state-types/cbor"
|
|
"github.com/ipfs/go-cid"
|
|
|
|
"github.com/filecoin-project/lotus/chain/actors/adt"
|
|
"github.com/filecoin-project/lotus/chain/actors/builtin"
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
|
|
builtin0 "github.com/filecoin-project/specs-actors/actors/builtin"
|
|
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin"
|
|
)
|
|
|
|
func init() {
|
|
builtin.RegisterActorState(builtin0.AccountActorCodeID, func(store adt.Store, root cid.Cid) (cbor.Marshaler, error) {
|
|
return load0(store, root)
|
|
})
|
|
builtin.RegisterActorState(builtin2.AccountActorCodeID, func(store adt.Store, root cid.Cid) (cbor.Marshaler, error) {
|
|
return load2(store, root)
|
|
})
|
|
}
|
|
|
|
var Methods = builtin2.MethodsAccount
|
|
|
|
func Load(store adt.Store, act *types.Actor) (State, error) {
|
|
switch act.Code {
|
|
case builtin0.AccountActorCodeID:
|
|
return load0(store, act.Head)
|
|
case builtin2.AccountActorCodeID:
|
|
return load2(store, act.Head)
|
|
}
|
|
return nil, xerrors.Errorf("unknown actor code %s", act.Code)
|
|
}
|
|
|
|
type State interface {
|
|
cbor.Marshaler
|
|
|
|
PubkeyAddress() (address.Address, error)
|
|
}
|