-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[tutmt][collectibles-workshop]: Done
- Loading branch information
Tu_TMTSoict
committed
Dec 22, 2022
1 parent
fdcf0a4
commit 1df5c91
Showing
31 changed files
with
11,384 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
[workspace] | ||
members = [ | ||
"node", | ||
"pallets/template", | ||
"runtime", | ||
"pallets/collectibles" | ||
] | ||
[profile.release] | ||
panic = "unwind" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# This is an example build stage for the node template. Here we create the binary in a temporary image. | ||
|
||
# This is a base image to build substrate nodes | ||
FROM docker.io/paritytech/ci-linux:production as builder | ||
|
||
WORKDIR /node-template | ||
COPY . . | ||
RUN cargo build --locked --release | ||
|
||
# This is the 2nd stage: a very small image where we copy the binary." | ||
FROM docker.io/library/ubuntu:20.04 | ||
LABEL description="Multistage Docker image for Substrate Node Template" \ | ||
image.type="builder" \ | ||
image.authors="[email protected]" \ | ||
image.vendor="Substrate Developer Hub" \ | ||
image.description="Multistage Docker image for Substrate Node Template" \ | ||
image.source="https://github.com/substrate-developer-hub/substrate-node-template" \ | ||
image.documentation="https://github.com/substrate-developer-hub/substrate-node-template" | ||
|
||
# Copy the node binary. | ||
COPY --from=builder /node-template/target/release/node-template /usr/local/bin | ||
|
||
RUN useradd -m -u 1000 -U -s /bin/sh -d /node-dev node-dev && \ | ||
mkdir -p /chain-data /node-dev/.local/share && \ | ||
chown -R node-dev:node-dev /chain-data && \ | ||
ln -s /chain-data /node-dev/.local/share/node-template && \ | ||
# unclutter and minimize the attack surface | ||
rm -rf /usr/bin /usr/sbin && \ | ||
# check if executable works in this container | ||
/usr/local/bin/node-template --version | ||
|
||
USER node-dev | ||
|
||
EXPOSE 30333 9933 9944 9615 | ||
VOLUME ["/chain-data"] | ||
|
||
ENTRYPOINT ["/usr/local/bin/node-template"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
version: "3.2" | ||
|
||
services: | ||
dev: | ||
container_name: node-template | ||
image: paritytech/ci-linux:production | ||
working_dir: /var/www/node-template | ||
ports: | ||
- "9944:9944" | ||
environment: | ||
- CARGO_HOME=/var/www/node-template/.cargo | ||
volumes: | ||
- .:/var/www/node-template | ||
- type: bind | ||
source: ./.local | ||
target: /root/.local | ||
command: bash -c "cargo build --release && ./target/release/node-template --dev --ws-external" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
--- | ||
title: Installation | ||
--- | ||
|
||
This guide is for reference only, please check the latest information on getting starting with Substrate | ||
[here](https://docs.substrate.io/main-docs/install/). | ||
|
||
This page will guide you through the **2 steps** needed to prepare a computer for **Substrate** development. | ||
Since Substrate is built with [the Rust programming language](https://www.rust-lang.org/), the first | ||
thing you will need to do is prepare the computer for Rust development - these steps will vary based | ||
on the computer's operating system. Once Rust is configured, you will use its toolchains to interact | ||
with Rust projects; the commands for Rust's toolchains will be the same for all supported, | ||
Unix-based operating systems. | ||
|
||
## Build dependencies | ||
|
||
Substrate development is easiest on Unix-based operating systems like macOS or Linux. The examples | ||
in the [Substrate Docs](https://docs.substrate.io) use Unix-style terminals to demonstrate how to | ||
interact with Substrate from the command line. | ||
|
||
### Ubuntu/Debian | ||
|
||
Use a terminal shell to execute the following commands: | ||
|
||
```bash | ||
sudo apt update | ||
# May prompt for location information | ||
sudo apt install -y git clang curl libssl-dev llvm libudev-dev | ||
``` | ||
|
||
### Arch Linux | ||
|
||
Run these commands from a terminal: | ||
|
||
```bash | ||
pacman -Syu --needed --noconfirm curl git clang | ||
``` | ||
|
||
### Fedora | ||
|
||
Run these commands from a terminal: | ||
|
||
```bash | ||
sudo dnf update | ||
sudo dnf install clang curl git openssl-devel | ||
``` | ||
|
||
### OpenSUSE | ||
|
||
Run these commands from a terminal: | ||
|
||
```bash | ||
sudo zypper install clang curl git openssl-devel llvm-devel libudev-devel | ||
``` | ||
|
||
### macOS | ||
|
||
> **Apple M1 ARM** | ||
> If you have an Apple M1 ARM system on a chip, make sure that you have Apple Rosetta 2 | ||
> installed through `softwareupdate --install-rosetta`. This is only needed to run the | ||
> `protoc` tool during the build. The build itself and the target binaries would remain native. | ||
Open the Terminal application and execute the following commands: | ||
|
||
```bash | ||
# Install Homebrew if necessary https://brew.sh/ | ||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" | ||
|
||
# Make sure Homebrew is up-to-date, install openssl | ||
brew update | ||
brew install openssl | ||
``` | ||
|
||
### Windows | ||
|
||
**_PLEASE NOTE:_** Native Windows development of Substrate is _not_ very well supported! It is _highly_ | ||
recommend to use [Windows Subsystem Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) | ||
(WSL) and follow the instructions for [Ubuntu/Debian](#ubuntudebian). | ||
Please refer to the separate | ||
[guide for native Windows development](https://docs.substrate.io/main-docs/install/windows/). | ||
|
||
## Rust developer environment | ||
|
||
This guide uses <https://rustup.rs> installer and the `rustup` tool to manage the Rust toolchain. | ||
First install and configure `rustup`: | ||
|
||
```bash | ||
# Install | ||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | ||
# Configure | ||
source ~/.cargo/env | ||
``` | ||
|
||
Configure the Rust toolchain to default to the latest stable version, add nightly and the nightly wasm target: | ||
|
||
```bash | ||
rustup default stable | ||
rustup update | ||
rustup update nightly | ||
rustup target add wasm32-unknown-unknown --toolchain nightly | ||
``` | ||
|
||
## Test your set-up | ||
|
||
Now the best way to ensure that you have successfully prepared a computer for Substrate | ||
development is to follow the steps in [our first Substrate tutorial](https://docs.substrate.io/tutorials/v3/create-your-first-substrate-chain/). | ||
|
||
## Troubleshooting Substrate builds | ||
|
||
Sometimes you can't get the Substrate node template | ||
to compile out of the box. Here are some tips to help you work through that. | ||
|
||
### Rust configuration check | ||
|
||
To see what Rust toolchain you are presently using, run: | ||
|
||
```bash | ||
rustup show | ||
``` | ||
|
||
This will show something like this (Ubuntu example) output: | ||
|
||
```text | ||
Default host: x86_64-unknown-linux-gnu | ||
rustup home: /home/user/.rustup | ||
installed toolchains | ||
-------------------- | ||
stable-x86_64-unknown-linux-gnu (default) | ||
nightly-2020-10-06-x86_64-unknown-linux-gnu | ||
nightly-x86_64-unknown-linux-gnu | ||
installed targets for active toolchain | ||
-------------------------------------- | ||
wasm32-unknown-unknown | ||
x86_64-unknown-linux-gnu | ||
active toolchain | ||
---------------- | ||
stable-x86_64-unknown-linux-gnu (default) | ||
rustc 1.50.0 (cb75ad5db 2021-02-10) | ||
``` | ||
|
||
As you can see above, the default toolchain is stable, and the | ||
`nightly-x86_64-unknown-linux-gnu` toolchain as well as its `wasm32-unknown-unknown` target is installed. | ||
You also see that `nightly-2020-10-06-x86_64-unknown-linux-gnu` is installed, but is not used unless explicitly defined as illustrated in the [specify your nightly version](#specifying-nightly-version) | ||
section. | ||
|
||
### WebAssembly compilation | ||
|
||
Substrate uses [WebAssembly](https://webassembly.org) (Wasm) to produce portable blockchain | ||
runtimes. You will need to configure your Rust compiler to use | ||
[`nightly` builds](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html) to allow you to | ||
compile Substrate runtime code to the Wasm target. | ||
|
||
> There are upstream issues in Rust that need to be resolved before all of Substrate can use the stable Rust toolchain. | ||
> [This is our tracking issue](https://github.com/paritytech/substrate/issues/1252) if you're curious as to why and how this will be resolved. | ||
#### Latest nightly for Substrate `master` | ||
|
||
Developers who are building Substrate _itself_ should always use the latest bug-free versions of | ||
Rust stable and nightly. This is because the Substrate codebase follows the tip of Rust nightly, | ||
which means that changes in Substrate often depend on upstream changes in the Rust nightly compiler. | ||
To ensure your Rust compiler is always up to date, you should run: | ||
|
||
```bash | ||
rustup update | ||
rustup update nightly | ||
rustup target add wasm32-unknown-unknown --toolchain nightly | ||
``` | ||
|
||
> NOTE: It may be necessary to occasionally rerun `rustup update` if a change in the upstream Substrate | ||
> codebase depends on a new feature of the Rust compiler. When you do this, both your nightly | ||
> and stable toolchains will be pulled to the most recent release, and for nightly, it is | ||
> generally _not_ expected to compile WASM without error (although it very often does). | ||
> Be sure to [specify your nightly version](#specifying-nightly-version) if you get WASM build errors | ||
> from `rustup` and [downgrade nightly as needed](#downgrading-rust-nightly). | ||
#### Rust nightly toolchain | ||
|
||
If you want to guarantee that your build works on your computer as you update Rust and other | ||
dependencies, you should use a specific Rust nightly version that is known to be | ||
compatible with the version of Substrate they are using; this version will vary from project to | ||
project and different projects may use different mechanisms to communicate this version to | ||
developers. For instance, the Polkadot client specifies this information in its | ||
[release notes](https://github.com/paritytech/polkadot/releases). | ||
|
||
```bash | ||
# Specify the specific nightly toolchain in the date below: | ||
rustup install nightly-<yyyy-MM-dd> | ||
``` | ||
|
||
#### Wasm toolchain | ||
|
||
Now, configure the nightly version to work with the Wasm compilation target: | ||
|
||
```bash | ||
rustup target add wasm32-unknown-unknown --toolchain nightly-<yyyy-MM-dd> | ||
``` | ||
|
||
### Specifying nightly version | ||
|
||
Use the `WASM_BUILD_TOOLCHAIN` environment variable to specify the Rust nightly version a Substrate | ||
project should use for Wasm compilation: | ||
|
||
```bash | ||
WASM_BUILD_TOOLCHAIN=nightly-<yyyy-MM-dd> cargo build --release | ||
``` | ||
|
||
> Note that this only builds _the runtime_ with the specified nightly. The rest of project will be | ||
> compiled with **your default toolchain**, i.e. the latest installed stable toolchain. | ||
### Downgrading Rust nightly | ||
|
||
If your computer is configured to use the latest Rust nightly and you would like to downgrade to a | ||
specific nightly version, follow these steps: | ||
|
||
```bash | ||
rustup uninstall nightly | ||
rustup install nightly-<yyyy-MM-dd> | ||
rustup target add wasm32-unknown-unknown --toolchain nightly-<yyyy-MM-dd> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
[package] | ||
name = "node-template" | ||
version = "4.0.0-dev" | ||
description = "A fresh FRAME-based Substrate node, ready for hacking." | ||
authors = ["Substrate DevHub <https://github.com/substrate-developer-hub>"] | ||
homepage = "https://substrate.io/" | ||
edition = "2021" | ||
license = "Unlicense" | ||
publish = false | ||
repository = "https://github.com/substrate-developer-hub/substrate-node-template/" | ||
build = "build.rs" | ||
|
||
[package.metadata.docs.rs] | ||
targets = ["x86_64-unknown-linux-gnu"] | ||
|
||
[[bin]] | ||
name = "node-template" | ||
|
||
[dependencies] | ||
clap = { version = "4.0.9", features = ["derive"] } | ||
futures = { version = "0.3.21", features = ["thread-pool"]} | ||
|
||
sc-cli = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-executor = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-service = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-telemetry = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-keystore = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-transaction-pool = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-finality-grandpa = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-finality-grandpa = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-client-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-runtime = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-timestamp = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-inherents = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-keyring = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
frame-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
frame-support = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
|
||
|
||
# These dependencies are used for the node template's RPCs | ||
jsonrpsee = { version = "0.16.2", features = ["server"] } | ||
sc-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-rpc-api = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sp-block-builder = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
sc-basic-authorship = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
substrate-frame-rpc-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
pallet-transaction-payment-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
|
||
# These dependencies are used for runtime benchmarking | ||
frame-benchmarking = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
frame-benchmarking-cli = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
|
||
# Local Dependencies | ||
node-template-runtime = { version = "4.0.0-dev", path = "../runtime" } | ||
|
||
# CLI-specific dependencies | ||
try-runtime-cli = { version = "0.10.0-dev", optional = true, git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
|
||
[build-dependencies] | ||
substrate-build-script-utils = { version = "3.0.0", git = "https://github.com/paritytech/substrate.git", " branch" = "polkadot-v0.9.35" } | ||
|
||
[features] | ||
default = [] | ||
# Dependencies that are only required if runtime benchmarking should be build. | ||
runtime-benchmarks = [ | ||
"node-template-runtime/runtime-benchmarks", | ||
"frame-benchmarking/runtime-benchmarks", | ||
"frame-benchmarking-cli/runtime-benchmarks", | ||
] | ||
# Enable features that allow the runtime to be tried and debugged. Name might be subject to change | ||
# in the near future. | ||
try-runtime = ["node-template-runtime/try-runtime", "try-runtime-cli/try-runtime"] |
Oops, something went wrong.