diff --git a/chain/actors/builtin/multisig/multisig.go b/chain/actors/builtin/multisig/multisig.go index 676dbe75f..fc58599a9 100644 --- a/chain/actors/builtin/multisig/multisig.go +++ b/chain/actors/builtin/multisig/multisig.go @@ -28,4 +28,7 @@ type State interface { cbor.Marshaler LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error) + StartEpoch() abi.ChainEpoch + UnlockDuration() abi.ChainEpoch + InitialBalance() abi.TokenAmount } diff --git a/chain/actors/builtin/multisig/v0.go b/chain/actors/builtin/multisig/v0.go index 3bc7e70b2..dc464d9af 100644 --- a/chain/actors/builtin/multisig/v0.go +++ b/chain/actors/builtin/multisig/v0.go @@ -12,5 +12,17 @@ type v0State struct { } func (s *v0State) LockedBalance(currEpoch abi.ChainEpoch) (abi.TokenAmount, error) { - return s.State.AmountLocked(currEpoch - s.StartEpoch), nil + return s.State.AmountLocked(currEpoch - s.State.StartEpoch), nil +} + +func (s *v0State) StartEpoch() abi.ChainEpoch { + return s.State.StartEpoch +} + +func (s *v0State) UnlockDuration() abi.ChainEpoch { + return s.State.UnlockDuration +} + +func (s *v0State) InitialBalance() abi.TokenAmount { + return s.State.InitialBalance } diff --git a/chain/stmgr/stmgr.go b/chain/stmgr/stmgr.go index 8a72b4ba4..18c67b5f0 100644 --- a/chain/stmgr/stmgr.go +++ b/chain/stmgr/stmgr.go @@ -5,6 +5,10 @@ import ( "fmt" "sync" + v0msig "github.com/filecoin-project/specs-actors/actors/builtin/multisig" + + "github.com/filecoin-project/lotus/chain/actors/builtin/multisig" + "github.com/filecoin-project/lotus/chain/actors/builtin/reward" "github.com/ipfs/go-cid" @@ -19,7 +23,6 @@ import ( "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/network" "github.com/filecoin-project/specs-actors/actors/builtin" - "github.com/filecoin-project/specs-actors/actors/builtin/multisig" v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward" "github.com/filecoin-project/specs-actors/actors/util/adt" @@ -793,7 +796,7 @@ func (sm *StateManager) SetVMConstructor(nvm func(context.Context, *vm.VMOpts) ( } type genesisInfo struct { - genesisMsigs []multisig.State + genesisMsigs []v0msig.State // info about the Accounts in the genesis state genesisActors []genesisActor genesisPledge abi.TokenAmount @@ -856,15 +859,15 @@ func (sm *StateManager) setupGenesisActors(ctx context.Context) error { return err } - if s.StartEpoch != 0 { + if s.StartEpoch() != 0 { return xerrors.New("genesis multisig doesn't start vesting at epoch 0!") } - ot, f := totalsByEpoch[s.UnlockDuration] + ot, f := totalsByEpoch[s.UnlockDuration()] if f { - totalsByEpoch[s.UnlockDuration] = big.Add(ot, s.InitialBalance) + totalsByEpoch[s.UnlockDuration()] = big.Add(ot, s.InitialBalance()) } else { - totalsByEpoch[s.UnlockDuration] = s.InitialBalance + totalsByEpoch[s.UnlockDuration()] = s.InitialBalance() } } else if act.Code == builtin.AccountActorCodeID { @@ -894,9 +897,9 @@ func (sm *StateManager) setupGenesisActors(ctx context.Context) error { return xerrors.Errorf("error setting up genesis infos: %w", err) } - gi.genesisMsigs = make([]multisig.State, 0, len(totalsByEpoch)) + gi.genesisMsigs = make([]v0msig.State, 0, len(totalsByEpoch)) for k, v := range totalsByEpoch { - ns := multisig.State{ + ns := v0msig.State{ InitialBalance: v, UnlockDuration: k, PendingTxns: cid.Undef, @@ -971,9 +974,9 @@ func (sm *StateManager) setupGenesisActorsTestnet(ctx context.Context) error { totalsByEpoch[sixYears] = big.NewInt(100_000_000) totalsByEpoch[sixYears] = big.Add(totalsByEpoch[sixYears], big.NewInt(300_000_000)) - gi.genesisMsigs = make([]multisig.State, 0, len(totalsByEpoch)) + gi.genesisMsigs = make([]v0msig.State, 0, len(totalsByEpoch)) for k, v := range totalsByEpoch { - ns := multisig.State{ + ns := v0msig.State{ InitialBalance: v, UnlockDuration: k, PendingTxns: cid.Undef, diff --git a/chain/stmgr/utils.go b/chain/stmgr/utils.go index b000a62e1..afd790a74 100644 --- a/chain/stmgr/utils.go +++ b/chain/stmgr/utils.go @@ -27,7 +27,7 @@ import ( "github.com/filecoin-project/specs-actors/actors/builtin" "github.com/filecoin-project/specs-actors/actors/builtin/account" "github.com/filecoin-project/specs-actors/actors/builtin/cron" - "github.com/filecoin-project/specs-actors/actors/builtin/multisig" + v0msig "github.com/filecoin-project/specs-actors/actors/builtin/multisig" "github.com/filecoin-project/specs-actors/actors/builtin/paych" v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward" "github.com/filecoin-project/specs-actors/actors/builtin/verifreg" @@ -554,7 +554,7 @@ func init() { builtin.StorageMinerActorCodeID: {builtin.MethodsMiner, miner.Actor{}}, builtin.StorageMarketActorCodeID: {builtin.MethodsMarket, market.Actor{}}, builtin.PaymentChannelActorCodeID: {builtin.MethodsPaych, paych.Actor{}}, - builtin.MultisigActorCodeID: {builtin.MethodsMultisig, multisig.Actor{}}, + builtin.MultisigActorCodeID: {builtin.MethodsMultisig, v0msig.Actor{}}, builtin.RewardActorCodeID: {builtin.MethodsReward, v0reward.Actor{}}, builtin.VerifiedRegistryActorCodeID: {builtin.MethodsVerifiedRegistry, verifreg.Actor{}}, } diff --git a/chain/vm/invoker.go b/chain/vm/invoker.go index a86a0f03c..4cda32c44 100644 --- a/chain/vm/invoker.go +++ b/chain/vm/invoker.go @@ -21,7 +21,7 @@ import ( init_ "github.com/filecoin-project/specs-actors/actors/builtin/init" "github.com/filecoin-project/specs-actors/actors/builtin/market" v0miner "github.com/filecoin-project/specs-actors/actors/builtin/miner" - "github.com/filecoin-project/specs-actors/actors/builtin/multisig" + v0msig "github.com/filecoin-project/specs-actors/actors/builtin/multisig" "github.com/filecoin-project/specs-actors/actors/builtin/paych" v0power "github.com/filecoin-project/specs-actors/actors/builtin/power" v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward" @@ -53,7 +53,7 @@ func NewInvoker() *Invoker { inv.Register(builtin.StoragePowerActorCodeID, v0power.Actor{}, v0power.State{}) inv.Register(builtin.StorageMarketActorCodeID, market.Actor{}, market.State{}) inv.Register(builtin.StorageMinerActorCodeID, v0miner.Actor{}, v0miner.State{}) - inv.Register(builtin.MultisigActorCodeID, multisig.Actor{}, multisig.State{}) + inv.Register(builtin.MultisigActorCodeID, v0msig.Actor{}, v0msig.State{}) inv.Register(builtin.PaymentChannelActorCodeID, paych.Actor{}, paych.State{}) inv.Register(builtin.VerifiedRegistryActorCodeID, verifreg.Actor{}, verifreg.State{}) inv.Register(builtin.AccountActorCodeID, account.Actor{}, account.State{}) diff --git a/cli/multisig.go b/cli/multisig.go index 4596628f4..ffbbd733b 100644 --- a/cli/multisig.go +++ b/cli/multisig.go @@ -17,7 +17,7 @@ import ( "github.com/filecoin-project/go-address" init_ "github.com/filecoin-project/specs-actors/actors/builtin/init" - samsig "github.com/filecoin-project/specs-actors/actors/builtin/multisig" + v0msig "github.com/filecoin-project/specs-actors/actors/builtin/multisig" cid "github.com/ipfs/go-cid" cbor "github.com/ipfs/go-ipld-cbor" "github.com/urfave/cli/v2" @@ -199,7 +199,7 @@ var msigInspectCmd = &cli.Command{ return err } - var mstate samsig.State + var mstate v0msig.State if err := mstate.UnmarshalCBOR(bytes.NewReader(obj)); err != nil { return err } @@ -251,7 +251,7 @@ var msigInspectCmd = &cli.Command{ }, } -func GetMultisigPending(ctx context.Context, lapi api.FullNode, hroot cid.Cid) (map[int64]*samsig.Transaction, error) { +func GetMultisigPending(ctx context.Context, lapi api.FullNode, hroot cid.Cid) (map[int64]*v0msig.Transaction, error) { bs := apibstore.NewAPIBlockstore(lapi) store := adt.WrapStore(ctx, cbor.NewCborStore(bs)) @@ -260,8 +260,8 @@ func GetMultisigPending(ctx context.Context, lapi api.FullNode, hroot cid.Cid) ( return nil, err } - txs := make(map[int64]*samsig.Transaction) - var tx samsig.Transaction + txs := make(map[int64]*v0msig.Transaction) + var tx v0msig.Transaction err = nd.ForEach(&tx, func(k string) error { txid, _ := binary.Varint([]byte(k)) @@ -276,7 +276,7 @@ func GetMultisigPending(ctx context.Context, lapi api.FullNode, hroot cid.Cid) ( return txs, nil } -func state(tx *samsig.Transaction) string { +func state(tx *v0msig.Transaction) string { /* // TODO(why): I strongly disagree with not having these... but i need to move forward if tx.Complete { return "done" @@ -385,7 +385,7 @@ var msigProposeCmd = &cli.Command{ return fmt.Errorf("proposal returned exit %d", wait.Receipt.ExitCode) } - var retval samsig.ProposeReturn + var retval v0msig.ProposeReturn if err := retval.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return)); err != nil { return fmt.Errorf("failed to unmarshal propose return value: %w", err) }