Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/evm devnet ready #772

Merged
merged 65 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
3fedd89
Update to polkadot SDK release-polkadot-v1.11.0
gztensor Aug 28, 2024
4886e96
Add EVM pallets, rpc, and precompiles
gztensor Aug 29, 2024
dee91c0
Format
gztensor Aug 29, 2024
8dd904e
Fix clippy issues
gztensor Aug 29, 2024
86167cb
Format
gztensor Aug 29, 2024
ca953f4
Fix try-runtime build
gztensor Aug 29, 2024
fa7d30f
Fix runtime-benchmarks build
gztensor Aug 29, 2024
069bea4
Format
gztensor Aug 29, 2024
f0dde3c
Fix configuration of pallet_transaction_payment, reduce linear fees t…
gztensor Aug 29, 2024
3f3b546
Format
gztensor Aug 29, 2024
8c1de0d
Fix zepter check
gztensor Aug 29, 2024
072bdea
Fix zepter check
gztensor Aug 29, 2024
0d571b4
Cleanup and fix gas to weight to fees conversion
gztensor Aug 30, 2024
020fb2a
Format
gztensor Aug 30, 2024
9609bd2
Change chain ID to 945 for testnet
gztensor Aug 30, 2024
e88f428
Add staking precompile implementation notes
gztensor Sep 3, 2024
8285c39
add add staking logic
soring323 Sep 4, 2024
609005b
refactor execute function
soring323 Sep 4, 2024
231e586
add remove staking function
soring323 Sep 4, 2024
074c9b6
fix lint issue
soring323 Sep 4, 2024
fad6d17
add refund logic to caller
soring323 Sep 5, 2024
7e047fa
fix lint issue
soring323 Sep 5, 2024
9d0391c
Merge pull request #777 from DedicatedDev/mz/feat/staking-precompile
gztensor Sep 5, 2024
600e6d1
fix clippy lint issues
soring323 Sep 5, 2024
27797ae
fix clippy lint issues
soring323 Sep 5, 2024
74fe08d
Merge pull request #784 from DedicatedDev/mz/feat/fix-clippy-issue
gztensor Sep 5, 2024
1c2c12f
Address code review comments: Separate RPC merging into helper functions
gztensor Sep 5, 2024
89c8910
Use TryFrom for converting bytes to AccountId32 with error
gztensor Sep 5, 2024
767ed55
Bump runtime version to 197
gztensor Sep 6, 2024
bc65af2
Merge branch 'devnet-ready' into feat/evm-devnet-ready
gztensor Sep 6, 2024
56a9809
Re-add staking precompile implementation notes
gztensor Sep 6, 2024
f8632e3
Format
gztensor Sep 6, 2024
0478b8d
Fix removing stake in staking precompile
gztensor Sep 17, 2024
4cdfeb5
Remove payable modifier from removeStake precompile method
gztensor Sep 17, 2024
517fabf
bump spec above mainnet (#829)
camfairchild Sep 23, 2024
453a7af
Update EVM to polkadot dsk 1.16
gztensor Sep 26, 2024
5372f5e
Format
gztensor Sep 26, 2024
f706122
Make linter happy again
gztensor Sep 26, 2024
a2b8bb6
Format
gztensor Sep 26, 2024
3f147b8
Remove unused manifest key: dependencies.scale-codec.package (linter)
gztensor Sep 26, 2024
1c72c6f
Fix benchmarks
gztensor Sep 26, 2024
bb9ee35
Format
gztensor Sep 26, 2024
4966c2c
Cleanup RPC create_full bounds
gztensor Sep 27, 2024
7064b52
Add ed25519 verify precompile
gztensor Sep 30, 2024
c587301
Implement ed25519 verification precompile
gztensor Oct 1, 2024
129d3d9
Propagate features for ed25519-dalek
gztensor Oct 2, 2024
ac24a8f
Add ed25519-dalek to std feature in runtime
gztensor Oct 2, 2024
6ead778
Implement subtensor evm balance converter, use in balance transfer pr…
gztensor Oct 4, 2024
bdd85cd
Use evm balance converter in staking precompile
gztensor Oct 4, 2024
638f521
Merge devnet-ready into feat/evm-devnet-ready
gztensor Oct 4, 2024
40fff23
Recalculate decimals for gas price
gztensor Oct 4, 2024
4ea9663
Fix decimals in gas fees (max_fee_per_gas and max_priority_fee_per_gas)
gztensor Oct 15, 2024
f39520c
Format
gztensor Oct 15, 2024
d3f7013
Merge main into feat/evm-devnet-ready
gztensor Oct 15, 2024
6622905
add ability to skip cargo audit
sam0x17 Oct 16, 2024
70e86e2
Cargo update after updating frontier version of sqlx
gztensor Oct 16, 2024
3c17e7c
fix
sam0x17 Oct 16, 2024
7c4126f
Fix decimals in gas price rpc
gztensor Oct 16, 2024
042d5d7
Update frontier fork to master branch
gztensor Oct 29, 2024
a85e207
fix: whitelist
orriin Oct 30, 2024
f58977b
pin frontier version
orriin Oct 31, 2024
29cd71e
Merge branch 'devnet-ready' into feat/evm-devnet-ready
orriin Oct 31, 2024
8d084b1
fix merge
orriin Oct 31, 2024
6513d46
update cargo.lock
orriin Oct 31, 2024
d8eadf3
fix feature propagation
orriin Oct 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,083 changes: 1,015 additions & 68 deletions Cargo.lock

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ unwrap-used = "deny"
manual_inspect = "allow"

[workspace.dependencies]
async-trait = "0.1"
cargo-husky = { version = "1", default-features = false }
clap = "4.5.4"
codec = { version = "3.2.2", default-features = false }
Expand All @@ -59,6 +60,7 @@ memmap2 = "0.9.4"
ndarray = { version = "0.15.6", default-features = false }
parity-util-mem = "0.12.0"
rand = "0.8.5"
scale-codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] }
scale-info = { version = "2.11.2", default-features = false }
serde = { version = "1.0.199", default-features = false }
serde-tuple-vec-map = { version = "1.0.1", default-features = false }
Expand Down Expand Up @@ -155,6 +157,38 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-s
substrate-fixed = { git = "https://github.com/opentensor/substrate-fixed.git", tag = "v0.5.9" }
substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "v1.16.0-rc1" }
substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "v1.16.0-rc1" }

