github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/migration/nv10/multisig.go (about)

     1  package nv10
     2  
     3  import (
     4  	"context"
     5  
     6  	multisig2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/multisig"
     7  	cid "github.com/ipfs/go-cid"
     8  	cbor "github.com/ipfs/go-ipld-cbor"
     9  
    10  	builtin3 "github.com/filecoin-project/specs-actors/v4/actors/builtin"
    11  	multisig3 "github.com/filecoin-project/specs-actors/v4/actors/builtin/multisig"
    12  )
    13  
    14  type multisigMigrator struct{}
    15  
    16  func (m multisigMigrator) migrateState(ctx context.Context, store cbor.IpldStore, in actorMigrationInput) (*actorMigrationResult, error) {
    17  	var inState multisig2.State
    18  	if err := store.Get(ctx, in.head, &inState); err != nil {
    19  		return nil, err
    20  	}
    21  
    22  	pendingTxnsOut, err := migrateHAMTRaw(ctx, store, inState.PendingTxns, builtin3.DefaultHamtBitwidth)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  
    27  	outState := multisig3.State{
    28  		Signers:               inState.Signers,
    29  		NumApprovalsThreshold: inState.NumApprovalsThreshold,
    30  		NextTxnID:             inState.NextTxnID,
    31  		InitialBalance:        inState.InitialBalance,
    32  		StartEpoch:            inState.StartEpoch,
    33  		UnlockDuration:        inState.UnlockDuration,
    34  		PendingTxns:           pendingTxnsOut,
    35  	}
    36  	newHead, err := store.Put(ctx, &outState)
    37  	return &actorMigrationResult{
    38  		newCodeCID: m.migratedCodeCID(),
    39  		newHead:    newHead,
    40  	}, err
    41  }
    42  
    43  func (m multisigMigrator) migratedCodeCID() cid.Cid {
    44  	return builtin3.MultisigActorCodeID
    45  }