lotus/chain/actors/builtin/verifreg/actor.go.template

77 lines
2.2 KiB
Plaintext
Raw Normal View History

package verifreg
import (
"golang.org/x/xerrors"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/cbor"
{{range .versions}}
2022-04-20 21:34:28 +00:00
{{if (le . 7)}}
builtin{{.}} "github.com/filecoin-project/specs-actors{{import .}}actors/builtin"
{{else}}
builtin{{.}} "github.com/filecoin-project/go-state-types/builtin"
{{end}}
2021-04-30 15:51:24 +00:00
{{end}}
"github.com/filecoin-project/lotus/chain/actors/adt"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/types"
)
var (
Address = builtin{{.latestVersion}}.VerifiedRegistryActorAddr
Methods = builtin{{.latestVersion}}.MethodsVerifiedRegistry
)
func Load(store adt.Store, act *types.Actor) (State, error) {
2022-04-04 11:23:13 +00:00
if name, av, ok := actors.GetActorMetaByCode(act.Code); ok {
2022-04-20 21:34:28 +00:00
if name != actors.VerifregKey {
return nil, xerrors.Errorf("actor code is not verifreg: %s", name)
2022-04-04 11:23:13 +00:00
}
switch av {
{{range .versions}}
2022-04-20 21:34:28 +00:00
{{if (ge . 8)}}
case actors.Version{{.}}:
return load{{.}}(store, act.Head)
{{end}}
2022-04-04 11:23:13 +00:00
{{end}}
}
}
switch act.Code {
2021-04-30 15:51:24 +00:00
{{range .versions}}
2022-04-20 21:34:28 +00:00
{{if (le . 7)}}
case builtin{{.}}.VerifiedRegistryActorCodeID:
return load{{.}}(store, act.Head)
{{end}}
2021-04-30 15:51:24 +00:00
{{end}}
}
2022-04-20 21:34:28 +00:00
return nil, xerrors.Errorf("unknown actor code %s", act.Code)
}
func MakeState(store adt.Store, av actors.Version, rootKeyAddress address.Address) (State, error) {
switch av {
{{range .versions}}
case actors.Version{{.}}:
return make{{.}}(store, rootKeyAddress)
{{end}}
}
return nil, xerrors.Errorf("unknown actor version %d", av)
}
type State interface {
cbor.Marshaler
RootKey() (address.Address, error)
VerifiedClientDataCap(address.Address) (bool, abi.StoragePower, error)
VerifierDataCap(address.Address) (bool, abi.StoragePower, error)
RemoveDataCapProposalID(verifier address.Address, client address.Address) (bool, uint64, error)
ForEachVerifier(func(addr address.Address, dcap abi.StoragePower) error) error
ForEachClient(func(addr address.Address, dcap abi.StoragePower) error) error
GetState() interface{}
}