2d57bfe273
* Use local GST Use local GST * Import actors and define upgrade heights Creatin a mock actor-bundle and define upgrade heights * Generate adapters Updates gen/inlinegen-data.json, and runs make actors-gen * Add schedule and migration Add schedule and migration * Add upgrade and network version fields/params Add upgrade and network version fields/params * Run make gen / make docsgen-cli Run make gen / make docsgen-cli * Update filecoin-ffi Update filecoin-ffi to the v1.28.0-dev tag, which supports the nv23 skeleton. * Update GST to v0.14.0-dev Update GST to v0.14.0-dev, which includes the nv23 skeleton * Add support for actor version 14 in actor registry Add support for actor version 14 in actor registry
139 lines
3.6 KiB
Go
Generated
139 lines
3.6 KiB
Go
Generated
package multisig
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"fmt"
|
|
|
|
"github.com/ipfs/go-cid"
|
|
cbg "github.com/whyrusleeping/cbor-gen"
|
|
"golang.org/x/xerrors"
|
|
|
|
"github.com/filecoin-project/go-address"
|
|
"github.com/filecoin-project/go-state-types/abi"
|
|
actorstypes "github.com/filecoin-project/go-state-types/actors"
|
|
builtin14 "github.com/filecoin-project/go-state-types/builtin"
|
|
msig14 "github.com/filecoin-project/go-state-types/builtin/v14/multisig"
|
|
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, signers []address.Address, threshold uint64, startEpoch abi.ChainEpoch, unlockDuration abi.ChainEpoch, initialBalance abi.TokenAmount) (State, error) {
|
|
out := state14{store: store}
|
|
out.State = msig14.State{}
|
|
out.State.Signers = signers
|
|
out.State.NumApprovalsThreshold = threshold
|
|
out.State.StartEpoch = startEpoch
|
|
out.State.UnlockDuration = unlockDuration
|
|
out.State.InitialBalance = initialBalance
|
|
|
|
em, err := adt14.StoreEmptyMap(store, builtin14.DefaultHamtBitwidth)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
out.State.PendingTxns = em
|
|
|
|
return &out, nil
|
|
}
|
|
|
|
type state14 struct {
|
|
msig14.State
|
|
store adt.Store
|
|
}
|
|
|
|
func (s *state14) LockedBalance(currEpoch abi.ChainEpoch) (abi.TokenAmount, error) {
|
|
return s.State.AmountLocked(currEpoch - s.State.StartEpoch), nil
|
|
}
|
|
|
|
func (s *state14) StartEpoch() (abi.ChainEpoch, error) {
|
|
return s.State.StartEpoch, nil
|
|
}
|
|
|
|
func (s *state14) UnlockDuration() (abi.ChainEpoch, error) {
|
|
return s.State.UnlockDuration, nil
|
|
}
|
|
|
|
func (s *state14) InitialBalance() (abi.TokenAmount, error) {
|
|
return s.State.InitialBalance, nil
|
|
}
|
|
|
|
func (s *state14) Threshold() (uint64, error) {
|
|
return s.State.NumApprovalsThreshold, nil
|
|
}
|
|
|
|
func (s *state14) Signers() ([]address.Address, error) {
|
|
return s.State.Signers, nil
|
|
}
|
|
|
|
func (s *state14) ForEachPendingTxn(cb func(id int64, txn Transaction) error) error {
|
|
arr, err := adt14.AsMap(s.store, s.State.PendingTxns, builtin14.DefaultHamtBitwidth)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var out msig14.Transaction
|
|
return arr.ForEach(&out, func(key string) error {
|
|
txid, n := binary.Varint([]byte(key))
|
|
if n <= 0 {
|
|
return xerrors.Errorf("invalid pending transaction key: %v", key)
|
|
}
|
|
return cb(txid, (Transaction)(out)) //nolint:unconvert
|
|
})
|
|
}
|
|
|
|
func (s *state14) PendingTxnChanged(other State) (bool, error) {
|
|
other14, ok := other.(*state14)
|
|
if !ok {
|
|
// treat an upgrade as a change, always
|
|
return true, nil
|
|
}
|
|
return !s.State.PendingTxns.Equals(other14.PendingTxns), nil
|
|
}
|
|
|
|
func (s *state14) transactions() (adt.Map, error) {
|
|
return adt14.AsMap(s.store, s.PendingTxns, builtin14.DefaultHamtBitwidth)
|
|
}
|
|
|
|
func (s *state14) decodeTransaction(val *cbg.Deferred) (Transaction, error) {
|
|
var tx msig14.Transaction
|
|
if err := tx.UnmarshalCBOR(bytes.NewReader(val.Raw)); err != nil {
|
|
return Transaction{}, err
|
|
}
|
|
return Transaction(tx), nil
|
|
}
|
|
|
|
func (s *state14) GetState() interface{} {
|
|
return &s.State
|
|
}
|
|
|
|
func (s *state14) ActorKey() string {
|
|
return manifest.MultisigKey
|
|
}
|
|
|
|
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
|
|
}
|