github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/keeper/api.go (about)

     1  package keeper
     2  
     3  import (
     4  	wasmvm "github.com/CosmWasm/wasmvm"
     5  	wasmvmtypes "github.com/CosmWasm/wasmvm/types"
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  )
     8  
     9  const (
    10  	// DefaultGasCostHumanAddress is how moch SDK gas we charge to convert to a human address format
    11  	DefaultGasCostHumanAddress = 5
    12  	// DefaultGasCostCanonicalAddress is how moch SDK gas we charge to convert to a canonical address format
    13  	DefaultGasCostCanonicalAddress = 4
    14  
    15  	// DefaultDeserializationCostPerByte The formular should be `len(data) * deserializationCostPerByte`
    16  	DefaultDeserializationCostPerByte = 1
    17  )
    18  
    19  var (
    20  	costHumanize            = DefaultGasCostHumanAddress * DefaultGasMultiplier
    21  	costCanonical           = DefaultGasCostCanonicalAddress * DefaultGasMultiplier
    22  	costJSONDeserialization = wasmvmtypes.UFraction{
    23  		Numerator:   DefaultDeserializationCostPerByte * DefaultGasMultiplier,
    24  		Denominator: 1,
    25  	}
    26  )
    27  
    28  func humanAddress(canon []byte) (string, uint64, error) {
    29  	if err := sdk.VerifyAddressFormat(canon); err != nil {
    30  		return "", costHumanize, err
    31  	}
    32  	return sdk.AccAddress(canon).String(), costHumanize, nil
    33  }
    34  
    35  func canonicalAddress(human string) ([]byte, uint64, error) {
    36  	bz, err := sdk.AccAddressFromBech32(human)
    37  	return bz, costCanonical, err
    38  }
    39  
    40  var cosmwasmAPI = wasmvm.GoAPI{
    41  	HumanAddress:     humanAddress,
    42  	CanonicalAddress: canonicalAddress,
    43  }