sc-consensus-manual-seal = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "v1.16.0-rc1", default-features = false }
sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "v1.16.0-rc1", default-features = false }
substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "v1.16.0-rc1", default-features = false }

# Frontier
fp-evm = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fp-rpc = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fp-self-contained = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false, features = [
"serde",
] }
fp-account = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-storage = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-db = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-consensus = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fp-dynamic-fee = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-api = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-rpc = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-rpc-core = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
fc-mapping-sync = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }

# Frontier FRAME
pallet-base-fee = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-dynamic-fee = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-ethereum = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-evm = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-evm-chain-id = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-evm-precompile-modexp = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-evm-precompile-sha3fips = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-evm-precompile-simple = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }
pallet-hotfix-sufficients = { git = "https://github.com/keithtensor/frontier", branch = "upgrade-to-v1.16.0", default-features = false }

frame-metadata = "16"

[profile.release]
Expand Down
40 changes: 39 additions & 1 deletion node/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ targets = ["x86_64-unknown-linux-gnu"]
name = "node-subtensor"

[dependencies]
async-trait = { workspace = true }
clap = { workspace = true, features = ["derive"] }
futures = { workspace = true, features = ["thread-pool"] }
scale-codec = { workspace = true }
serde = { workspace = true, features = ["derive"] }

