Skip to content

Commit

Permalink
chore: update the actor versions (#1305)
Browse files Browse the repository at this point in the history
* chore: update the actor versions

* update the miner state mocks
  • Loading branch information
Terryhung authored Jun 27, 2024
1 parent e9907f5 commit 59aa115
Show file tree
Hide file tree
Showing 20 changed files with 1,992 additions and 38 deletions.
14 changes: 11 additions & 3 deletions chain/actors/builtin/datacap/datacap.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
builtin13 "github.com/filecoin-project/go-state-types/builtin"
builtin14 "github.com/filecoin-project/go-state-types/builtin"
"github.com/filecoin-project/go-state-types/cbor"
"github.com/filecoin-project/go-state-types/manifest"

Expand All @@ -17,8 +17,8 @@ import (
)

var (
Address = builtin13.DatacapActorAddr
Methods = builtin13.MethodsDatacap
Address = builtin14.DatacapActorAddr
Methods = builtin14.MethodsDatacap
)

func Load(store adt.Store, act *types.Actor) (State, error) {
Expand All @@ -44,6 +44,9 @@ func Load(store adt.Store, act *types.Actor) (State, error) {
case actorstypes.Version13:
return load13(store, act.Head)

case actorstypes.Version14:
return load14(store, act.Head)

}
}

Expand All @@ -68,6 +71,9 @@ func MakeState(store adt.Store, av actorstypes.Version, governor address.Address
case actorstypes.Version13:
return make13(store, governor, bitwidth)

case actorstypes.Version14:
return make14(store, governor, bitwidth)

default:
return nil, xerrors.Errorf("datacap actor only valid for actors v9 and above, got %d", av)
}
Expand Down Expand Up @@ -97,6 +103,7 @@ func AllCodes() []cid.Cid {
(&state11{}).Code(),
(&state12{}).Code(),
(&state13{}).Code(),
(&state14{}).Code(),
}
}

Expand All @@ -107,5 +114,6 @@ func VersionCodes() map[actorstypes.Version]cid.Cid {
actorstypes.Version11: (&state11{}).Code(),
actorstypes.Version12: (&state12{}).Code(),
actorstypes.Version13: (&state13{}).Code(),
actorstypes.Version14: (&state14{}).Code(),
}
}
94 changes: 94 additions & 0 deletions chain/actors/builtin/datacap/v14.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package datacap

import (
"crypto/sha256"
"fmt"

"github.com/ipfs/go-cid"

"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
datacap14 "github.com/filecoin-project/go-state-types/builtin/v14/datacap"
adt14 "github.com/filecoin-project/go-state-types/builtin/v14/util/adt"
"github.com/filecoin-project/go-state-types/manifest"

"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/adt"
)

var _ State = (*state14)(nil)

func load14(store adt.Store, root cid.Cid) (State, error) {
out := state14{store: store}
err := store.Get(store.Context(), root, &out)
if err != nil {
return nil, err
}
return &out, nil
}

func make14(store adt.Store, governor address.Address, bitwidth uint64) (State, error) {
out := state14{store: store}
s, err := datacap14.ConstructState(store, governor, bitwidth)
if err != nil {
return nil, err
}

out.State = *s

return &out, nil
}

type state14 struct {
datacap14.State
store adt.Store
}

func (s *state14) Governor() (address.Address, error) {
return s.State.Governor, nil
}

func (s *state14) GetState() interface{} {
return &s.State
}

func (s *state14) ForEachClient(cb func(addr address.Address, dcap abi.StoragePower) error) error {
return forEachClient(s.store, actorstypes.Version14, s.VerifiedClients, cb)
}

func (s *state14) VerifiedClients() (adt.Map, error) {
return adt14.AsMap(s.store, s.Token.Balances, int(s.Token.HamtBitWidth))
}

func (s *state14) VerifiedClientDataCap(addr address.Address) (bool, abi.StoragePower, error) {
return getDataCap(s.store, actorstypes.Version14, s.VerifiedClients, addr)
}

func (s *state14) VerifiedClientsMapBitWidth() int {
return int(s.Token.HamtBitWidth)
}

func (s *state14) VerifiedClientsMapHashFunction() func(input []byte) []byte {
return func(input []byte) []byte {
res := sha256.Sum256(input)
return res[:]
}
}

func (s *state14) ActorKey() string {
return manifest.DatacapKey
}

func (s *state14) ActorVersion() actorstypes.Version {
return actorstypes.Version14
}

func (s *state14) Code() cid.Cid {
code, ok := actors.GetActorCodeID(s.ActorVersion(), s.ActorKey())
if !ok {
panic(fmt.Errorf("didn't find actor %v code id for actor version %d", s.ActorKey(), s.ActorVersion()))
}

return code
}
14 changes: 11 additions & 3 deletions chain/actors/builtin/init/init.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

152 changes: 152 additions & 0 deletions chain/actors/builtin/init/v14.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions chain/actors/builtin/market/market.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 59aa115

Please sign in to comment.