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 }