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

     1  package nv10
     2  
     3  import (
     4  	"context"
     5  
     6  	verifreg2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/verifreg"
     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  	verifreg3 "github.com/filecoin-project/specs-actors/v4/actors/builtin/verifreg"
    12  )
    13  
    14  type verifregMigrator struct{}
    15  
    16  func (m verifregMigrator) migrateState(ctx context.Context, store cbor.IpldStore, in actorMigrationInput) (*actorMigrationResult, error) {
    17  	var inState verifreg2.State
    18  	if err := store.Get(ctx, in.head, &inState); err != nil {
    19  		return nil, err
    20  	}
    21  
    22  	verifiersCIDOut, err := migrateHAMTRaw(ctx, store, inState.Verifiers, builtin3.DefaultHamtBitwidth)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	verifiedClientsCIDOut, err := migrateHAMTRaw(ctx, store, inState.VerifiedClients, builtin3.DefaultHamtBitwidth)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  
    31  	outState := verifreg3.State{
    32  		RootKey:         inState.RootKey,
    33  		Verifiers:       verifiersCIDOut,
    34  		VerifiedClients: verifiedClientsCIDOut,
    35  	}
    36  
    37  	newHead, err := store.Put(ctx, &outState)
    38  	return &actorMigrationResult{
    39  		newCodeCID: m.migratedCodeCID(),
    40  		newHead:    newHead,
    41  	}, err
    42  }
    43  
    44  func (m verifregMigrator) migratedCodeCID() cid.Cid {
    45  	return builtin3.VerifiedRegistryActorCodeID
    46  }