PolymathNetwork / Polymesh
Programming Languages
Labels
Projects that are alternatives of or similar to Polymesh
Polymesh Blockchain - By Polymath
Polymesh is a blockchain for regulated securities and open finance.
Whitepaper
https://polymath.network/polymesh-whitepaper
Polymesh Alcyone Public Testnet
We provide linux binaries for each Alcyone release.
The latest release for the Polymesh Alcyone Public Testnet can be found at:
https://github.com/PolymathNetwork/Polymesh/releases
Specifying no chain at the command line defaults to the Polymesh Alcyone Public Testnet (e.g. --chain alcyone
), so to run a node which connects to the Alcyone Public Testnet, you can start your node with:
./target/release/polymesh
Operators
A guide to running an operator node can be found at:
https://github.com/PolymathNetwork/polymesh-tools/tree/main/docs/operator
Documentation
Further details on Polymesh concepts and networks can be found at:
https://developers.polymesh.live/
Code documentation can be found at:
Build
Install Rust:
curl https://sh.rustup.rs -sSf | sh
Install required tools:
./scripts/init.sh
Build Wasm and native code:
cargo build --release
Run unit tests:
./scripts/test.sh
Branches
- The
develop
branch is the working branch with the latest code changes. - The
alcyone
branch tracks code deployed to the Polymesh Alcyone Public Testnet. - The
staging
branch tracks Alcyone except during a release cycle where it is upgraded ahead of Alcyone. - The
tooling
branch tracks the next candidate release for Alcyone.
Development
Single node development chain
You can start a development chain with:
./target/release/polymesh --dev
Detailed logs may be shown by running the node with the following environment variables set:
RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/polymesh --dev
.
To access the Polymesh Chain using the Web Interface do the following:
-
Click on the Polymesh logo in the top-left corner of the UI. You can then select "Local Node" under the Development section.
Note: if the
polymesh
node above is on a different machine than your browser (e.g., a server on your local network), you'll need to use a "custom endpoint", e.g.,ws://192.168.0.100:9944/
. The Web Interface useshttps
, but yourpolymesh
instance does not, so you'll needws://
as opposed towss://
. You'll also need to usehttp://httpapp.polymesh.live/
instead of Web Interface. Otherwise, you'll have problems with mixed-content blocking (https vs. http). Finally, add--rpc-external --ws-external --rpc-cors all
to thepolymesh
invocation above. -
If you have custom types definitions that differ from the Polymesh Alcyone Public Testnet, you can update these in Settings tab under the
Developer
section. -
Reload the page.
Multi-node local testnet
If you want to see the multi-node consensus algorithm in action locally, then you can create a local testnet with two validator nodes for Alice and Bob, who are the initial authorities of the genesis chain that have been endowed with testnet units.
cd scripts/cli
npm install
./run.sh
This uses pm2 to run a local three node network for demonstrate simple consensus.
To stop the chain you can use:
./stop.sh
and to display log files you can use:
./log.sh
Unit Tests
Unit tests are packaged with the Rust code. To run these, you can execute:
cargo test --package polymesh-runtime-tests --features default_identity
cargo test --package pallet-staking
cargo test --package pallet-balances
cargo test --package polymesh-primitives
cargo test --package pallet-pips-rpc
cargo test --package pallet-transaction-payment
Initialise
You can seed the network with some identities, claims, signing keys and assets by running the functional test.
cd scripts/cli
node run test
See README for details.
Benchmark
Polymesh runtime benchmarks can be run with a command that specifies the pallet and the name of the extrinsic to be benchmarked, for example:
cargo run --release --features runtime-benchmarks -- \
benchmark -p="*" -e="*"
Note that the CLI binary should be built in release mode and that the feature flag
runtime-benchmarks
should be set to enable the CLI option benchmark
.
Debug
Environment
Install GDB for your distribution.
Build
Binary should be built in debug mode, using cargo build
without --release
parameter:
cargo build
Test cases are built in debug mode by default.
Using GDB
Using rust-gdb
you will get pretty printed values for more types than directly with gdb
.
The following example, starts gdb
, sets a breakpoint, and starts our compiled polymesh
:
$> rust-gdb ./target/debug/polymesh
GNU gdb (Ubuntu 8.2.91.20190405-0ubuntu3) 8.2.91.20190405-git
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./target/debug/polymesh...
(gdb) b balances/src/lib.rs : 390
Breakpoint 1 at 0x2b792d0: balances/src/lib.rs:390. (2 locations)
(gdb) run --dev
Starting program: ./target/debug/polymesh --dev
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
2020-02-26 12:48:37 Running in --dev mode, RPC CORS has been disabled.
2020-02-26 12:48:37 Polymesh Node
...
License
Substrate Framework
Polymesh is built on Substrate.