4 Commits

Author SHA1 Message Date
rzadp 972a50ca8a copy from PR, run --help 2024-05-31 09:18:21 +02:00
rzadp 99a6e35248 rerun 2024-05-29 14:18:40 +02:00
rzadp 4443c86c7d try different base img 2024-05-29 13:59:32 +02:00
rzadp 8deba835b7 Try to build docker on ci 2024-05-29 13:18:19 +02:00
19 changed files with 10569 additions and 302 deletions
+3
View File
@@ -0,0 +1,3 @@
target/
Dockerfile
.dockerignore
+33
View File
@@ -0,0 +1,33 @@
name: Build docker image
on:
push:
branches:
- main
- master
- rzadp/test-dockerfile
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# We've run into out-of-disk error when compiling Polkadot in the next step, so we free up some space this way.
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # 1.3.1
with:
android: true # This alone is a 12 GB save.
# We disable the rest because it caused some problems. (they're enabled by default)
# The Android removal is enough.
dotnet: false
haskell: false
large-packages: false
swap-storage: false
- name: Build the docker image
run: docker build . -t polkadot-sdk-minimal-template
- name: Try running the container
run: docker run --rm polkadot-sdk-minimal-template --help
+3 -40
View File
@@ -7,9 +7,6 @@ on:
- main
- master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
ci:
@@ -37,41 +34,7 @@ jobs:
large-packages: false
swap-storage: false
- name: Build the template
run: cargo build
timeout-minutes: 90
- name: Run clippy
run: |
SKIP_WASM_BUILD=1 cargo clippy --all-targets --locked --workspace --quiet
SKIP_WASM_BUILD=1 cargo clippy --all-targets --all-features --locked --workspace --quiet
timeout-minutes: 30
- name: Run the tests
run: cargo test
timeout-minutes: 15
- name: Build the docs
run: cargo doc --all-features --workspace --no-deps
timeout-minutes: 15
build-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# We've run into out-of-disk error when compiling Polkadot in the next step, so we free up some space this way.
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # 1.3.1
with:
android: true # This alone is a 12 GB save.
# We disable the rest because it caused some problems. (they're enabled by default)
# The Android removal is enough.
dotnet: false
haskell: false
large-packages: false
swap-storage: false
- name: Build the Dockerfile
run: docker build . -t polkadot-sdk-minimal-template
- name: Check if it compiles
id: check-compilation
run: cargo check && cargo test
timeout-minutes: 90
Generated
+10395
View File
File diff suppressed because it is too large Load Diff
+41 -29
View File
@@ -13,34 +13,46 @@ members = [
]
resolver = "2"
[workspace.lints.rust]
suspicious_double_ref_op = { level = "allow", priority = 2 }
[workspace.lints.clippy]
all = { level = "allow", priority = 0 }
correctness = { level = "warn", priority = 1 }
complexity = { level = "warn", priority = 1 }
if-same-then-else = { level = "allow", priority = 2 }
zero-prefixed-literal = { level = "allow", priority = 2 } # 00_1000_000
type_complexity = { level = "allow", priority = 2 } # raison d'etre
nonminimal-bool = { level = "allow", priority = 2 } # maybe
borrowed-box = { level = "allow", priority = 2 } # Reasonable to fix this one
too-many-arguments = { level = "allow", priority = 2 } # (Turning this on would lead to)
needless-lifetimes = { level = "allow", priority = 2 } # generated code
unnecessary_cast = { level = "allow", priority = 2 } # Types may change
identity-op = { level = "allow", priority = 2 } # One case where we do 0 +
useless_conversion = { level = "allow", priority = 2 } # Types may change
unit_arg = { level = "allow", priority = 2 } # stylistic
option-map-unit-fn = { level = "allow", priority = 2 } # stylistic
bind_instead_of_map = { level = "allow", priority = 2 } # stylistic
erasing_op = { level = "allow", priority = 2 } # E.g. 0 * DOLLARS
eq_op = { level = "allow", priority = 2 } # In tests we test equality.
while_immutable_condition = { level = "allow", priority = 2 } # false positives
needless_option_as_deref = { level = "allow", priority = 2 } # false positives
derivable_impls = { level = "allow", priority = 2 } # false positives
stable_sort_primitive = { level = "allow", priority = 2 } # prefer stable sort
extra-unused-type-parameters = { level = "allow", priority = 2 } # stylistic
default_constructed_unit_structs = { level = "allow", priority = 2 } # stylistic
[workspace.dependencies]
clap = { version = "4.5.3" }
docify = { version = "0.2.8" }
frame = { path = "substrate/frame", default-features = false, package = "polkadot-sdk-frame", version = "0.5.0" }
futures = { version = "0.3.30" }
futures-timer = { version = "3.0.2" }
jsonrpsee = { version = "0.23.2" }
minimal-template-runtime = { path = "templates/minimal/runtime", version = "0.1.0" }
sc-basic-authorship = { path = "substrate/client/basic-authorship", default-features = false, version = "0.42.0" }
sc-cli = { path = "substrate/client/cli", default-features = false, version = "0.44.0" }
sc-client-api = { path = "substrate/client/api", default-features = false, version = "35.1.0" }
sc-consensus = { path = "substrate/client/consensus/common", default-features = false, version = "0.41.0" }
sc-consensus-manual-seal = { path = "substrate/client/consensus/manual-seal", default-features = false, version = "0.43.0" }
sc-executor = { path = "substrate/client/executor", default-features = false, version = "0.39.0" }
sc-network = { path = "substrate/client/network", default-features = false, version = "0.42.0" }
sc-offchain = { path = "substrate/client/offchain", default-features = false, version = "37.0.0" }
sc-rpc-api = { path = "substrate/client/rpc-api", default-features = false, version = "0.41.0" }
sc-service = { path = "substrate/client/service", default-features = false, version = "0.43.0" }
sc-telemetry = { path = "substrate/client/telemetry", default-features = false, version = "22.0.0" }
sc-transaction-pool = { path = "substrate/client/transaction-pool", default-features = false, version = "35.0.0" }
sc-transaction-pool-api = { path = "substrate/client/transaction-pool/api", default-features = false, version = "35.0.0" }
polkavm = "0.9.3"
polkavm-linker = "0.9.2"
polkavm-derive = "0.9.1"
log = { version = "0.4.21", default-features = false }
quote = { version = "1.0.33" }
serde = { version = "1.0.197", default-features = false }
serde-big-array = { version = "0.3.2" }
serde_derive = { version = "1.0.117" }
serde_json = { version = "1.0.114", default-features = false }
sp-api = { path = "substrate/primitives/api", default-features = false, version = "33.0.0" }
sp-block-builder = { path = "substrate/primitives/block-builder", default-features = false, version = "33.0.0" }
sp-blockchain = { path = "substrate/primitives/blockchain", default-features = false, version = "35.1.0" }
sp-io = { path = "substrate/primitives/io", default-features = false, version = "37.0.0" }
sp-keyring = { path = "substrate/primitives/keyring", default-features = false, version = "38.0.0" }
sp-runtime = { path = "substrate/primitives/runtime", default-features = false, version = "38.0.0" }
sp-timestamp = { path = "substrate/primitives/timestamp", default-features = false, version = "33.0.0" }
substrate-frame-rpc-system = { path = "substrate/utils/frame/rpc/system", default-features = false, version = "36.0.0" }
substrate-build-script-utils = { path = "substrate/utils/build-script-utils", default-features = false, version = "11.0.0" }
serde_yaml = { version = "0.9" }
syn = { version = "2.0.53" }
thiserror = { version = "1.0.48" }
tracing-subscriber = { version = "0.3.18" }
-24
View File
@@ -1,24 +0,0 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org>
+7 -95
View File
@@ -1,101 +1,13 @@
<div align="center">
# Minimal Template
# Polkadot SDK's Minimal Template
This is a minimal template for creating a blockchain using the Polkadot SDK.
<img height="70px" alt="Polkadot SDK Logo" src="https://github.com/paritytech/polkadot-sdk/raw/master/docs/images/Polkadot_Logo_Horizontal_Pink_White.png#gh-dark-mode-only"/>
<img height="70px" alt="Polkadot SDK Logo" src="https://github.com/paritytech/polkadot-sdk/raw/master/docs/images/Polkadot_Logo_Horizontal_Pink_Black.png#gh-light-mode-only"/>
# Docs
> This is a minimal template for creating a blockchain based on Polkadot SDK.
>
> This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk).
</div>
* 🤏 This template is a minimal (in terms of complexity and the number of components)
template for building a blockchain node.
* 🔧 Its runtime is configured of a single custom pallet as a starting point, and a handful of ready-made pallets
such as a [Balances pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_balances/index.html).
* 👤 The template has no consensus configured - it is best for experimenting with a single node network.
## Template Structure
A Polkadot SDK based project such as this one consists of:
* 💿 a [Node](./node/README.md) - the binary application.
* 🧮 the [Runtime](./runtime/README.md) - the core logic of the blockchain.
* 🎨 the [Pallets](./pallets/README.md) - from which the runtime is constructed.
## Getting Started
* 🦀 The template is using the Rust language.
* 👉 Check the
[Rust installation instructions](https://www.rust-lang.org/tools/install) for your system.
* 🛠️ Depending on your operating system and Rust version, there might be additional
packages required to compile this template - please take note of the Rust compiler output.
### Build
🔨 Use the following command to build the node without launching it:
You can generate and view the [Rust
Docs](https://doc.rust-lang.org/cargo/commands/cargo-doc.html) for this template
with this command:
```sh
cargo build --release
cargo doc -p minimal-template --open
```
🐳 Alternatively, build the docker image:
```sh
docker build . -t polkadot-sdk-minimal-template
```
### Single-Node Development Chain
👤 The following command starts a single-node development chain:
```sh
./target/release/minimal-template-node --dev
# docker version:
docker run --rm polkadot-sdk-minimal-template --dev
```
Development chains:
* 🧹 Do not persist the state.
* 💰 Are preconfigured with a genesis state that includes several prefunded development accounts.
* 🧑‍⚖️ Development accounts are used as `sudo` accounts.
### Connect with the Polkadot-JS Apps Front-End
* 🌐 You can interact with your local node using the
hosted version of the [Polkadot/Substrate
Portal](https://polkadot.js.org/apps/#/explorer?rpc=ws://localhost:9944).
* 🪐 A hosted version is also
available on [IPFS](https://dotapps.io/).
* 🧑‍🔧 You can also find the source code and instructions for hosting your own instance in the
[`polkadot-js/apps`](https://github.com/polkadot-js/apps) repository.
## Contributing
* 🔄 This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk).
* ➡️ Any pull requests should be directed to this [source](https://github.com/paritytech/polkadot-sdk/tree/master/templates/minimal).
* 😇 Please refer to the monorepo's
[contribution guidelines](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md) and
[Code of Conduct](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CODE_OF_CONDUCT.md).
## Getting Help
* 🧑‍🏫 To learn about Polkadot in general, [Polkadot.network](https://polkadot.network/) website is a good starting point.
* 🧑‍🔧 For technical introduction, [here](https://github.com/paritytech/polkadot-sdk#-documentation) are
the Polkadot SDK documentation resources.
* 👥 Additionally, there are [GitHub issues](https://github.com/paritytech/polkadot-sdk/issues) and
[Substrate StackExchange](https://substrate.stackexchange.com/).
+36 -31
View File
@@ -1,8 +1,8 @@
[package]
name = "minimal-template-node"
description = "A minimal Substrate-based Substrate node, ready for hacking. (polkadot v1.14.0)"
description = "A minimal Substrate-based Substrate node, ready for hacking. (polkadot v1.12.0)"
version = "0.1.0"
license = "Unlicense"
license = "MIT-0"
authors.workspace = true
homepage.workspace = true
repository.workspace = true
@@ -10,42 +10,47 @@ edition.workspace = true
publish = false
build = "build.rs"
[lints]
workspace = true
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
docify = { workspace = true }
clap = { features = ["derive"], workspace = true }
futures = { features = ["thread-pool"], workspace = true }
futures-timer = { workspace = true }
jsonrpsee = { features = ["server"], workspace = true }
clap = { version = "4.5.3", features = ["derive"] }
futures = { version = "0.3.30", features = ["thread-pool"] }
futures-timer = "3.0.1"
jsonrpsee = { version = "0.22", features = ["server"] }
serde_json = { workspace = true, default-features = true }
sc-cli = { version = "0.44.0", workspace = true, default-features = true }
sc-executor = { version = "0.39.0", workspace = true, default-features = true }
sc-network = { version = "0.42.0", workspace = true, default-features = true }
sc-service = { version = "0.43.0", workspace = true, default-features = true }
sc-telemetry = { version = "22.0.0", workspace = true, default-features = true }
sc-transaction-pool = { version = "35.0.0", workspace = true, default-features = true }
sc-transaction-pool-api = { version = "35.0.0", workspace = true, default-features = true }
sc-consensus = { version = "0.41.0", workspace = true, default-features = true }
sc-consensus-manual-seal = { version = "0.43.0", workspace = true, default-features = true }
sc-rpc-api = { version = "0.41.0", workspace = true, default-features = true }
sc-basic-authorship = { version = "0.42.0", workspace = true, default-features = true }
sc-offchain = { version = "37.0.0", workspace = true, default-features = true }
sc-client-api = { version = "35.1.0", workspace = true, default-features = true }
sp-timestamp = { version = "33.0.0", workspace = true, default-features = true }
sp-keyring = { version = "38.0.0", workspace = true, default-features = true }
sp-api = { version = "33.0.0", workspace = true, default-features = true }
sp-blockchain = { version = "35.1.0", workspace = true, default-features = true }
sp-block-builder = { version = "33.0.0", workspace = true, default-features = true }
sp-io = { version = "37.0.0", workspace = true, default-features = true }
sp-runtime = { version = "38.0.0", workspace = true, default-features = true }
substrate-frame-rpc-system = { version = "36.0.0", workspace = true, default-features = true }
frame = { features = ["experimental", "runtime"], workspace = true, default-features = true }
minimal-template-runtime = { version = "0.1.0", workspace = true }
sc-cli = { version = "0.42.0" }
sc-executor = { version = "0.38.0" }
sc-network = { version = "0.40.0" }
sc-service = { version = "0.41.0" }
sc-telemetry = { version = "20.0.0" }
sc-transaction-pool = { version = "34.0.0" }
sc-transaction-pool-api = { version = "34.0.0" }
sc-consensus = { version = "0.39.1" }
sc-consensus-manual-seal = { version = "0.41.0" }
sc-rpc-api = { version = "0.39.0" }
sc-basic-authorship = { version = "0.40.0" }
sc-offchain = { version = "35.0.0" }
sc-client-api = { version = "34.0.0" }
sp-timestamp = { version = "32.0.0" }
sp-keyring = { version = "37.0.0" }
sp-api = { version = "32.0.0" }
sp-blockchain = { version = "34.0.0" }
sp-block-builder = { version = "32.0.0" }
sp-io = { version = "36.0.0" }
sp-runtime = { version = "37.0.0" }
substrate-frame-rpc-system = { version = "34.0.0" }
# Once the native runtime is gone, there should be little to no dependency on FRAME here, and
# certainly no dependency on the runtime.
frame = { version = "0.3.0", package = "polkadot-sdk-frame", features = ["experimental", "runtime"] }
runtime = { package = "minimal-template-runtime", path = "../runtime", version = "0.1.0" }
[build-dependencies]
substrate-build-script-utils = { version = "11.0.0", workspace = true, default-features = true }
substrate-build-script-utils = { version = "11.0.0" }
[features]
default = []
-18
View File
@@ -1,18 +0,0 @@
# Node
️ A node - in Polkadot - is a binary executable, whose primary purpose is to execute the [runtime](../runtime/README.md).
🔗 It communicates with other nodes in the network, and aims for
[consensus](https://wiki.polkadot.network/docs/learn-consensus) among them.
⚙️ It acts as a remote procedure call (RPC) server, allowing interaction with the blockchain.
👉 Learn more about the architecture, and a difference between a node and a runtime
[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/reference_docs/wasm_meta_protocol/index.html).
👇 Here are the most important files in this node template:
- [`chain_spec.rs`](./src/chain_spec.rs): A chain specification is a source code file that defines the chain's
initial (genesis) state.
- [`service.rs`](./src/service.rs): This file defines the node implementation.
It's a place to configure consensus-related topics. In favor of minimalism, this template has no consensus configured.
+3 -3
View File
@@ -15,13 +15,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
use minimal_template_runtime::{BalancesConfig, SudoConfig, WASM_BINARY};
use runtime::{BalancesConfig, SudoConfig, WASM_BINARY};
use sc_service::{ChainType, Properties};
use serde_json::{json, Value};
use sp_keyring::AccountKeyring;
/// This is a specialization of the general Substrate ChainSpec type.
pub type ChainSpec = sc_service::GenericChainSpec;
pub type ChainSpec = sc_service::GenericChainSpec<()>;
fn props() -> Properties {
let mut properties = Properties::new();
@@ -43,7 +43,7 @@ pub fn development_config() -> Result<ChainSpec, String> {
/// Configure initial storage state for FRAME pallets.
fn testnet_genesis() -> Value {
use frame::traits::Get;
use minimal_template_runtime::interface::{Balance, MinimumBalance};
use runtime::interface::{Balance, MinimumBalance};
let endowment = <MinimumBalance as Get<Balance>>::get().max(1) * 1000;
let balances = AccountKeyring::iter()
.map(|a| (a.to_account_id(), endowment))
+1 -1
View File
@@ -32,7 +32,7 @@ impl std::str::FromStr for Consensus {
} else if let Some(block_time) = s.strip_prefix("manual-seal-") {
Consensus::ManualSeal(block_time.parse().map_err(|_| "invalid block time")?)
} else {
return Err("incorrect consensus identifier".into());
return Err("incorrect consensus identifier".into())
})
}
}
+1 -3
View File
@@ -114,9 +114,7 @@ pub fn run() -> sc_cli::Result<()> {
},
Some(Subcommand::ChainInfo(cmd)) => {
let runner = cli.create_runner(cmd)?;
runner.sync_run(|config| {
cmd.run::<minimal_template_runtime::interface::OpaqueBlock>(&config)
})
runner.sync_run(|config| cmd.run::<runtime::interface::OpaqueBlock>(&config))
},
None => {
let runner = cli.create_runner(&cli.run)?;
+2 -3
View File
@@ -23,10 +23,11 @@
#![warn(missing_docs)]
use jsonrpsee::RpcModule;
use minimal_template_runtime::interface::{AccountId, Nonce, OpaqueBlock};
use runtime::interface::{AccountId, Nonce, OpaqueBlock};
use sc_transaction_pool_api::TransactionPool;
use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata};
use std::sync::Arc;
use substrate_frame_rpc_system::{System, SystemApiServer};
pub use sc_rpc_api::DenyUnsafe;
@@ -40,7 +41,6 @@ pub struct FullDeps<C, P> {
pub deny_unsafe: DenyUnsafe,
}
#[docify::export]
/// Instantiate all full RPC extensions.
pub fn create_full<C, P>(
deps: FullDeps<C, P>,
@@ -57,7 +57,6 @@ where
C::Api: substrate_frame_rpc_system::AccountNonceApi<OpaqueBlock, AccountId, Nonce>,
P: TransactionPool + 'static,
{
use substrate_frame_rpc_system::{System, SystemApiServer};
let mut module = RpcModule::new(());
let FullDeps { client, pool, deny_unsafe } = deps;
+2 -4
View File
@@ -16,7 +16,7 @@
// limitations under the License.
use futures::FutureExt;
use minimal_template_runtime::{interface::OpaqueBlock as Block, RuntimeApi};
use runtime::{self, interface::OpaqueBlock as Block, RuntimeApi};
use sc_client_api::backend::Backend;
use sc_executor::WasmExecutor;
use sc_service::{error::Error as ServiceError, Configuration, TaskManager};
@@ -34,10 +34,8 @@ type HostFunctions =
#[cfg(not(feature = "runtime-benchmarks"))]
type HostFunctions = sp_io::SubstrateHostFunctions;
#[docify::export]
pub(crate) type FullClient =
sc_service::TFullClient<Block, RuntimeApi, WasmExecutor<HostFunctions>>;
type FullBackend = sc_service::TFullBackend<Block>;
type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>;
@@ -63,7 +61,7 @@ pub fn new_partial(config: &Configuration) -> Result<Service, ServiceError> {
})
.transpose()?;
let executor = sc_service::new_wasm_executor(config);
let executor = sc_service::new_wasm_executor(&config);
let (client, backend, keystore_container, task_manager) =
sc_service::new_full_parts::<Block, RuntimeApi, _>(
-13
View File
@@ -1,13 +0,0 @@
# Pallets
️ A pallet is a unit of encapsulated logic, with a clearly defined responsibility. A pallet is analogous to a
module in the runtime.
💁 In this template, there is a simple custom pallet based on the FRAME framework.
👉 Learn more about FRAME
[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html).
🧑‍🏫 Please refer to
[this guide](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/guides/your_first_pallet/index.html)
to learn how to write a basic pallet.
+10 -7
View File
@@ -1,25 +1,28 @@
[package]
name = "pallet-minimal-template"
description = "A minimal pallet built with FRAME, part of Polkadot Sdk. (polkadot v1.14.0)"
description = "A minimal pallet built with FRAME, part of Polkadot Sdk. (polkadot v1.12.0)"
version = "0.1.0"
license = "Unlicense"
license = "MIT-0"
authors.workspace = true
homepage.workspace = true
repository.workspace = true
edition.workspace = true
publish = false
[lints]
workspace = true
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { features = [
codec = { package = "parity-scale-codec", version = "3.0.0", features = [
"derive",
], workspace = true }
scale-info = { features = [
], default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = [
"derive",
], workspace = true }
frame = { features = ["experimental", "runtime"], workspace = true }
] }
frame = { version = "0.3.0", package = "polkadot-sdk-frame", default-features = false, features = ["experimental", "runtime"] }
[features]
+26 -15
View File
@@ -1,34 +1,45 @@
[package]
name = "minimal-template-runtime"
description = "A solochain runtime template built with Substrate, part of Polkadot Sdk. (polkadot v1.14.0)"
description = "A solochain runtime template built with Substrate, part of Polkadot Sdk. (polkadot v1.12.0)"
version = "0.1.0"
license = "Unlicense"
license = "MIT-0"
authors.workspace = true
homepage.workspace = true
repository.workspace = true
edition.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
codec = { workspace = true }
scale-info = { workspace = true }
frame = { features = ["experimental", "runtime"], workspace = true }
pallet-balances = { version = "37.0.0", workspace = true }
pallet-sudo = { version = "36.0.0", workspace = true }
pallet-timestamp = { version = "35.0.0", workspace = true }
pallet-transaction-payment = { version = "36.0.0", workspace = true }
pallet-transaction-payment-rpc-runtime-api = { version = "36.0.0", workspace = true }
sp-genesis-builder = { version = "0.14.0", workspace = true }
sp-runtime = { version = "38.0.0", features = ["serde"], workspace = true }
pallet-minimal-template = { version = "0.1.0", workspace = true }
parity-scale-codec = { version = "3.0.0", default-features = false }
scale-info = { version = "2.6.0", default-features = false }
# this is a frame-based runtime, thus importing `frame` with runtime feature enabled.
frame = { version = "0.3.0", package = "polkadot-sdk-frame", default-features = false, features = ["experimental", "runtime"] }
# pallets that we want to use
pallet-balances = { version = "35.0.0", default-features = false }
pallet-sudo = { version = "34.0.0", default-features = false }
pallet-timestamp = { version = "33.0.0", default-features = false }
pallet-transaction-payment = { version = "34.0.0", default-features = false }
pallet-transaction-payment-rpc-runtime-api = { version = "34.0.0", default-features = false }
# genesis builder that allows us to interact with runtime genesis config
sp-genesis-builder = { version = "0.13.0", default-features = false }
sp-runtime = { version = "37.0.0", default-features = false, features = ["serde"] }
# local pallet templates
pallet-minimal-template = { path = "../pallets/template", default-features = false, version = "0.1.0" }
[build-dependencies]
substrate-wasm-builder = { version = "23.0.0", optional = true, workspace = true, default-features = true }
substrate-wasm-builder = { version = "22.0.0", optional = true }
[features]
default = ["std"]
std = [
"codec/std",
"parity-scale-codec/std",
"scale-info/std",
"frame/std",
-10
View File
@@ -1,10 +0,0 @@
# Runtime
️ The runtime (in other words, a state transition function), refers to the core logic of the blockchain that is
responsible for validating blocks and executing the state changes they define.
💁 The runtime in this template is constructed using ready-made FRAME pallets that ship with
[Polkadot SDK](https://github.com/paritytech/polkadot-sdk), and a [template for a custom pallet](../pallets/README.md).
👉 Learn more about FRAME
[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html).
+6 -6
View File
@@ -99,27 +99,27 @@ mod runtime {
/// Mandatory system pallet that should always be included in a FRAME runtime.
#[runtime::pallet_index(0)]
pub type System = frame_system::Pallet<Runtime>;
pub type System = frame_system;
/// Provides a way for consensus systems to set and check the onchain time.
#[runtime::pallet_index(1)]
pub type Timestamp = pallet_timestamp::Pallet<Runtime>;
pub type Timestamp = pallet_timestamp;
/// Provides the ability to keep track of balances.
#[runtime::pallet_index(2)]
pub type Balances = pallet_balances::Pallet<Runtime>;
pub type Balances = pallet_balances;
/// Provides a way to execute privileged functions.
#[runtime::pallet_index(3)]
pub type Sudo = pallet_sudo::Pallet<Runtime>;
pub type Sudo = pallet_sudo;
/// Provides the ability to charge for extrinsic execution.
#[runtime::pallet_index(4)]
pub type TransactionPayment = pallet_transaction_payment::Pallet<Runtime>;
pub type TransactionPayment = pallet_transaction_payment;
/// A minimal pallet template.
#[runtime::pallet_index(5)]
pub type Template = pallet_minimal_template::Pallet<Runtime>;
pub type Template = pallet_minimal_template;
}
parameter_types! {