Skip to content

Commit

Permalink
the basefee opcode (#142)
Browse files Browse the repository at this point in the history
Signed-off-by: xermicus <cyrill@parity.io>
  • Loading branch information
xermicus authored Dec 19, 2024
1 parent 6ad846a commit d8752ec
Show file tree
Hide file tree
Showing 7 changed files with 410 additions and 373 deletions.
740 changes: 370 additions & 370 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ git2 = "0.19.0"
# polkadot-sdk and friends
codec = { version = "3.6.12", default-features = false, package = "parity-scale-codec" }
scale-info = { version = "2.11.1", default-features = false }
polkadot-sdk = { git = "https://github.com/paritytech/polkadot-sdk", rev = "2cbb4377d36af0aec9ae29dcabc5f5b1e88ed1db" }
polkadot-sdk = { git = "https://github.com/paritytech/polkadot-sdk", rev = "243b751abbb94369bbd92c83d8ab159ddfc3c556" }

# llvm
[workspace.dependencies.inkwell]
Expand Down
31 changes: 31 additions & 0 deletions crates/integration/contracts/BaseFee.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

/* runner.json
{
"differential": false,
"actions": [
{
"Instantiate": {
"code": {
"Solidity": {
"contract": "BaseFee"
}
}
}
},
{
"VerifyCall": {
"success": true
}
}
]
}
*/

contract BaseFee {
constructor() payable {
assert(block.basefee == 0);
}
}
1 change: 1 addition & 0 deletions crates/integration/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ test_spec!(delegate, "Delegate", "Delegate.sol");
test_spec!(gas_price, "GasPrice", "GasPrice.sol");
test_spec!(gas_left, "GasLeft", "GasLeft.sol");
test_spec!(gas_limit, "GasLimit", "GasLimit.sol");
test_spec!(base_fee, "BaseFee", "BaseFee.sol");

fn instantiate(path: &str, contract: &str) -> Vec<SpecsAction> {
vec![Instantiate {
Expand Down
2 changes: 1 addition & 1 deletion crates/llvm-context/src/polkavm/evm/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ pub fn basefee<'ctx, D>(
where
D: Dependency + Clone,
{
Ok(context.word_const(0).as_basic_value_enum())
context.build_runtime_call_to_getter(revive_runtime_api::polkavm_imports::BASE_FEE)
}

/// Translates the `address` instruction.
Expand Down
2 changes: 2 additions & 0 deletions crates/runtime-api/src/polkavm_imports.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ POLKAVM_IMPORT(void, balance, uint32_t)

POLKAVM_IMPORT(void, balance_of, uint32_t, uint32_t)

POLKAVM_IMPORT(void, base_fee, uint32_t)

POLKAVM_IMPORT(void, block_hash, uint32_t, uint32_t)

POLKAVM_IMPORT(void, block_number, uint32_t)
Expand Down
5 changes: 4 additions & 1 deletion crates/runtime-api/src/polkavm_imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ pub static BALANCE: &str = "balance";

pub static BALANCE_OF: &str = "balance_of";

pub static BASE_FEE: &str = "base_fee";

pub static BLOCK_HASH: &str = "block_hash";

pub static BLOCK_NUMBER: &str = "block_number";
Expand Down Expand Up @@ -78,12 +80,13 @@ pub static WEIGHT_TO_FEE: &str = "weight_to_fee";

/// All imported runtime API symbols.
/// Useful for configuring common attributes and linkage.
pub static IMPORTS: [&str; 33] = [
pub static IMPORTS: [&str; 34] = [
SBRK,
MEMORY_SIZE,
ADDRESS,
BALANCE,
BALANCE_OF,
BASE_FEE,
BLOCK_HASH,
BLOCK_NUMBER,
CALL,
Expand Down

0 comments on commit d8752ec

Please sign in to comment.