mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 10:07:56 +00:00
221 lines
6.5 KiB
Plaintext
221 lines
6.5 KiB
Plaintext
= Polkadot
|
|
:Author: Polkadot developers
|
|
:Revision: 0.2.0
|
|
:toc:
|
|
:sectnums:
|
|
|
|
Implementation of a https://polkadot.network node in Rust.
|
|
|
|
== NOTE
|
|
|
|
We have recently split our implementation of Polkadot from its platform-level component "Substrate".
|
|
When we split them, we split the Polkadot code off into another repo, leaving the substrate repo to
|
|
be what used to be Polkadot, along with its branches and releases.
|
|
|
|
Things will be a little odd for a while. Polkadot PoC-2 remains as a branch `v0.2` in the **Substrate**
|
|
repo. Polkadot PoC-3 *will be* in branch `v0.3` in the **Polkadot** repo. To play on the ("Krumme Lancke")
|
|
testnet, you'll want the PoC-2 code which is in the **Substrate** repo. These instructions are up to date
|
|
with this, but if you see "substrate" and are wondering why you need it for Polkadot, now you know.
|
|
|
|
|
|
== To play
|
|
|
|
If you'd like to play with Polkadot, you'll need to install a client like this
|
|
one. First, get Rust (1.26.1 or later) and the support software if you don't already have it:
|
|
|
|
[source, shell]
|
|
----
|
|
curl https://sh.rustup.rs -sSf | sh
|
|
sudo apt install make clang pkg-config libssl-dev
|
|
----
|
|
|
|
Then, install Polkadot PoC-2:
|
|
|
|
[source, shell]
|
|
cargo install --git https://github.com/paritytech/substrate.git --branch v0.2 polkadot
|
|
|
|
You'll now have a `polkadot` binary installed to your `PATH`. You can run `cargo install --git https://github.com/paritytech/polkadot.git polkadot` to get the very latest version of Polkadot,
|
|
but these instructions will not work in that case.
|
|
|
|
If you want a specific version of polkadot, say `0.2.5`, you may run `cargo install --git https://github.com/paritytech/substrate.git --tag v0.2.5 polkadot`.
|
|
|
|
=== Krumme Lanke Testnet
|
|
|
|
You will connect to the global Krumme Lanke testnet by default. To do this, just use:
|
|
|
|
[source, shell]
|
|
polkadot
|
|
|
|
If you want to do anything on it (not that there's much to do), then you'll need
|
|
to get some Krumme Lanke DOTs. Ask in the Polkadot watercooler.
|
|
|
|
=== Development
|
|
|
|
You can run a simple single-node development "network" on your machine by
|
|
running in a terminal:
|
|
|
|
[source, shell]
|
|
polkadot --dev
|
|
|
|
You can muck around by cloning and building the http://github.com/paritytech/polka-ui and http://github.com/paritytech/polkadot-ui or just heading to https://polkadot.js.org/apps.
|
|
|
|
|
|
== Local Two-node Testnet
|
|
|
|
If you want to see the multi-node consensus algorithm in action locally, then
|
|
you can create a local testnet. You'll need two terminals open. In one, run:
|
|
|
|
[source, shell]
|
|
polkadot --chain=local --validator --key Alice -d /tmp/alice
|
|
|
|
and in the other, run:
|
|
|
|
[source, shell]
|
|
polkadot --chain=local --validator --key Bob -d /tmp/bob --port 30334 --bootnodes '/ip4/127.0.0.1/tcp/30333/p2p/ALICE_BOOTNODE_ID_HERE'
|
|
|
|
Ensure you replace `ALICE_BOOTNODE_ID_HERE` with the node ID from the output of
|
|
the first terminal.
|
|
|
|
|
|
== Hacking on Polkadot
|
|
|
|
If you'd actually like hack on Polkadot, you can just grab the source code and
|
|
build it. Ensure you have Rust and the support software installed:
|
|
|
|
[source, shell]
|
|
----
|
|
curl https://sh.rustup.rs -sSf | sh
|
|
rustup update nightly
|
|
rustup target add wasm32-unknown-unknown --toolchain nightly
|
|
rustup update stable
|
|
cargo install --git https://github.com/alexcrichton/wasm-gc
|
|
sudo apt install cmake pkg-config libssl-dev git
|
|
----
|
|
|
|
Then, grab the Polkadot source code:
|
|
|
|
[source, shell]
|
|
----
|
|
git clone https://github.com/paritytech/polkadot.git
|
|
cd polkadot
|
|
----
|
|
|
|
Then build the code:
|
|
|
|
[source, shell]
|
|
----
|
|
./scripts/build.sh # Builds the WebAssembly binaries
|
|
cargo build # Builds all native code
|
|
----
|
|
|
|
You can run the tests if you like:
|
|
|
|
[source, shell]
|
|
cargo test --all
|
|
|
|
You can start a development chain with:
|
|
|
|
[source, shell]
|
|
cargo run -- --dev
|
|
|
|
|
|
== Using Docker
|
|
|
|
=== The easiest way
|
|
|
|
The easiest/faster option is to use the latest image.
|
|
|
|
|
|
.First run
|
|
Let's first check the version we have. The first time you run this command, the polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient:
|
|
|
|
[source, shell]
|
|
docker run --rm -it chevdor/polkadot:latest polkadot --version
|
|
|
|
|
|
.Polkadot arguments
|
|
You can also pass any argument/flag that polkadot supports:
|
|
|
|
[source, shell]
|
|
docker run --rm -it chevdor/polkadot:latest polkadot --name "PolkaDocker"
|
|
|
|
|
|
.Run as deamon
|
|
Once you are done experimenting and picking the best node name :) you can start polkadot as daemon, exposes the polkadot ports and mount a volume that will keep your blockchain data locally:
|
|
|
|
[source, shell]
|
|
docker run -d -p 30333:30333 -p 9933:9933 -p 9944:9944 -v /my/local/folder:/data chevdor/polkadot:latest polkadot
|
|
|
|
.Docker image update
|
|
If you have an image such as `latest` locally, docker will *not* bother downloading the very latest that may be available.
|
|
To update:
|
|
|
|
- stop and delete your containers (`docker stop ...` `docker rm ...`)
|
|
- delete your previous image (`docker rmi chevdor/polkadot:latest`)
|
|
- run as daemon again, the very latest image will be downloaded again
|
|
|
|
=== Build your own image
|
|
|
|
To get up and running with the smallest footprint on your system, you may use the Polkadot Docker image.
|
|
You can either build it yourself (it takes a while...):
|
|
|
|
[source, shell]
|
|
----
|
|
./docker/build.sh
|
|
----
|
|
|
|
=== Reporting issues
|
|
|
|
If you run into issues with polkadot when using docker, please run the following command
|
|
(replace the tag with the appropriate one if you do not use latest):
|
|
|
|
[source, shell]
|
|
docker run --rm -it chevdor/polkadot:latest polkadot --version
|
|
|
|
This will show you the polkadot version as well as the git commit ref that was used to build your container.
|
|
Just paste that in the issue you create.
|
|
|
|
|
|
== Shell completion
|
|
|
|
The Polkadot cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system.
|
|
|
|
Assuming you built a release version using `cargo build --release` and use `bash` run the following:
|
|
|
|
[source, shell]
|
|
source target/release/completion-scripts/polkadot.bash
|
|
|
|
You can find completion scripts for:
|
|
- bash
|
|
- fish
|
|
- zsh
|
|
- elvish
|
|
- powershell
|
|
|
|
To make this change persistent, you can proceed as follow:
|
|
|
|
=== First install
|
|
|
|
[source, shell]
|
|
----
|
|
COMPL_DIR=$HOME/.completion
|
|
mkdir -p $COMPL_DIR
|
|
cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
|
|
echo "source $COMPL_DIR/polkadot.bash" >> $HOME/.bash_profile
|
|
source $HOME/.bash_profile
|
|
----
|
|
|
|
=== Update
|
|
|
|
When you build a new version of Polkadot, the following will ensure you auto-completion script matches the current binary:
|
|
|
|
[source, shell]
|
|
----
|
|
COMPL_DIR=$HOME/.completion
|
|
mkdir -p $COMPL_DIR
|
|
cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
|
|
source $HOME/.bash_profile
|
|
----
|
|
|
|
include::doc/packages.adoc[]
|