# Storage import
Expand Down Expand Up @@ -52,8 +54,11 @@ sc-client-api = { workspace = true }
sp-runtime = { workspace = true }
sp-io = { workspace = true }
sp-timestamp = { workspace = true }
sp-transaction-pool = { workspace = true, features = ["default"] }
sp-inherents = { workspace = true }
sp-keyring = { workspace = true }
sp-offchain = { workspace = true }
sp-session = { workspace = true }
frame-metadata-hash-extension = { workspace = true }
frame-system = { workspace = true }
pallet-transaction-payment = { workspace = true }
Expand All @@ -69,11 +74,29 @@ sp-block-builder = { workspace = true }
sc-basic-authorship = { workspace = true }
substrate-frame-rpc-system = { workspace = true }
pallet-transaction-payment-rpc = { workspace = true }
frame-system-rpc-runtime-api = { workspace = true }
pallet-transaction-payment-rpc-runtime-api = { workspace = true }

# These dependencies are used for runtime benchmarking
frame-benchmarking = { workspace = true }
frame-benchmarking-cli = { workspace = true }

# Needed for Frontier
sc-consensus-manual-seal = { workspace = true }
sc-network-sync = { workspace = true }
substrate-prometheus-endpoint = { workspace = true }

# Frontier
fc-storage = { workspace = true }
fc-db = { workspace = true }
fc-consensus = { workspace = true }
fp-dynamic-fee = { workspace = true }
fc-api = { workspace = true }
fc-rpc = { workspace = true }
fc-rpc-core = { workspace = true }
fp-rpc = { workspace = true }
fc-mapping-sync = { workspace = true }

# Local Dependencies
node-subtensor-runtime = { path = "../runtime" }
subtensor-custom-rpc = { path = "../pallets/subtensor/rpc" }
Expand All @@ -83,7 +106,22 @@ subtensor-custom-rpc-runtime-api = { path = "../pallets/subtensor/runtime-api" }
substrate-build-script-utils = { workspace = true }

[features]
default = []
default = [
"rocksdb",
"sql",
"txpool",
]
sql = [
"fc-db/sql",
"fc-mapping-sync/sql",
]
rocksdb = [
"sc-service/rocksdb",
"fc-db/rocksdb",
"fc-mapping-sync/rocksdb",
]
txpool = ["fc-rpc/txpool"]

