github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/builtin/account/testing.go (about)

     1  package account
     2  
     3  import (
     4  	"github.com/filecoin-project/go-address"
     5  
     6  	"github.com/filecoin-project/specs-actors/v4/actors/builtin"
     7  )
     8  
     9  type StateSummary struct {
    10  	PubKeyAddr address.Address
    11  }
    12  
    13  // Checks internal invariants of account state.
    14  func CheckStateInvariants(st *State, idAddr address.Address) (*StateSummary, *builtin.MessageAccumulator) {
    15  	acc := &builtin.MessageAccumulator{}
    16  	accountSummary := &StateSummary{
    17  		PubKeyAddr: st.Address,
    18  	}
    19  
    20  	if id, err := address.IDFromAddress(idAddr); err != nil {
    21  		acc.Addf("error extracting actor ID from address: %v", err)
    22  	} else if id >= builtin.FirstNonSingletonActorId {
    23  		acc.Require(st.Address.Protocol() == address.BLS || st.Address.Protocol() == address.SECP256K1,
    24  			"actor address %v must be BLS or SECP256K1 protocol", st.Address)
    25  	}
    26  
    27  	return accountSummary, acc
    28  }