Migrate multisig actor
This commit is contained in:
parent
b60614982e
commit
e2295c372a
@ -28,4 +28,7 @@ type State interface {
|
|||||||
cbor.Marshaler
|
cbor.Marshaler
|
||||||
|
|
||||||
LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error)
|
LockedBalance(epoch abi.ChainEpoch) (abi.TokenAmount, error)
|
||||||
|
StartEpoch() abi.ChainEpoch
|
||||||
|
UnlockDuration() abi.ChainEpoch
|
||||||
|
InitialBalance() abi.TokenAmount
|
||||||
}
|
}
|
||||||
|
@ -12,5 +12,17 @@ type v0State struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *v0State) LockedBalance(currEpoch abi.ChainEpoch) (abi.TokenAmount, error) {
|
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
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"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/filecoin-project/lotus/chain/actors/builtin/reward"
|
||||||
|
|
||||||
"github.com/ipfs/go-cid"
|
"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/big"
|
||||||
"github.com/filecoin-project/go-state-types/network"
|
"github.com/filecoin-project/go-state-types/network"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin"
|
"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"
|
v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward"
|
||||||
"github.com/filecoin-project/specs-actors/actors/util/adt"
|
"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 {
|
type genesisInfo struct {
|
||||||
genesisMsigs []multisig.State
|
genesisMsigs []v0msig.State
|
||||||
// info about the Accounts in the genesis state
|
// info about the Accounts in the genesis state
|
||||||
genesisActors []genesisActor
|
genesisActors []genesisActor
|
||||||
genesisPledge abi.TokenAmount
|
genesisPledge abi.TokenAmount
|
||||||
@ -856,15 +859,15 @@ func (sm *StateManager) setupGenesisActors(ctx context.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.StartEpoch != 0 {
|
if s.StartEpoch() != 0 {
|
||||||
return xerrors.New("genesis multisig doesn't start vesting at epoch 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 {
|
if f {
|
||||||
totalsByEpoch[s.UnlockDuration] = big.Add(ot, s.InitialBalance)
|
totalsByEpoch[s.UnlockDuration()] = big.Add(ot, s.InitialBalance())
|
||||||
} else {
|
} else {
|
||||||
totalsByEpoch[s.UnlockDuration] = s.InitialBalance
|
totalsByEpoch[s.UnlockDuration()] = s.InitialBalance()
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if act.Code == builtin.AccountActorCodeID {
|
} 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)
|
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 {
|
for k, v := range totalsByEpoch {
|
||||||
ns := multisig.State{
|
ns := v0msig.State{
|
||||||
InitialBalance: v,
|
InitialBalance: v,
|
||||||
UnlockDuration: k,
|
UnlockDuration: k,
|
||||||
PendingTxns: cid.Undef,
|
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.NewInt(100_000_000)
|
||||||
totalsByEpoch[sixYears] = big.Add(totalsByEpoch[sixYears], big.NewInt(300_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 {
|
for k, v := range totalsByEpoch {
|
||||||
ns := multisig.State{
|
ns := v0msig.State{
|
||||||
InitialBalance: v,
|
InitialBalance: v,
|
||||||
UnlockDuration: k,
|
UnlockDuration: k,
|
||||||
PendingTxns: cid.Undef,
|
PendingTxns: cid.Undef,
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
"github.com/filecoin-project/specs-actors/actors/builtin"
|
"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/account"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/cron"
|
"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"
|
"github.com/filecoin-project/specs-actors/actors/builtin/paych"
|
||||||
v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward"
|
v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/verifreg"
|
"github.com/filecoin-project/specs-actors/actors/builtin/verifreg"
|
||||||
@ -554,7 +554,7 @@ func init() {
|
|||||||
builtin.StorageMinerActorCodeID: {builtin.MethodsMiner, miner.Actor{}},
|
builtin.StorageMinerActorCodeID: {builtin.MethodsMiner, miner.Actor{}},
|
||||||
builtin.StorageMarketActorCodeID: {builtin.MethodsMarket, market.Actor{}},
|
builtin.StorageMarketActorCodeID: {builtin.MethodsMarket, market.Actor{}},
|
||||||
builtin.PaymentChannelActorCodeID: {builtin.MethodsPaych, paych.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.RewardActorCodeID: {builtin.MethodsReward, v0reward.Actor{}},
|
||||||
builtin.VerifiedRegistryActorCodeID: {builtin.MethodsVerifiedRegistry, verifreg.Actor{}},
|
builtin.VerifiedRegistryActorCodeID: {builtin.MethodsVerifiedRegistry, verifreg.Actor{}},
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ import (
|
|||||||
init_ "github.com/filecoin-project/specs-actors/actors/builtin/init"
|
init_ "github.com/filecoin-project/specs-actors/actors/builtin/init"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
||||||
v0miner "github.com/filecoin-project/specs-actors/actors/builtin/miner"
|
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"
|
"github.com/filecoin-project/specs-actors/actors/builtin/paych"
|
||||||
v0power "github.com/filecoin-project/specs-actors/actors/builtin/power"
|
v0power "github.com/filecoin-project/specs-actors/actors/builtin/power"
|
||||||
v0reward "github.com/filecoin-project/specs-actors/actors/builtin/reward"
|
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.StoragePowerActorCodeID, v0power.Actor{}, v0power.State{})
|
||||||
inv.Register(builtin.StorageMarketActorCodeID, market.Actor{}, market.State{})
|
inv.Register(builtin.StorageMarketActorCodeID, market.Actor{}, market.State{})
|
||||||
inv.Register(builtin.StorageMinerActorCodeID, v0miner.Actor{}, v0miner.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.PaymentChannelActorCodeID, paych.Actor{}, paych.State{})
|
||||||
inv.Register(builtin.VerifiedRegistryActorCodeID, verifreg.Actor{}, verifreg.State{})
|
inv.Register(builtin.VerifiedRegistryActorCodeID, verifreg.Actor{}, verifreg.State{})
|
||||||
inv.Register(builtin.AccountActorCodeID, account.Actor{}, account.State{})
|
inv.Register(builtin.AccountActorCodeID, account.Actor{}, account.State{})
|
||||||
|
@ -17,7 +17,7 @@ import (
|
|||||||
|
|
||||||
"github.com/filecoin-project/go-address"
|
"github.com/filecoin-project/go-address"
|
||||||
init_ "github.com/filecoin-project/specs-actors/actors/builtin/init"
|
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"
|
cid "github.com/ipfs/go-cid"
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@ -199,7 +199,7 @@ var msigInspectCmd = &cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var mstate samsig.State
|
var mstate v0msig.State
|
||||||
if err := mstate.UnmarshalCBOR(bytes.NewReader(obj)); err != nil {
|
if err := mstate.UnmarshalCBOR(bytes.NewReader(obj)); err != nil {
|
||||||
return err
|
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)
|
bs := apibstore.NewAPIBlockstore(lapi)
|
||||||
store := adt.WrapStore(ctx, cbor.NewCborStore(bs))
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
txs := make(map[int64]*samsig.Transaction)
|
txs := make(map[int64]*v0msig.Transaction)
|
||||||
var tx samsig.Transaction
|
var tx v0msig.Transaction
|
||||||
err = nd.ForEach(&tx, func(k string) error {
|
err = nd.ForEach(&tx, func(k string) error {
|
||||||
txid, _ := binary.Varint([]byte(k))
|
txid, _ := binary.Varint([]byte(k))
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ func GetMultisigPending(ctx context.Context, lapi api.FullNode, hroot cid.Cid) (
|
|||||||
return txs, nil
|
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
|
/* // TODO(why): I strongly disagree with not having these... but i need to move forward
|
||||||
if tx.Complete {
|
if tx.Complete {
|
||||||
return "done"
|
return "done"
|
||||||
@ -385,7 +385,7 @@ var msigProposeCmd = &cli.Command{
|
|||||||
return fmt.Errorf("proposal returned exit %d", wait.Receipt.ExitCode)
|
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 {
|
if err := retval.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return)); err != nil {
|
||||||
return fmt.Errorf("failed to unmarshal propose return value: %w", err)
|
return fmt.Errorf("failed to unmarshal propose return value: %w", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user