use crate::cost::ActionCosts;
use std::slice;
#[derive(
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Debug,
strum::Display,
strum::EnumString,
strum::IntoStaticStr,
)]
#[strum(serialize_all = "snake_case")]
pub enum Parameter {
BurntGasReward,
PessimisticGasPriceInflation,
MinAllowedTopLevelAccountLength,
RegistrarAccountId,
StorageAmountPerByte,
StorageNumBytesAccount,
StorageNumExtraBytesRecord,
ActionReceiptCreation,
DataReceiptCreationBase,
DataReceiptCreationPerByte,
ActionCreateAccount,
ActionDeleteAccount,
ActionDeployContract,
ActionDeployContractPerByte,
ActionFunctionCall,
ActionFunctionCallPerByte,
ActionTransfer,
ActionStake,
ActionAddFullAccessKey,
ActionAddFunctionCallKey,
ActionAddFunctionCallKeyPerByte,
ActionDeleteKey,
ActionDelegate,
WasmRegularOpCost,
WasmGrowMemCost,
WasmBase,
WasmContractLoadingBase,
WasmContractLoadingBytes,
WasmReadMemoryBase,
WasmReadMemoryByte,
WasmWriteMemoryBase,
WasmWriteMemoryByte,
WasmReadRegisterBase,
WasmReadRegisterByte,
WasmWriteRegisterBase,
WasmWriteRegisterByte,
WasmUtf8DecodingBase,
WasmUtf8DecodingByte,
WasmUtf16DecodingBase,
WasmUtf16DecodingByte,
WasmSha256Base,
WasmSha256Byte,
WasmKeccak256Base,
WasmKeccak256Byte,
WasmKeccak512Base,
WasmKeccak512Byte,
WasmRipemd160Base,
WasmRipemd160Block,
WasmEcrecoverBase,
WasmEd25519VerifyBase,
WasmEd25519VerifyByte,
WasmLogBase,
WasmLogByte,
WasmStorageWriteBase,
WasmStorageWriteKeyByte,
WasmStorageWriteValueByte,
WasmStorageWriteEvictedByte,
WasmStorageReadBase,
WasmStorageReadKeyByte,
WasmStorageReadValueByte,
WasmStorageRemoveBase,
WasmStorageRemoveKeyByte,
WasmStorageRemoveRetValueByte,
WasmStorageHasKeyBase,
WasmStorageHasKeyByte,
WasmStorageIterCreatePrefixBase,
WasmStorageIterCreatePrefixByte,
WasmStorageIterCreateRangeBase,
WasmStorageIterCreateFromByte,
WasmStorageIterCreateToByte,
WasmStorageIterNextBase,
WasmStorageIterNextKeyByte,
WasmStorageIterNextValueByte,
WasmTouchingTrieNode,
WasmReadCachedTrieNode,
WasmPromiseAndBase,
WasmPromiseAndPerPromise,
WasmPromiseReturn,
WasmValidatorStakeBase,
WasmValidatorTotalStakeBase,
WasmAltBn128G1MultiexpBase,
WasmAltBn128G1MultiexpElement,
WasmAltBn128PairingCheckBase,
WasmAltBn128PairingCheckElement,
WasmAltBn128G1SumBase,
WasmAltBn128G1SumElement,
MaxGasBurnt,
MaxGasBurntView,
MaxStackHeight,
ContractPrepareVersion,
InitialMemoryPages,
MaxMemoryPages,
RegistersMemoryLimit,
MaxRegisterSize,
MaxNumberRegisters,
MaxNumberLogs,
MaxTotalLogLength,
MaxTotalPrepaidGas,
MaxActionsPerReceipt,
MaxNumberBytesMethodNames,
MaxLengthMethodName,
MaxArgumentsLength,
MaxLengthReturnedData,
MaxContractSize,
MaxTransactionSize,
MaxLengthStorageKey,
MaxLengthStorageValue,
MaxPromisesPerFunctionCallAction,
MaxNumberInputDataDependencies,
MaxFunctionsNumberPerContract,
Wasmer2StackLimit,
MaxLocalsPerContract,
AccountIdValidityRulesVersion,
#[strum(serialize = "disable_9393_fix")]
Disable9393Fix,
FlatStorageReads,
ImplicitAccountCreation,
FixContractLoadingCost,
MathExtension,
Ed25519Verify,
AltBn128,
FunctionCallWeight,
VmKind,
EthImplicitAccounts,
}
#[derive(
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Debug,
strum::Display,
strum::EnumString,
strum::IntoStaticStr,
)]
#[strum(serialize_all = "snake_case")]
pub enum FeeParameter {
ActionReceiptCreation,
DataReceiptCreationBase,
DataReceiptCreationPerByte,
ActionCreateAccount,
ActionDeleteAccount,
ActionDeployContract,
ActionDeployContractPerByte,
ActionFunctionCall,
ActionFunctionCallPerByte,
ActionTransfer,
ActionStake,
ActionAddFullAccessKey,
ActionAddFunctionCallKey,
ActionAddFunctionCallKeyPerByte,
ActionDeleteKey,
ActionDelegate,
}
impl Parameter {
pub fn vm_limits() -> slice::Iter<'static, Parameter> {
[
Parameter::MaxGasBurnt,
Parameter::MaxStackHeight,
Parameter::ContractPrepareVersion,
Parameter::InitialMemoryPages,
Parameter::MaxMemoryPages,
Parameter::RegistersMemoryLimit,
Parameter::MaxRegisterSize,
Parameter::MaxNumberRegisters,
Parameter::MaxNumberLogs,
Parameter::MaxTotalLogLength,
Parameter::MaxTotalPrepaidGas,
Parameter::MaxActionsPerReceipt,
Parameter::MaxNumberBytesMethodNames,
Parameter::MaxLengthMethodName,
Parameter::MaxArgumentsLength,
Parameter::MaxLengthReturnedData,
Parameter::MaxContractSize,
Parameter::MaxTransactionSize,
Parameter::MaxLengthStorageKey,
Parameter::MaxLengthStorageValue,
Parameter::MaxPromisesPerFunctionCallAction,
Parameter::MaxNumberInputDataDependencies,
Parameter::MaxFunctionsNumberPerContract,
Parameter::Wasmer2StackLimit,
Parameter::MaxLocalsPerContract,
Parameter::AccountIdValidityRulesVersion,
]
.iter()
}
}
impl From<ActionCosts> for FeeParameter {
fn from(other: ActionCosts) -> Self {
match other {
ActionCosts::create_account => Self::ActionCreateAccount,
ActionCosts::delete_account => Self::ActionDeleteAccount,
ActionCosts::delegate => Self::ActionDelegate,
ActionCosts::deploy_contract_base => Self::ActionDeployContract,
ActionCosts::deploy_contract_byte => Self::ActionDeployContractPerByte,
ActionCosts::function_call_base => Self::ActionFunctionCall,
ActionCosts::function_call_byte => Self::ActionFunctionCallPerByte,
ActionCosts::transfer => Self::ActionTransfer,
ActionCosts::stake => Self::ActionStake,
ActionCosts::add_full_access_key => Self::ActionAddFullAccessKey,
ActionCosts::add_function_call_key_base => Self::ActionAddFunctionCallKey,
ActionCosts::add_function_call_key_byte => Self::ActionAddFunctionCallKeyPerByte,
ActionCosts::delete_key => Self::ActionDeleteKey,
ActionCosts::new_action_receipt => Self::ActionReceiptCreation,
ActionCosts::new_data_receipt_base => Self::DataReceiptCreationBase,
ActionCosts::new_data_receipt_byte => Self::DataReceiptCreationPerByte,
}
}
}