EVM¶
Calls¶
call¶
See [Pallet::call
].
Attributes¶
Name | Type |
---|---|
source | H160 |
target | H160 |
input | Vec<u8> |
value | U256 |
gas_limit | u64 |
max_fee_per_gas | U256 |
max_priority_fee_per_gas | Option<U256> |
nonce | Option<U256> |
access_list | Vec<(H160, Vec<H256>)> |
Python¶
call = substrate.compose_call(
'EVM', 'call', {
'access_list': [
(
'[u8; 20]',
['scale_info::12'],
),
],
'gas_limit': 'u64',
'input': 'Bytes',
'max_fee_per_gas': 'scale_info::187',
'max_priority_fee_per_gas': (
None,
'scale_info::187',
),
'nonce': (None, 'scale_info::187'),
'source': '[u8; 20]',
'target': '[u8; 20]',
'value': 'scale_info::187',
}
)
create¶
See [Pallet::create
].
Attributes¶
Name | Type |
---|---|
source | H160 |
init | Vec<u8> |
value | U256 |
gas_limit | u64 |
max_fee_per_gas | U256 |
max_priority_fee_per_gas | Option<U256> |
nonce | Option<U256> |
access_list | Vec<(H160, Vec<H256>)> |
Python¶
call = substrate.compose_call(
'EVM', 'create', {
'access_list': [
(
'[u8; 20]',
['scale_info::12'],
),
],
'gas_limit': 'u64',
'init': 'Bytes',
'max_fee_per_gas': 'scale_info::187',
'max_priority_fee_per_gas': (
None,
'scale_info::187',
),
'nonce': (None, 'scale_info::187'),
'source': '[u8; 20]',
'value': 'scale_info::187',
}
)
create2¶
See [Pallet::create2
].
Attributes¶
Name | Type |
---|---|
source | H160 |
init | Vec<u8> |
salt | H256 |
value | U256 |
gas_limit | u64 |
max_fee_per_gas | U256 |
max_priority_fee_per_gas | Option<U256> |
nonce | Option<U256> |
access_list | Vec<(H160, Vec<H256>)> |
Python¶
call = substrate.compose_call(
'EVM', 'create2', {
'access_list': [
(
'[u8; 20]',
['scale_info::12'],
),
],
'gas_limit': 'u64',
'init': 'Bytes',
'max_fee_per_gas': 'scale_info::187',
'max_priority_fee_per_gas': (
None,
'scale_info::187',
),
'nonce': (None, 'scale_info::187'),
'salt': 'scale_info::12',
'source': '[u8; 20]',
'value': 'scale_info::187',
}
)
withdraw¶
See [Pallet::withdraw
].
Attributes¶
Name | Type |
---|---|
address | H160 |
value | BalanceOf<T> |
Python¶
call = substrate.compose_call(
'EVM', 'withdraw', {
'address': '[u8; 20]',
'value': 'u128',
}
)
Events¶
Created¶
A contract has been created at given address.
Attributes¶
Name | Type | Composition |
---|---|---|
address | H160 |
[u8; 20] |
CreatedFailed¶
A contract was attempted to be created, but the execution failed.
Attributes¶
Name | Type | Composition |
---|---|---|
address | H160 |
[u8; 20] |
Executed¶
A contract has been executed successfully with states applied.
Attributes¶
Name | Type | Composition |
---|---|---|
address | H160 |
[u8; 20] |
ExecutedFailed¶
A contract has been executed with errors. States are reverted with only gas fees applied.
Attributes¶
Name | Type | Composition |
---|---|---|
address | H160 |
[u8; 20] |
Log¶
Ethereum events from contracts.
Attributes¶
Name | Type | Composition |
---|---|---|
log | Log |
{'address': '[u8; 20]', 'topics': ['scale_info::12'], 'data': 'Bytes'} |
Storage functions¶
AccountCodes¶
Python¶
result = substrate.query(
'EVM', 'AccountCodes', ['[u8; 20]']
)
Return value¶
'Bytes'
AccountCodesMetadata¶
Python¶
result = substrate.query(
'EVM', 'AccountCodesMetadata', ['[u8; 20]']
)
Return value¶
{'hash': 'scale_info::12', 'size': 'u64'}
AccountStorages¶
Python¶
result = substrate.query(
'EVM', 'AccountStorages', ['[u8; 20]', 'scale_info::12']
)
Return value¶
'scale_info::12'
Suicided¶
Python¶
result = substrate.query(
'EVM', 'Suicided', ['[u8; 20]']
)
Return value¶
()
Errors¶
BalanceLow¶
Not enough balance to perform action
FeeOverflow¶
Calculating total fee overflowed
GasLimitTooHigh¶
Gas limit is too high.
GasLimitTooLow¶
Gas limit is too low.
GasPriceTooLow¶
Gas price is too low.
InvalidChainId¶
The chain id is invalid.
InvalidNonce¶
Nonce is invalid
InvalidSignature¶
the signature is invalid.
PaymentOverflow¶
Calculating total payment overflowed
Reentrancy¶
EVM reentrancy
TransactionMustComeFromEOA¶
EIP-3607,
Undefined¶
Undefined error.
WithdrawFailed¶
Withdraw fee failed