mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 13:27:57 +00:00
211 lines
5.8 KiB
Plaintext
211 lines
5.8 KiB
Plaintext
= Polkadot
|
||
:Author: Polkadot developers
|
||
:Revision: 0.2.0
|
||
:toc:
|
||
:sectnums:
|
||
|
||
Implementation of a https://polkadot.network node in Rust.
|
||
|
||
|
||
== 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/polkadot.git --branch v0.2 polkadot
|
||
|
||
You'll now have a `polkadot` binary installed to your `PATH`. You can drop the
|
||
`--branch v0.2` or run `cargo install --git https://github.com/paritytech/polkadot.git polkadot`
|
||
to get the very latest version of Polkadot, but these instructions might not work in that case.
|
||
|
||
If you want a specific version of polkadot, say `0.2.2`, you may run `cargo install --git https://github.com/paritytech/polkadot.git --tag v0.2.2 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 pokadot --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[]
|