- Remove forklift cargo wrapper from build-only-wasm.sh (direct cause of
build-linux-stable failures in container jobs)
- Add .env_remove("RUSTC_WRAPPER") to wasm-builder cargo subprocess to
prevent inheriting forklift from Parity CI container images
- Remove forklift from cargo-check-runtimes action and cmd.py benchmark
build command
- Update test_cmd.py expectations to match forklift removal
- Update no_feature_gated_method.stderr for rebrand: substrate_runtime →
bizinikiwi_runtime, sp_runtime_interface_proc_macro →
pezsp_runtime_interface_proc_macro, and expanded feature list
Pezkuwi
Implementation of a https://pezkuwichain.app node in Rust based on the Bizinikiwi framework.
The README provides information about installing the pezkuwi binary and developing on the codebase. For more specific
guides, like how to run a validator node, see the Pezkuwi SDK docs website.
Installation
Using a pre-compiled binary
If you just wish to run a Pezkuwi node without compiling it yourself, you may either:
- run the latest released binary (make sure to also
download all the
workerbinaries and put them in the same directory aspezkuwi), or - install Pezkuwi from one of our package repositories.
Debian-based (Debian, Ubuntu)
Currently supports Debian 10 (Buster) and Ubuntu 20.04 (Focal), and derivatives. Run the following
commands as the root user.
# Import the security@pezkuwichain.app GPG key
gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798
gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/pezkuwi.gpg
# Add the Pezkuwi repository and update the package index
echo 'deb [signed-by=/usr/share/keyrings/pezkuwi.gpg] https://releases.pezkuwichain.app/deb release main' > /etc/apt/sources.list.d/pezkuwi.list
apt update
# Install the `pezkuwi-keyring` package - This will ensure the GPG key
# used by APT remains up-to-date
apt install pezkuwi-keyring
# Install pezkuwi
apt install pezkuwi
RPM-based
Currently supports Rocky Linux 10 and Alma Linux 10, and derivatives.
# Install dnf-plugins-core (This might already be installed)
dnf install dnf-plugins-core
# Add the repository and enable it
dnf config-manager --add-repo https://releases.pezkuwichain.app/rpm/pezkuwi.repo
dnf config-manager --set-enabled pezkuwi
# Install pezkuwi (You may have to confirm the import of the GPG key, which
# should have the following fingerprint: 90BD75EBBB8E95CB3DA6078F94A4029AB4B35DAE)
dnf install pezkuwi
Installation from Debian or RPM repository will create a systemd service that can be used to run a
Pezkuwi node. This is disabled by default, and can be started by running systemctl start pezkuwi
on demand (use systemctl enable pezkuwi to make it auto-start after reboot). By default, it will
run as the pezkuwi user. Command-line flags passed to the binary can be customized by editing
/etc/default/pezkuwi. This file will not be overwritten on updating Pezkuwi. You may also just
run the node directly from the command-line.
Building
Since the Pezkuwi node is based on Bizinikiwi, first set up your build environment according to the Bizinikiwi installation instructions.
Install via Cargo
Make sure you have the support software installed from the Build from Source section below this section.
If you want to install Pezkuwi in your PATH, you can do so with:
cargo install --git https://github.com/pezkuwichain/pezkuwi-sdk --tag <version> pezkuwi --locked
Build from Source
Build the client by cloning this repository and running the following commands from the root directory of the repo:
git checkout <latest tagged release>
cargo build --release
Note: if you want to move the built pezkuwi binary somewhere (e.g. into $PATH) you will also
need to move pezkuwi-execute-worker and pezkuwi-prepare-worker. You can let cargo do all this
for you by running:
cargo install --path . --locked
Build from Source with Docker
You can also build from source using Pezkuwi CI docker image:
git checkout <latest tagged release>
docker run --rm -it -w /shellhere/pezkuwi \
-v $(pwd):/shellhere/pezkuwi \
pezkuwichain/ci-linux:production cargo build --release
sudo chown -R $(id -u):$(id -g) target/
If you want to reproduce other steps of CI process you can use the following guide.
Networks
This repo supports runtimes for PezkuwiChain, Dicle, and Zagros.
Connect to Pezkuwi Mainnet
Connect to the global Pezkuwi Mainnet network by running:
../target/release/pezkuwi --chain=pezkuwi
You can see your node on Pezkuwi telemetry
(set a custom name with --name "my custom name").
Connect to the "Dicle" Canary Network
Connect to the global Dicle canary network by running:
../target/release/pezkuwi --chain=dicle
You can see your node on Dicle telemetry
(set a custom name with --name "my custom name").
Connect to the Zagros Testnet
Connect to the global Zagros testnet by running:
../target/release/pezkuwi --chain=zagros
You can see your node on Zagros telemetry
(set a custom name with --name "my custom name").
Obtaining HEZ, DCL, or TYR
If you want to do anything on PezkuwiChain, Dicle, or Zagros, then you'll need to get an account and some HEZ, DCL, or TYR tokens, respectively. Follow the instructions on the Wiki to obtain tokens for your testnet of choice.
Hacking on Pezkuwi
If you'd actually like to hack on Pezkuwi, you can grab the source code and build it. Ensure you have Rust and the support software installed.
Then, grab the Pezkuwi source code:
git clone https://github.com/pezkuwichain/pezkuwi-sdk.git
cd pezkuwi-sdk
Then build the code. You will need to build in release mode (--release) to start a network. Only
use debug mode for development (faster compile times for development and testing).
cargo build
You can run the tests if you like:
cargo test --workspace --profile testnet
# Or run only the tests for specified crated
cargo test -p <crate-name> --profile testnet
You can start a development chain with:
cargo run --bin pezkuwi -- --dev
Detailed logs may be shown by running the node with the following environment variables set:
RUST_LOG=debug RUST_BACKTRACE=1 cargo run --bin pezkuwi -- --dev
Development
You can run a simple single-node development "network" on your machine by running:
cargo run --bin pezkuwi --release -- --dev
You can muck around by heading to https://js.pezkuwichain.app and choosing "Local Node" from the Settings menu.
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:
pezkuwi --dev --alice -d /tmp/alice
And in the other, run:
pezkuwi --dev --bob -d /tmp/bob --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.
Monitoring
Once you set this up you can take a look at the Pezkuwi Grafana dashboards that we currently maintain.
Using Docker
Shell Completion
Contributing
Contributing Guidelines
Contributor Code of Conduct
License
Pezkuwi is GPL 3.0 licensed.