# Dependencies that are only required if runtime benchmarking should be build.
runtime-benchmarks = [
"node-subtensor-runtime/runtime-benchmarks",
Expand Down
12 changes: 6 additions & 6 deletions node/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//!
//! Should only be used for benchmarking as it may break in other contexts.

use crate::service::FullClient;
use crate::service::Client;

use node_subtensor_runtime as runtime;
use node_subtensor_runtime::check_nonce;
Expand All @@ -21,12 +21,12 @@ use std::{sync::Arc, time::Duration};
//
// Note: Should only be used for benchmarking.
pub struct RemarkBuilder {
client: Arc<FullClient>,
client: Arc<Client>,
}

impl RemarkBuilder {
// Creates a new [`Self`] from the given client.
pub fn new(client: Arc<FullClient>) -> Self {
pub fn new(client: Arc<Client>) -> Self {
Self { client }
}
}
Expand Down Expand Up @@ -58,14 +58,14 @@ impl frame_benchmarking_cli::ExtrinsicBuilder for RemarkBuilder {
//
// Note: Should only be used for benchmarking.
pub struct TransferKeepAliveBuilder {
client: Arc<FullClient>,
client: Arc<Client>,
dest: AccountId,
value: Balance,
}

impl TransferKeepAliveBuilder {
// Creates a new [`Self`] from the given client.
pub fn new(client: Arc<FullClient>, dest: AccountId, value: Balance) -> Self {
pub fn new(client: Arc<Client>, dest: AccountId, value: Balance) -> Self {
Self {
client,
dest,
Expand Down Expand Up @@ -105,7 +105,7 @@ impl frame_benchmarking_cli::ExtrinsicBuilder for TransferKeepAliveBuilder {
//
// Note: Should only be used for benchmarking.
pub fn create_benchmark_extrinsic(
client: &FullClient,
client: &Client,
sender: sp_core::sr25519::Pair,
call: runtime::RuntimeCall,
nonce: u32,
Expand Down
18 changes: 18 additions & 0 deletions node/src/cli.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::ethereum::EthConfiguration;
use sc_cli::RunCmd;

#[derive(Debug, clap::Parser)]
Expand All @@ -7,6 +8,13 @@ pub struct Cli {

#[clap(flatten)]
pub run: RunCmd,

/// Choose sealing method.
#[arg(long, value_enum, ignore_case = true)]
pub sealing: Option<Sealing>,

#[command(flatten)]
pub eth: EthConfiguration,
}

#[allow(clippy::large_enum_variant)]
Expand Down Expand Up @@ -45,3 +53,13 @@ pub enum Subcommand {
// Db meta columns information.
ChainInfo(sc_cli::ChainInfoCmd),
}

/// Available Sealing methods.
#[derive(Copy, Clone, Debug, Default, clap::ValueEnum)]
pub enum Sealing {
/// Seal using rpc method.
#[default]
Manual,
/// Seal when transaction is executed.
Instant,
}
76 changes: 76 additions & 0 deletions node/src/client.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
use scale_codec::Codec;
// Substrate
use sc_executor::WasmExecutor;
use sp_runtime::traits::{Block as BlockT, MaybeDisplay};

use crate::ethereum::EthCompatRuntimeApiCollection;

/// Full backend.
pub type FullBackend<B> = sc_service::TFullBackend<B>;
/// Full client.
pub type FullClient<B, RA, HF> = sc_service::TFullClient<B, RA, WasmExecutor<HF>>;

/// A set of APIs that every runtime must implement.
pub trait BaseRuntimeApiCollection<Block: BlockT>:
sp_api::ApiExt<Block>
+ sp_api::Metadata<Block>
+ sp_block_builder::BlockBuilder<Block>
+ sp_offchain::OffchainWorkerApi<Block>
+ sp_session::SessionKeys<Block>
+ sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
{
}

impl<Block, Api> BaseRuntimeApiCollection<Block> for Api
where
Block: BlockT,
Api: sp_api::ApiExt<Block>
+ sp_api::Metadata<Block>
+ sp_block_builder::BlockBuilder<Block>
+ sp_offchain::OffchainWorkerApi<Block>
+ sp_session::SessionKeys<Block>
+ sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>,
{
}

/// A set of APIs that Subtensor runtime must implement.
pub trait RuntimeApiCollection<
Block: BlockT,
AuraId: Codec,
AccountId: Codec,
Nonce: Codec,
Balance: Codec + MaybeDisplay,
>:
BaseRuntimeApiCollection<Block>
+ EthCompatRuntimeApiCollection<Block>
+ sp_consensus_aura::AuraApi<Block, AuraId>
+ sp_consensus_grandpa::GrandpaApi<Block>
+ frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce>
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ subtensor_custom_rpc_runtime_api::DelegateInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::NeuronInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::SubnetInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::SubnetRegistrationRuntimeApi<Block>
{
}

impl<Block, AuraId, AccountId, Nonce, Balance, Api>
RuntimeApiCollection<Block, AuraId, AccountId, Nonce, Balance> for Api
where
Block: BlockT,
AuraId: Codec,
AccountId: Codec,
Nonce: Codec,
Balance: Codec + MaybeDisplay,
Api: BaseRuntimeApiCollection<Block>
+ EthCompatRuntimeApiCollection<Block>
+ sp_consensus_aura::AuraApi<Block, AuraId>
+ sp_consensus_grandpa::GrandpaApi<Block>
+ frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce>
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ subtensor_custom_rpc_runtime_api::DelegateInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::NeuronInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::SubnetInfoRuntimeApi<Block>
+ subtensor_custom_rpc_runtime_api::SubnetRegistrationRuntimeApi<Block>,
{
}
Loading
Loading