From eaeac9e804baf59f8168feb1b492b6d7501860ba Mon Sep 17 00:00:00 2001 From: Rob Thijssen Date: Mon, 7 Jun 2021 14:05:20 +0300 Subject: [PATCH] set version, automate release --- .github/workflows/release.yml | 41 +++++++ Cargo.lock | 144 ++++++++++++------------ README.md | 200 +--------------------------------- node/Cargo.toml | 18 +-- node/src/chain_spec.rs | 2 +- node/src/command.rs | 4 +- node/src/rpc.rs | 2 +- node/src/service.rs | 6 +- runtime/Cargo.toml | 13 ++- 9 files changed, 139 insertions(+), 291 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f308828 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +--- +name: release +on: + push: + tags: + - v[0-9]+.[0-9]+.[0-9]+* +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - name: parse tag + id: parse_tag + uses: actions/github-script@v4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + result-encoding: string + script: | + return context.payload.ref.replace(/refs\/tags\//, '') + - uses: actions/checkout@v2 + with: + ref: ${{ steps.parse_tag.outputs.result }} + fetch-depth: 1 + - name: dependencies + run: | + rustup update nightly + rustup update stable + rustup target add wasm32-unknown-unknown --toolchain nightly + cargo +nightly install --git https://github.com/alexcrichton/wasm-gc --force + - name: build + run: cargo build --verbose --release -p snapr + - name: strip + run: strip target/release/snapr + - name: rename + run: mv target/release/snapr target/release/snapr_${{ steps.parse_tag.outputs.result }}_amd64 + - name: publish + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: | + target/release/snapr_${{ steps.parse_tag.outputs.result }}_amd64 diff --git a/Cargo.lock b/Cargo.lock index 3208cd0..5e58136 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3670,78 +3670,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "node-template" -version = "3.0.0" -dependencies = [ - "frame-benchmarking", - "frame-benchmarking-cli", - "jsonrpc-core", - "node-template-runtime", - "pallet-transaction-payment-rpc", - "sc-basic-authorship", - "sc-cli", - "sc-client-api", - "sc-consensus", - "sc-consensus-aura", - "sc-executor", - "sc-finality-grandpa", - "sc-keystore", - "sc-rpc", - "sc-rpc-api", - "sc-service", - "sc-telemetry", - "sc-transaction-pool", - "sp-api", - "sp-block-builder", - "sp-blockchain", - "sp-consensus", - "sp-consensus-aura", - "sp-core", - "sp-finality-grandpa", - "sp-inherents", - "sp-runtime", - "sp-transaction-pool", - "structopt", - "substrate-build-script-utils", - "substrate-frame-rpc-system", -] - -[[package]] -name = "node-template-runtime" -version = "3.0.0" -dependencies = [ - "frame-benchmarking", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "hex-literal", - "pallet-aura", - "pallet-balances", - "pallet-grandpa", - "pallet-randomness-collective-flip", - "pallet-sudo", - "pallet-template", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "parity-scale-codec", - "sp-api", - "sp-block-builder", - "sp-consensus-aura", - "sp-core", - "sp-inherents", - "sp-offchain", - "sp-runtime", - "sp-session", - "sp-std", - "sp-transaction-pool", - "sp-version", - "substrate-wasm-builder", -] - [[package]] name = "nodrop" version = "0.1.14" @@ -6364,6 +6292,78 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +[[package]] +name = "snapr" +version = "0.0.1" +dependencies = [ + "frame-benchmarking", + "frame-benchmarking-cli", + "jsonrpc-core", + "pallet-transaction-payment-rpc", + "sc-basic-authorship", + "sc-cli", + "sc-client-api", + "sc-consensus", + "sc-consensus-aura", + "sc-executor", + "sc-finality-grandpa", + "sc-keystore", + "sc-rpc", + "sc-rpc-api", + "sc-service", + "sc-telemetry", + "sc-transaction-pool", + "snapr-runtime", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-finality-grandpa", + "sp-inherents", + "sp-runtime", + "sp-transaction-pool", + "structopt", + "substrate-build-script-utils", + "substrate-frame-rpc-system", +] + +[[package]] +name = "snapr-runtime" +version = "0.0.1" +dependencies = [ + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "hex-literal", + "pallet-aura", + "pallet-balances", + "pallet-grandpa", + "pallet-randomness-collective-flip", + "pallet-sudo", + "pallet-template", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "parity-scale-codec", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "substrate-wasm-builder", +] + [[package]] name = "snow" version = "0.7.2" diff --git a/README.md b/README.md index 2f882d4..0c38747 100644 --- a/README.md +++ b/README.md @@ -1,198 +1,2 @@ -# Substrate Node Template - -[![Try on playground](https://img.shields.io/badge/Playground-Node_Template-brightgreen?logo=Parity%20Substrate)](https://playground.substrate.dev/?deploy=node-template) - -A fresh FRAME-based [Substrate](https://www.substrate.io/) node, ready for hacking :rocket: - -## Getting Started - -Follow the steps below to get started with the Node Template, or get it up and running right from your browser -in just a few clicks using [Playground](https://playground.substrate.dev/) :hammer_and_wrench: - -### Using Nix - -Install [nix](https://nixos.org/) and optionally [direnv](https://github.com/direnv/direnv) and [lorri](https://github.com/target/lorri) for a fully plug -and play experience for setting up the development environment. To get all the correct dependencies activate direnv `direnv allow` and lorri `lorri shell`. - -### Rust Setup - -First, complete the [basic Rust setup instructions](./docs/rust-setup.md). - -### Run - -Use Rust's native `cargo` command to build and launch the template node: - -```sh -cargo run --release -- --dev --tmp -``` - -### Build - -The `cargo run` command will perform an initial build. Use the following command to build the node -without launching it: - -```sh -cargo build --release -``` - -### Embedded Docs - -Once the project has been built, the following command can be used to explore all parameters and -subcommands: - -```sh -./target/release/node-template -h -``` - -## Run - -The provided `cargo run` command will launch a temporary node and its state will be discarded after -you terminate the process. After the project has been built, there are other ways to launch the -node. - -### Single-Node Development Chain - -This command will start the single-node development chain with persistent state: - -```bash -./target/release/node-template --dev -``` - -Purge the development chain's state: - -```bash -./target/release/node-template purge-chain --dev -``` - -Start the development chain with detailed logging: - -```bash -RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/node-template -lruntime=debug --dev -``` - -### Connect with Polkadot-JS Apps Front-end - -Once the node template is running locally, you can connect it with **Polkadot-JS Apps** front-end -to interact with your chain. [Click here](https://polkadot.js.org/apps/#/explorer?rpc=ws://localhost:9944) connecting the Apps to your local node template. - -### Multi-Node Local Testnet - -If you want to see the multi-node consensus algorithm in action, refer to -[our Start a Private Network tutorial](https://substrate.dev/docs/en/tutorials/start-a-private-network/). - -## Template Structure - -A Substrate project such as this consists of a number of components that are spread across a few -directories. - -### Node - -A blockchain node is an application that allows users to participate in a blockchain network. -Substrate-based blockchain nodes expose a number of capabilities: - -- Networking: Substrate nodes use the [`libp2p`](https://libp2p.io/) networking stack to allow the - nodes in the network to communicate with one another. -- Consensus: Blockchains must have a way to come to - [consensus](https://substrate.dev/docs/en/knowledgebase/advanced/consensus) on the state of the - network. Substrate makes it possible to supply custom consensus engines and also ships with - several consensus mechanisms that have been built on top of - [Web3 Foundation research](https://research.web3.foundation/en/latest/polkadot/NPoS/index.html). -- RPC Server: A remote procedure call (RPC) server is used to interact with Substrate nodes. - -There are several files in the `node` directory - take special note of the following: - -- [`chain_spec.rs`](./node/src/chain_spec.rs): A - [chain specification](https://substrate.dev/docs/en/knowledgebase/integrate/chain-spec) is a - source code file that defines a Substrate chain's initial (genesis) state. Chain specifications - are useful for development and testing, and critical when architecting the launch of a - production chain. Take note of the `development_config` and `testnet_genesis` functions, which - are used to define the genesis state for the local development chain configuration. These - functions identify some - [well-known accounts](https://substrate.dev/docs/en/knowledgebase/integrate/subkey#well-known-keys) - and use them to configure the blockchain's initial state. -- [`service.rs`](./node/src/service.rs): This file defines the node implementation. Take note of - the libraries that this file imports and the names of the functions it invokes. In particular, - there are references to consensus-related topics, such as the - [longest chain rule](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#longest-chain-rule), - the [Aura](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#aura) block authoring - mechanism and the - [GRANDPA](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#grandpa) finality - gadget. - -After the node has been [built](#build), refer to the embedded documentation to learn more about the -capabilities and configuration parameters that it exposes: - -```shell -./target/release/node-template --help -``` - -### Runtime - -In Substrate, the terms -"[runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime)" and -"[state transition function](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#stf-state-transition-function)" -are analogous - they refer to the core logic of the blockchain that is responsible for validating -blocks and executing the state changes they define. The Substrate project in this repository uses -the [FRAME](https://substrate.dev/docs/en/knowledgebase/runtime/frame) framework to construct a -blockchain runtime. FRAME allows runtime developers to declare domain-specific logic in modules -called "pallets". At the heart of FRAME is a helpful -[macro language](https://substrate.dev/docs/en/knowledgebase/runtime/macros) that makes it easy to -create pallets and flexibly compose them to create blockchains that can address -[a variety of needs](https://www.substrate.io/substrate-users/). - -Review the [FRAME runtime implementation](./runtime/src/lib.rs) included in this template and note -the following: - -- This file configures several pallets to include in the runtime. Each pallet configuration is - defined by a code block that begins with `impl $PALLET_NAME::Config for Runtime`. -- The pallets are composed into a single runtime by way of the - [`construct_runtime!`](https://crates.parity.io/frame_support/macro.construct_runtime.html) - macro, which is part of the core - [FRAME Support](https://substrate.dev/docs/en/knowledgebase/runtime/frame#support-library) - library. - -### Pallets - -The runtime in this project is constructed using many FRAME pallets that ship with the -[core Substrate repository](https://github.com/paritytech/substrate/tree/master/frame) and a -template pallet that is [defined in the `pallets`](./pallets/template/src/lib.rs) directory. - -A FRAME pallet is compromised of a number of blockchain primitives: - -- Storage: FRAME defines a rich set of powerful - [storage abstractions](https://substrate.dev/docs/en/knowledgebase/runtime/storage) that makes - it easy to use Substrate's efficient key-value database to manage the evolving state of a - blockchain. -- Dispatchables: FRAME pallets define special types of functions that can be invoked (dispatched) - from outside of the runtime in order to update its state. -- Events: Substrate uses [events](https://substrate.dev/docs/en/knowledgebase/runtime/events) to - notify users of important changes in the runtime. -- Errors: When a dispatchable fails, it returns an error. -- Config: The `Config` configuration interface is used to define the types and parameters upon - which a FRAME pallet depends. - -### Run in Docker - -First, install [Docker](https://docs.docker.com/get-docker/) and -[Docker Compose](https://docs.docker.com/compose/install/). - -Then run the following command to start a single node development chain. - -```bash -./scripts/docker_run.sh -``` - -This command will firstly compile your code, and then start a local development network. You can -also replace the default command (`cargo build --release && ./target/release/node-template --dev --ws-external`) -by appending your own. A few useful ones are as follow. - -```bash -# Run Substrate node without re-compiling -./scripts/docker_run.sh ./target/release/node-template --dev --ws-external - -# Purge the local dev chain -./scripts/docker_run.sh ./target/release/node-template purge-chain --dev - -# Check whether the code is compilable -./scripts/docker_run.sh cargo check -``` +# snapr +## universal basic income - powered by [substrate](https://www.substrate.io/) diff --git a/node/Cargo.toml b/node/Cargo.toml index e138c95..2eeff3f 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -1,16 +1,16 @@ [package] -authors = ['Substrate DevHub '] +authors = ['Substrate DevHub ', 'snapr contributors '] build = 'build.rs' -description = 'A fresh FRAME-based Substrate node, ready for hacking.' +description = 'universal basic income on substrate' edition = '2018' -homepage = 'https://substrate.dev' +homepage = 'https://snapr.org' license = 'Unlicense' -name = 'node-template' -repository = 'https://github.com/substrate-developer-hub/substrate-node-template/' -version = '3.0.0' +name = 'snapr' +repository = 'https://github.com/snapr-org/snapr' +version = '0.0.1' [[bin]] -name = 'node-template' +name = 'snapr' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] @@ -52,8 +52,8 @@ sp-transaction-pool = {version = '3.0.0', git = 'https://github.com/paritytech/s substrate-frame-rpc-system = {version = '3.0.0', git = 'https://github.com/paritytech/substrate.git', tag = 'monthly-2021-05'} # local dependencies -node-template-runtime = {version = '3.0.0', path = '../runtime'} +snapr-runtime = {version = '0.0.1', path = '../runtime'} [features] default = [] -runtime-benchmarks = ['node-template-runtime/runtime-benchmarks'] +runtime-benchmarks = ['snapr-runtime/runtime-benchmarks'] diff --git a/node/src/chain_spec.rs b/node/src/chain_spec.rs index f7ed872..004acc9 100644 --- a/node/src/chain_spec.rs +++ b/node/src/chain_spec.rs @@ -1,5 +1,5 @@ use sp_core::{Pair, Public, sr25519}; -use node_template_runtime::{ +use snapr_runtime::{ AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, SudoConfig, SystemConfig, WASM_BINARY, Signature }; diff --git a/node/src/command.rs b/node/src/command.rs index e61dd86..88b3849 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -19,7 +19,7 @@ use crate::{chain_spec, service}; use crate::cli::{Cli, Subcommand}; use sc_cli::{SubstrateCli, RuntimeVersion, Role, ChainSpec}; use sc_service::PartialComponents; -use node_template_runtime::Block; +use snapr_runtime::Block; impl SubstrateCli for Cli { fn impl_name() -> String { @@ -57,7 +57,7 @@ impl SubstrateCli for Cli { } fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { - &node_template_runtime::VERSION + &snapr_runtime::VERSION } } diff --git a/node/src/rpc.rs b/node/src/rpc.rs index c1f0e0a..6c805e6 100644 --- a/node/src/rpc.rs +++ b/node/src/rpc.rs @@ -7,7 +7,7 @@ use std::sync::Arc; -use node_template_runtime::{opaque::Block, AccountId, Balance, Index}; +use snapr_runtime::{opaque::Block, AccountId, Balance, Index}; use sp_api::ProvideRuntimeApi; use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend}; use sp_block_builder::BlockBuilder; diff --git a/node/src/service.rs b/node/src/service.rs index 197a495..9116389 100644 --- a/node/src/service.rs +++ b/node/src/service.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use std::time::Duration; use sc_client_api::{ExecutorProvider, RemoteBackend}; -use node_template_runtime::{self, opaque::Block, RuntimeApi}; +use snapr_runtime::{self, opaque::Block, RuntimeApi}; use sc_service::{error::Error as ServiceError, Configuration, TaskManager}; use sp_inherents::InherentDataProviders; use sc_executor::native_executor_instance; @@ -17,8 +17,8 @@ use sc_telemetry::{Telemetry, TelemetryWorker}; // Our native executor instance. native_executor_instance!( pub Executor, - node_template_runtime::api::dispatch, - node_template_runtime::native_version, + snapr_runtime::api::dispatch, + snapr_runtime::native_version, frame_benchmarking::benchmarking::HostFunctions, ); diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 522b423..c2a6648 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,11 +1,14 @@ [package] -authors = ['Substrate DevHub '] +authors = [ + 'Substrate DevHub ', + 'snapr contributors ' +] edition = '2018' -homepage = 'https://substrate.dev' +homepage = 'https://snapr.org' license = 'Unlicense' -name = 'node-template-runtime' -repository = 'https://github.com/substrate-developer-hub/substrate-node-template/' -version = '3.0.0' +name = 'snapr-runtime' +repository = 'https://github.com/snapr-org/snapr' +version = '0.0.1' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu']