package reward import ( "github.com/ipfs/go-cid" actorstypes "github.com/filecoin-project/go-state-types/actors" "github.com/filecoin-project/go-state-types/abi" reward0 "github.com/filecoin-project/specs-actors/actors/builtin/reward" "github.com/filecoin-project/lotus/chain/actors" "golang.org/x/xerrors" "github.com/filecoin-project/go-state-types/cbor" {{range .versions}} {{if (le . 7)}} builtin{{.}} "github.com/filecoin-project/specs-actors{{import .}}actors/builtin" {{end}} {{end}} builtin{{.latestVersion}} "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/lotus/chain/actors/adt" "github.com/filecoin-project/lotus/chain/actors/builtin" "github.com/filecoin-project/lotus/chain/types" ) var ( Address = builtin{{.latestVersion}}.RewardActorAddr Methods = builtin{{.latestVersion}}.MethodsReward ) func Load(store adt.Store, act *types.Actor) (State, error) { if name, av, ok := actors.GetActorMetaByCode(act.Code); ok { if name != actors.RewardKey { return nil, xerrors.Errorf("actor code is not reward: %s", name) } switch av { {{range .versions}} {{if (ge . 8)}} case actorstypes.Version{{.}}: return load{{.}}(store, act.Head) {{end}} {{end}} } } switch act.Code { {{range .versions}} {{if (le . 7)}} case builtin{{.}}.RewardActorCodeID: return load{{.}}(store, act.Head) {{end}} {{end}} } return nil, xerrors.Errorf("unknown actor code %s", act.Code) } func MakeState(store adt.Store, av actorstypes.Version, currRealizedPower abi.StoragePower) (State, error) { switch av { {{range .versions}} case actorstypes.Version{{.}}: return make{{.}}(store, currRealizedPower) {{end}} } return nil, xerrors.Errorf("unknown actor version %d", av) } type State interface { cbor.Marshaler Code() cid.Cid ActorKey() string ActorVersion() actorstypes.Version ThisEpochBaselinePower() (abi.StoragePower, error) ThisEpochReward() (abi.StoragePower, error) ThisEpochRewardSmoothed() (builtin.FilterEstimate, error) EffectiveBaselinePower() (abi.StoragePower, error) EffectiveNetworkTime() (abi.ChainEpoch, error) TotalStoragePowerReward() (abi.TokenAmount, error) CumsumBaseline() (abi.StoragePower, error) CumsumRealized() (abi.StoragePower, error) InitialPledgeForPower(abi.StoragePower, abi.TokenAmount, *builtin.FilterEstimate, abi.TokenAmount) (abi.TokenAmount, error) PreCommitDepositForPower(builtin.FilterEstimate, abi.StoragePower) (abi.TokenAmount, error) GetState() interface{} } type AwardBlockRewardParams = reward0.AwardBlockRewardParams func AllCodes() []cid.Cid { return []cid.Cid{ {{range .versions}} (&state{{.}}{}).Code(), {{- end}} } }