Node for Polymesh Blockchain

Overview

Gitter Telegram

Polymath logo

Polymesh Blockchain - By Polymath

Polymesh is a blockchain for regulated securities and open finance.

Whitepaper

https://polymath.network/polymesh-whitepaper

Audit

See the audit folder for details of audits undertaken on the Polymesh code base.

Independent audits were completed by:
https://www.srlabs.de/
https://www.atredis.com/

Networks

We run two public networks, the mainnet and the testnet.

Generally these two networks will be at the same version of Polymesh, although they may differ briefly during an upgrade cycle.

We provide linux binaries for each release.

The latest release for Polymesh can be found at:
https://github.com/PolymathNetwork/Polymesh/releases

Generally you should be able to run the latest release for both networks, although the on-chain version of the network might differ during upgrade cycles.

Below are simple instructions for running a non-operating node (i.e. a node that does not produce blocks or vote on the correctness of other blocks).

For more details on monitoring infrastructure for nodes and running an operator node, see the https://github.com/PolymathNetwork/polymesh-tools repository.

Polymesh Testnet

The Testnet does not offer incentives to users to participate and test with it. It has a simple onboarding process (no-KYC required) and a bridge allowing test KOVAN based POLY to be bridged to testnet POLYX.

The testnet also includes the testUtils pallet that allows easier onboarding for testing, and in addition each new account will receive 100,000 POLYX for testing purposes.

To run a node which connects to the Testnet, you can start your node with:

./target/release/polymesh --chain testnet

Polymesh Mainnet

The public mainnet is the official Polymesh blockchain. Onboarding requires users to go through a simple KYC process (called Customer Due Diligence or CDD) in order to access the network.

ERC20 POLY can be bridged from Ethereum to the Polymesh Mainnet.

To run a node which connects to the Mainnet, you can start your node with:

./target/release/polymesh --chain mainnet

Operators (aka Validators)

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:

https://docs.polymesh.live/

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 mainnet branch tracks code deployed to the Polymesh Public Mainnet.
  • The testnet branch tracks code deployed to the Polymesh Public Testnet.
  • The staging branch tracks mainnet except during a release cycle where it is upgraded ahead of mainnet.
  • The tooling branch tracks the next candidate release for mainnet.
  • The develop branch is the working branch with the latest code changes.

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:

  1. 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 uses https, but your polymesh instance does not, so you'll need ws:// as opposed to wss://. You'll also need to use http://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 the polymesh invocation above.

  2. If you have custom types definitions that differ from the Polymesh Testnet, you can update these in Settings tab under the Developer section.

  3. 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.

Benchmarks

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

LICENSE

Substrate Framework

Polymesh is built using the Substrate Framework.

Polymath

Polymath Website

Comments
  • Is Polymesh compatible with substrate?

    Is Polymesh compatible with substrate?

    Hi, I tried to call substrate.get_events, but the data I got could not be decoded successfully. Is there any special type? I am currently referring to https://github.com/ PolymeshAssociation/Polymesh/blob/develop/polymesh_schema.json

    Btw, the polkadot.js.org could not display block details which has transfer event like me: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fmainnet-rpc.polymesh.network#/explorer/query/4921857

    opened by Wangmmx 14
  • MESH-1629/create simple relayer

    MESH-1629/create simple relayer

    changelog

    new features

    • Added Relayer pallet. This pallet provides subsidising support, to allow a paying_key to pay transaction and protocol fees.
    • Added type Subsidy.
    • Added AccountKeyUsage storage map to identity pallet. Internal functions are provided manage a 'usage' counter for account keys to lock them to their identity. This is being used by relayer, but can be used by other pallets.

    modified API

    • AuthorizationData::AddRelayerPayingKey(AccountID, AccountID, Balance) and AuthorizationType::AddRelayerPayingKey was added. The authorization is used to add a subsidy to a user_key.
    • Added error AccountKeyIsBeingUsed to the identity pallet. This error is returned if a paying/user key tries to leave their identity.

    modified logic

    • Extrinsics accept_primary_key, leave_identity_as_key, leave_identity_as_identity, remove_secondary_keys can throw error AccountKeyIsUsed if the key is being used as a paying_key or user_key in the relayer pallet.
    release-notes 
    opened by Neopallium 8
  • [WIP] MESH-1640/issue with add secondary keys with auth

    [WIP] MESH-1640/issue with add secondary keys with auth

    Add test case and fix the 1-to-1 constraint check.

    changelog

    new features

    None.

    modified API

    None.

    modified logic

    • Fix 1-to-1 account to DID constraint check in add_secondary_keys_with_authoration
    opened by Neopallium 7
  • Update / Fixes for MultiSig ownership and Authorization issuance

    Update / Fixes for MultiSig ownership and Authorization issuance

    This PR contains:

    Authorizations:

    • all authorizations are now authorized_by an identity (DID), not a signatory (account or DID)
    • corresponding changes to AuthorizationData

    MultiSigs:

    Signers: the keys attached to the MultiSig as signers Creator Identity: the identity that created the MultiSig - this is fixed and can't be modified Acting Identity: the identity that the MultiSig acts through, by virtue of being attached as a Signing / Master Key.

    Signers => MultiSig is mapped through KeyToMultiSig MultiSig => Creator Identity is mapped through MultiSigToIdentity MultiSig => Acting Identity is mapped through KeyToIdentityIds (None if MultiSig is not a Signing / Master Key)

    This has the consequence that Signers can not send / receive POLYX (since they are not directly associated with an identity). Note that in Aldebaran, it is possible for keys to hold funds, but they can't pay for transactions.

    MultiSigs can hold funds, once they have been attached as a Signing / Master Key to an identity. If they are removed from the identity they can continue to hold funds, as per normal external key behaviour, but these funds are locked until the key is reattached to a CDD'ed identity.

    All transactions have a single payer, which is established when the transaction is first submitted. For a transaction executed via a MultiSig this will be the Creator Identity derived from the external Signer account that submits the extrinsic.

    When Signers are approving / proposing a MultiSig transaction, we have:

    • CDD check done on Creator Identity
    • Payment made by Creator Identity
    • No current_identity set

    When a MultiSig executes a proposal, we have:

    • CDD check done on Creator Identity (through the SignedExtension)
    • CDD check done on Acting Identity (on dispatch)
    • Payment made by Creator Identity (bug - currently Protocol Fee Payment made by MultiSig)
    • current_identity set to Acting Identity

    Bug Fixes:

    • Previously a MS signer could execute a tx (e.g. asset.registerTicker) and assume the identity of the MS creator.
    • When rotating master keys, new key was not linked to DID.
    • Fix bug where the same signing key can be attached twice with different permissions to the same identity.
    merge-after-ci 
    opened by adamdossa 7
  • [WIP] Move out runtime from pallets

    [WIP] Move out runtime from pallets

    New folder structure:

    • any pallet is inside core/pallets folder.
    • runtimes & polymesh-runtime-common are into core/runtime folder.
    • primitives & its derive crate are in core.
    • polymesh-common-utilities has been moved from pallets to core.
    Not to merge 
    opened by fmiguelgarcia 6
  • polymesh alcyone node crashes

    polymesh alcyone node crashes

    when I start the polymesh alcyone node it crashes and I get the following errors

    Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.593 main INFO polymesh::command Reserved nodes: [] Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner Polymesh Node Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner ✌️ version 2.0.0 Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner ❤️ by Anonymous, 2017-2020 Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner 📋 Chain specification: Polymesh Alcyone Testnet Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner 🏷 Node name: pathrock Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner 👤 Role: AUTHORITY Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner 💾 Database: RocksDb at /root/.local/share/polymesh/chains/alcyone/db Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.594 main INFO sc_cli::runner ⛓ Native runtime: polymesh-2000 (polymath-polymesh-0.tx1.au1) Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.649 main INFO sub-libp2p 🏷 Local node identity is: 12D3KooWJkY8di7yUCLhrNVwPoxm26fbEEoaZBW6SbNdX3QxipKo (legacy representation: QmSkJyXwgs5NBzqVndL55xsQSZsBNzan3QNmFpcDteqFmJ) Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.659 main INFO sc_service::builder 📦 Highest known block at #1008 Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.660 tokio-runtime-worker INFO substrate_prometheus_endpoint::known_os 〽️ Prometheus server started at 127.0.0.1:9615 Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.664 main WARN sc_service Unable to bind RPC server to 0.0.0.0:9933. Trying random port. Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.673 main WARN sc_service Unable to bind RPC server to 127.0.0.1:9944. Trying random port. Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.676 main INFO babe 👶 Starting BABE Authorship worker Oct 02 18:57:06 vmd48751.contaboserver.net polymesh[8369]: 2020-10-02 18:57:06.678 tokio-runtime-worker ERROR sub-libp2p 📪 Libp2p listener () closed: Address already in use (os error 98) Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: ==================== Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: Version: 2.0.0 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 0: sp_panic_handler::set::{{closure}} Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 1: std::panicking::rust_panic_with_hook Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: at /rustc/d6953df14657f5932270ad2b33bccafe6f39fad4/src/libstd/panicking.rs:530 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 2: std::panicking::begin_panic Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 3: frame_executive::Executive<System,Block,Context,UnsignedValidator,AllModules,COnRuntimeUpgrade>::execute_block Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 4: <polymesh_runtime_testnet::runtime::Runtime as sp_api::runtime_decl_for_Core::Core<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u32,sp_runtime::traits::BlakeTwo256>,sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<<pallet_indices::Module<polymesh_runtime_testnet::runtime::Runtime> as sp_runtime::traits::StaticLookup>::Source,polymesh_runtime_testnet::runtime::Call,sp_runtime::MultiSignature,(frame_system::extensions::check_spec_version::CheckSpecVersion<polymesh_runtime_testnet::runtime::Runtime>,frame_system::extensions::check_tx_version::CheckTxVersion<polymesh_runtime_testnet::runtime::Runtime>,frame_system::extensions::check_genesis::CheckGenesis<polymesh_runtime_testnet::runtime::Runtime>,frame_system::extensions::check_mortality::CheckMortality<polymesh_runtime_testnet::runtime::Runtime>,frame_system::extensions::check_nonce::CheckNonce<polymesh_runtime_testnet::runtime::Runtime>,frame_system::extensions::check_weight::CheckWeight<polymesh_runtime_testnet::runtime::Runtime>,pallet_transaction_payment::ChargeTransactionPayment<polymesh_runtime_testnet::runtime::Runtime>,pallet_permissions::StoreCallMetadata<polymesh_runtime_testnet::runtime::Runtime>)>>>>::execute_block Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 5: sp_api::runtime_decl_for_Core::execute_block_native_call_generator::{{closure}} Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 6: std::thread::local::LocalKey::with Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 7: sc_executor::native_executor::WasmExecutor::with_instance::{{closure}} Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 8: sc_executor::wasm_runtime::RuntimeCache::with_instance Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 9: <sc_executor::native_executor::NativeExecutor as sp_core::traits::CodeExecutor>::call Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 10: sp_state_machine::StateMachine<B,H,N,Exec>::execute_aux Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 11: sp_state_machine::StateMachine<B,H,N,Exec>::execute_using_consensus_failure_handler Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 12: <sc_service::client::call_executor::LocalCallExecutor<B,E> as sc_client_api::call_executor::CallExecutor>::contextual_call Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 13: <sc_service::client::client::Client<B,E,Block,RA> as sp_api::CallApiAt>::call_api_at Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 14: sp_api::runtime_decl_for_Core::execute_block_call_api_at Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 15: sp_api::Core::execute_block_with_context Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 16: <&sc_service::client::client::Client<B,E,Block,RA> as sp_consensus::block_import::BlockImport>::import_block Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 17: <sc_finality_grandpa::import::GrandpaBlockImport<BE,Block,Client,SC> as sp_consensus::block_import::BlockImport>::import_block Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 18: <sc_consensus_babe::BabeBlockImport<Block,Client,Inner> as sp_consensus::block_import::BlockImport>::import_block Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 19: sp_consensus::import_queue::import_single_block_metered Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 20: <futures_util::future::poll_fn::PollFn as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 21: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 22: <futures_util::future::future::Then<Fut1,Fut2,F> as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 23: <futures_util::future::poll_fn::PollFn as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 24: <sc_service::task_manager::prometheus_future::PrometheusFuture as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 25: <futures_util::future::select::Select<A,B> as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 26: <core::future::from_generator::GenFuture as core::future::future::Future>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 27: std::thread::local::LocalKey::with Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 28: futures_executor::local_pool::block_on Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 29: tokio::loom::std::unsafe_cell::UnsafeCell::with_mut Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 30: std::panicking::try Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 31: tokio::runtime::task::harness::Harness<T,S>::poll Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 32: tokio::runtime::blocking::pool::Inner::run Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 33: tokio::runtime::context::enter Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 34: std::sys_common::backtrace::__rust_begin_short_backtrace Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 35: core::ops::function::FnOnce::call_once{{vtable.shim}} Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 36: <alloc::boxed::Box as core::ops::function::FnOnce>::call_once Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: at /rustc/d6953df14657f5932270ad2b33bccafe6f39fad4/src/liballoc/boxed.rs:1081 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: <alloc::boxed::Box as core::ops::function::FnOnce>::call_once Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: at /rustc/d6953df14657f5932270ad2b33bccafe6f39fad4/src/liballoc/boxed.rs:1081 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: std::sys::unix::thread::Thread::new::thread_start Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: at /rustc/d6953df14657f5932270ad2b33bccafe6f39fad4/src/libstd/sys/unix/thread.rs:87 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 37: start_thread Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: 38: __clone Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: Thread 'tokio-runtime-worker' panicked at 'InvalidTransaction custom error', /rustc/d6953df14657f5932270ad2b33bccafe6f39fad4/src/libstd/macros.rs:13 Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: This is a bug. Please report it at: Oct 02 18:57:07 vmd48751.contaboserver.net polymesh[8369]: https://github.com/PolymathNetwork/polymesh/issues/new

    have you got a fix for this?

    opened by paddyson79 6
  • base structure of the confidential transfer

    base structure of the confidential transfer

    CRYP-161: integrate confidential transfer to Polymesh

    This is WIP and shows how different pieces of code need to be changed for this to work. I have not fully implemented it yet, since it would require creating new Leg and potentially more new structs and I'd like to hear your feedback before committing to more change.

    For an easier review, I'd recommend starting from the unit test part so that you have a better idea of the workflow.

    opened by ghost 6
  • [WIP] MESH-1846 Use Vec instead of BTreeSet for extrinsic parameters.

    [WIP] MESH-1846 Use Vec instead of BTreeSet for extrinsic parameters.

    changelog

    modified API

    • Use Vec instead of BTreeSet in Statistics pallet extrinsics: set_active_stats, batch_update_asset_stats, set_asset_transfer_compliance and set_entities_exempt.
    opened by Neopallium 5
  • Fix deserialization from `jsonrpc` for the RPC interface.

    Fix deserialization from `jsonrpc` for the RPC interface.

    Polkadot's RPC serializes rust enum variant type names to lowercase. This seems to only affect rust style enums like our Singatory enum.

    This PR uses #[serde(alias = "identity")] variant attribute to allow deserialize from the lowercase variant name.

    opened by Neopallium 5
  • Bump axios from 0.19.2 to 0.21.1 in /scripts/cli

    Bump axios from 0.19.2 to 0.21.1 in /scripts/cli

    Bumps axios from 0.19.2 to 0.21.1.

    Release notes

    Sourced from axios's releases.

    v0.21.1

    0.21.1 (December 21, 2020)

    Fixes and Functionality:

    • Hotfix: Prevent SSRF (#3410)
    • Protocol not parsed when setting proxy config from env vars (#3070)
    • Updating axios in types to be lower case (#2797)
    • Adding a type guard for AxiosError (#2949)

    Internal and Tests:

    • Remove the skipping of the socket http test (#3364)
    • Use different socket for Win32 test (#3375)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    v0.21.0

    0.21.0 (October 23, 2020)

    Fixes and Functionality:

    • Fixing requestHeaders.Authorization (#3287)
    • Fixing node types (#3237)
    • Fixing axios.delete ignores config.data (#3282)
    • Revert "Fixing overwrite Blob/File type as Content-Type in browser. (#1773)" (#3289)
    • Fixing an issue that type 'null' and 'undefined' is not assignable to validateStatus when typescript strict option is enabled (#3200)

    Internal and Tests:

    • Lock travis to not use node v15 (#3361)

    Documentation:

    • Fixing simple typo, existant -> existent (#3252)
    • Fixing typos (#3309)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    ... (truncated)

    Changelog

    Sourced from axios's changelog.

    0.21.1 (December 21, 2020)

    Fixes and Functionality:

    • Hotfix: Prevent SSRF (#3410)
    • Protocol not parsed when setting proxy config from env vars (#3070)
    • Updating axios in types to be lower case (#2797)
    • Adding a type guard for AxiosError (#2949)

    Internal and Tests:

    • Remove the skipping of the socket http test (#3364)
    • Use different socket for Win32 test (#3375)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    0.21.0 (October 23, 2020)

    Fixes and Functionality:

    • Fixing requestHeaders.Authorization (#3287)
    • Fixing node types (#3237)
    • Fixing axios.delete ignores config.data (#3282)
    • Revert "Fixing overwrite Blob/File type as Content-Type in browser. (#1773)" (#3289)
    • Fixing an issue that type 'null' and 'undefined' is not assignable to validateStatus when typescript strict option is enabled (#3200)

    Internal and Tests:

    • Lock travis to not use node v15 (#3361)

    Documentation:

    • Fixing simple typo, existant -> existent (#3252)
    • Fixing typos (#3309)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies merge-after-ci 
    opened by dependabot[bot] 5
  • Mesh 1124/refactor settlements using transaction rollbacks

    Mesh 1124/refactor settlements using transaction rollbacks

    • Instead of manually undoing failed actions, the settlement module now uses substrate's new transaction rollback feature.
    • Updated name of test crate

    Tagged everyone as a reviewer because this is a new and exciting substrate feature that everyone might be interested in.

    Ps The actual relevant changes are in the settlement module.

    merge-after-ci 
    opened by maxsam4 5
  • [WIP] Mesh 1915/allow nft transfers

    [WIP] Mesh 1915/allow nft transfers

    Change the Settlement pallet for allowing transferring NFT. A new type LegV2 that accepts fungible and non-fungible assets has been added.

    changelog

    new features

    • Allow NFT transfers.

    modified logic

    • base_add_instruction now takes LegV2 as parameter;
    opened by HenriqueNogara 1
  • [WIP] Monthly 2022 11

    [WIP] Monthly 2022 11

    Applying changes needed for Substrate monthly 2022-11.

    • [x] Fix RPC code.
    • [x] Fix building of tests.
    • [ ] Make sure all Substrate pallet migrations are included and working.
    • [ ] Review changes to pallets/balances/src/lib.rs.
    • [x] Replace the uses of deprecated remove_prefix() with clear_prefix.
    • [ ] Review changes to Substrate's transaction-payment pallet and port those changes as needed (i.e. LengthToFee and WeightToFee traits).
    • [ ] Update weights template file and re-run all benchmarks.

    changelog

    new features

    • [new feature, schema, events, RPC]

    modified API

    • [modified APIs, schema, events, RPC]

    modified logic

    • [modified behaviour, bug fixes]

    modified agent functionality

    • [the addition or removal of any extrinsics or events emitted by those extrinsics, that relate to permissioned agents]

    data migration required

    • [storage modified during upgrade process - provide details]
    opened by Neopallium 1
  • Mesh 1902/create nft collection mint nft

    Mesh 1902/create nft collection mint nft

    Initial version of the NFT pallet. This PR should not be directly merged into the develop branch.

    changelog

    new features

    • Add NFT pallet;
    • Add create_nft extrinsic;
    • Add mint_nft extrinsic;
    • Add burn_nft extrinsic;
    opened by HenriqueNogara 1
  • [WIP] Mercat update

    [WIP] Mercat update

    Updating the MERCAT branch to 5.x release.

    changelog

    new features

    • [new feature, schema, events, RPC]

    modified API

    • [modified APIs, schema, events, RPC]

    modified logic

    • [modified behaviour, bug fixes]

    modified agent functionality

    • [the addition or removal of any extrinsics or events emitted by those extrinsics, that relate to permissioned agents]
    opened by Neopallium 1
Releases(v5.1.2)
  • v5.1.1(Dec 21, 2022)

    new features

    • New CLI flag --db-max-total-wal-size to limit the size of RocksDB WAL files. (See https://github.com/PolymeshAssociation/substrate/pull/29)

    modified logic

    • When deploying Smart Contracts make sure that the contract's address is linked to the identity before transferring the initial storage fee. (See https://github.com/PolymeshAssociation/substrate/commit/9c287050a4af13b8a3404e585c23c26c6ed09cde)
    Source code(tar.gz)
    Source code(zip)
    polymesh-5.1.1-linux-arm64.zip(41.40 MB)
    polymesh-5.1.1-wasm.zip(12.22 MB)
    polymesh-5.1.1.zip(41.87 MB)
  • v5.1.0(Nov 3, 2022)

    changelog

    modified logic

    • MultiSig pays protocol fees. (https://github.com/PolymeshAssociation/Polymesh/pull/1307)
    • modified MultiSigSigners map (https://github.com/PolymeshAssociation/Polymesh/pull/1282)
    • check instruction leg amount and returns error if zero (https://github.com/PolymeshAssociation/Polymesh/pull/1284)
    • removed state from pip.Proposals (https://github.com/PolymeshAssociation/Polymesh/pull/1287)
    • modified renaming portfolio function to insert new name in nameToNumber map (https://github.com/PolymeshAssociation/Polymesh/pull/1285)
    • added redeem_from_portfolio function (https://github.com/PolymeshAssociation/Polymesh/pull/1292)
    • modified base_redeem to correctly check referenced portfolio (https://github.com/PolymeshAssociation/Polymesh/pull/1338)

    modified api

    • created update_venue_signers function and VenueSignersUpdated Event (https://github.com/PolymeshAssociation/Polymesh/pull/1273)
    • adds CustomClaimTypeAdded event to record custom claim (https://github.com/PolymeshAssociation/Polymesh/pull/1266)
    • adds CustomClaimTypeDoesNotExist error if claim type doesn't exist (https://github.com/PolymeshAssociation/Polymesh/pull/1266)
    • adds CustomClaims, CustomClaimsInverse, CustomClaimIdSequence storage to record custom claim details (https://github.com/PolymeshAssociation/Polymesh/pull/1266)
    • adds register_custom_claim_type extrinsic to register new custom claim types (https://github.com/PolymeshAssociation/Polymesh/pull/1266)
    • add a few new fields to AssetCreated event (https://github.com/PolymeshAssociation/Polymesh/pull/1272)
    • added optional memo field to Instructions (https://github.com/PolymeshAssociation/Polymesh/pull/1280)

    new features

    • adds the ability to register and then add custom claims (Claim::Custom) (https://github.com/PolymeshAssociation/Polymesh/pull/1266)
    • Add storage version check script to pipeline and fix genesis config for Portfolio & Statistics pallets.
    • Add missing rpc endpoints and signedExtensions. #1329
    • Re-use the develop runtime code and add support for building just a special ci runtime.
    • Updates benchmarks for new 5.1 extrinsics
    • Bump spec_version to 5_001_002 (5.1.0-rc2)
    Source code(tar.gz)
    Source code(zip)
    polymesh-5.1.0-linux-arm64.zip(41.42 MB)
    polymesh-5.1.0-wasm.zip(12.22 MB)
    polymesh-5.1.0.zip(41.87 MB)
  • 5.0.4(Oct 12, 2022)

    changelog

    new features

    • Allows relayer functionality for the Balances module

    modified logic

    • Extrinsic Portfolio.movePortfolioFunds will throw error InvalidGranularity if trying to move a fraction of a non-divisible token.
    • Settlement affirms calls will also check granularity of token transfer when trying to lock the tokens. Will throw a FailedToLockTokens error.
    • Fixes on-chain election issues following offline offenses
    Source code(tar.gz)
    Source code(zip)
    polymesh-5.0.4-wasm.zip(16.25 MB)
    polymesh-5.0.4.zip(93.20 MB)
  • 5.0.3(Sep 26, 2022)

  • 5.0.2(Aug 11, 2022)

    changelog

    modified logic

    • We have moved from substrate 3.0.0 to substrate's monthly-2021-11 tag instead. Allowing us to implement smart contracts. (https://github.com/PolymeshAssociation/Polymesh/pull/1188)
    • Update to Substrate monthly 2022-05. (https://github.com/PolymeshAssociation/Polymesh/pull/1241)
    • Add permission complexity to the weights of extrinsics: identity.add_authorization, identity.set_permission_to_signer, identity.legacy_set_permission_to_signer, and identity.add_secondary_keys_with_authorization (https://github.com/PolymeshAssociation/Polymesh/pull/1192)
    • More restrict limits on secondary keys and their permissions. (https://github.com/PolymeshAssociation/Polymesh/pull/1189)
    • Add missing check to relayer.accept_paying_key. (https://github.com/PolymeshAssociation/Polymesh/pull/1209)
    • Add missing weight to change_bridge_exempted. (https://github.com/PolymeshAssociation/Polymesh/pull/1209)
    • Use a cost function for Condition type for more accurate call weights. (https://github.com/PolymeshAssociation/Polymesh/pull/1204)
    • Change multisig.create_create_proposal_as_key and multisig.create_proposal_as_identity to not use the multsig::ProposalIds map. (https://github.com/PolymeshAssociation/Polymesh/pull/1225)
    • Adding secondary key and permissions length checks to cdd_register_did (https://github.com/PolymeshAssociation/Polymesh/pull/1221)
    • capitalDistribution.distribute() will throw error DistributionAmountIsZero when amount is zero and throw DistributionPerShareIsZero when per_share is zero. (https://github.com/PolymeshAssociation/Polymesh/pull/1236)
    • adding tests for checking multisig errors and secondary key & permission limits (https://github.com/PolymeshAssociation/Polymesh/pull/1227)
    • Fixed the balance check for MultiSig primary/secondary keys. (https://github.com/PolymeshAssociation/Polymesh/pull/1224)
    • MultiSig balance limit changed from zero to 1.0 POLYX. (https://github.com/PolymeshAssociation/Polymesh/pull/1224)
    • Remove dead code unlink_multisig_signers_from_did(), since the signers for a multisig are never linked to the identity. (https://github.com/PolymeshAssociation/Polymesh/pull/1224)
    • minor change and removed test case (https://github.com/PolymeshAssociation/Polymesh/pull/1235)
    • Created more specific error types for improving singer already linked type errors (https://github.com/PolymeshAssociation/Polymesh/pull/1226)
    • Treasury::disbursement() now checks if the beneficiaries exist and have a primary key. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • If the treasury disbursement transfer fails (treasury balance locked, beneficiary missing CDD), then event Treasury::TreasuryDisbursementFailed. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • Identity.remove_secondary_keys() now checks if the keys to remove are secondary keys. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)

    new features

    • Add generated error types to errors_schema.json for improved error decoding. (https://github.com/PolymeshAssociation/Polymesh/pull/1167)
    • Add support for custom asset metadata (key/value pairs). (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Asset metadata keys can be either ticker-local or global names, with either on/off chain specifications (value type/format/encoding). (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Asset metadata can be permanently locked, or locked for a limited amount of time (1 month, 1 year, etc...). (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • An optional expire date can be set for the metadata value. This is informational only, the chain doesn't remove the value after the expire date. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • On-chain metadata type specification can be used to generate encode/decode code for UIs/Smart Contracts. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add new asset identifier AssetIdentifier::FIGI. (https://github.com/PolymeshAssociation/Polymesh/pull/1234)
    • Bump transaction version to 3. (https://github.com/PolymeshAssociation/Polymesh/pull/1236)
    • Added Asset::create_asset_with_custom_type (https://github.com/PolymeshAssociation/Polymesh/pull/1222)
    • Added CorporateAction::initiate_corporate_action_and_distribute (https://github.com/PolymeshAssociation/Polymesh/pull/1222)
    • Added ExternalAgent::create_group_and_add_auth (https://github.com/PolymeshAssociation/Polymesh/pull/1222)
    • Added ExternalAgent::create_and_change_custom_group (https://github.com/PolymeshAssociation/Polymesh/pull/1222)
    • Adds the smart contracts pallet; see the code for documentation regarding extrinsics and storage items. (https://github.com/PolymeshAssociation/Polymesh/pull/1217)
    • Unlimited number of secondary keys. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Identity.KeyRecords maps key to KeyRecord type. Can be used to see if the key is a primary key, secondary key or multisig signer. Also has the identity/multisig account that the key is linked to. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Add Claim based asset statistics and transfer rules. (Jurisdiction, Affiliated, Accredited) (https://github.com/PolymeshAssociation/Polymesh/pull/1159)

    modified api

    • Used InvalidCDDId error event in add_investor_uniqueness_claim function (https://github.com/PolymeshAssociation/Polymesh/pull/1214)
    • Add Asset::set_asset_metadata(Ticker, AssetMetadataKey, AssetMetadataValue, Option<AssetMetadataValueDetails>) - Set asset metadata value. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add Asset::set_asset_metadata_details - Set asset metadata value details (expire, lock status). (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add Asset::register_and_set_local_asset_metadata - Register and set local asset metadata. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add Asset::register_asset_metadata_local_type - Register asset metadata local type. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add Asset::register_asset_metadata_global_type - Register asset metadata global type. Only callable by root. (https://github.com/PolymeshAssociation/Polymesh/pull/1218)
    • Add storage_deposit_limit parameter to PolymeshContracts::call, PolymeshContracts::instantiate_with_code, PolymeshContracts::instantiate, PolymeshContracts::instantiate_with_code_perms, PolymeshContracts::instantiate_with_hash_perms. (https://github.com/PolymeshAssociation/Polymesh/pull/1241)
    • Added upload_code and remove_code extrinsics to contracts pallet. (https://github.com/PolymeshAssociation/Polymesh/pull/1241)
    • Rename multisig.make_multisig_signer -> multisig.make_multisig_secondary. The old name was confusing to users, since it adds the multisig as a secondary key to the identity that created the multisig. (https://github.com/PolymeshAssociation/Polymesh/pull/1224)
    • Deprecated extrinsics that use Signatory<AccountId> for secondary keys. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Rename deprecated Identity.remove_secondary_keys -> Identity.remove_secondary_keys_old. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Rename deprecated Identity.add_secondary_keys_with_authorization -> Identity.add_secondary_keys_with_authorization_old. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Deprecate Identity.set_permission_to_signer. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Add placeholder for Identity.legacy_set_permission_to_signer. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Add new extrinsics to replace deprecated extrinsics: Identity.add_secondary_keys_with_authorization, Identity.set_secondary_key_permissions, Identity.remove_secondary_keys. (https://github.com/PolymeshAssociation/Polymesh/pull/1237)
    • Contracts instantiate APIs now use empty permissions by default. (https://github.com/PolymeshAssociation/Polymesh/pull/1239)
    • Enable RPC for contracts. (https://github.com/PolymeshAssociation/Polymesh/pull/1239)
    • Added error Treasury::InvalidIdentity returned from Treasury::disbursement if one of the beneficiaries doesn't exist or doesn't have a primary key. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • Added the primary key to event Treasury::TreasuryDisbursement. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • Added event Treasury::TreasuryDisbursementFailed event for disbursements that fail. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • Removed unused events Identity.OffChainAuthorizationRevoked and Identity.MockInvestorUIDCreated. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Removed extrinsic Identity.legacy_set_permission_to_signer() and type LegacyPermissions. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Replace use of Signatory<AccountId> type with AccountId in identity events: SecondaryKeysRemoved and SignerLeft. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Use AccountId instead of SecondaryKey<AccountId> in event SecondaryKeyPermissionsUpdated. (to dedup the permissions) (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Rename extrinsic Identity.set_permission_to_signer() to Identity.set_secondary_key_permissions(). (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Replace use of Signatory<AccountId> with AccountId in extrinsics: remove_secondary_keys, set_secondary_key_permissions (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Moved secondary key permissions from Identity.DidRecords to Identity.KeyRecords. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Replaced storage maps MultiSig.KeyToMultiSig and Identity.KeyToIdentityIds with Identity.KeyRecords. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Replaced use of Signatory<AccountId> with AccountId in type SecondaryKey<AccountId>. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Marked RPC identity_getDidRecords as deprecated and limited the number of secondary keys returned to 200. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Rename event Identity.SignerLeft to Identity.SecondaryKeyLeftIdentity. (https://github.com/PolymeshAssociation/Polymesh/pull/1220)
    • Add statistics.set_active_asset_stats and statistics.batch_update_assets to add/remove and update asset statistics. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Add statistics.set_asset_transfer_compliance and statistics.set_entities_exempt to manage stats based transfer rules and exempt status. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Add statistics.set_entities_exempt to manage investor exempt status. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Remove statistics.add_transfer_manager, statistics.remove_transfer_manager, statistics.add_exempted_entities, statistics.remove_exempted_entities. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Add events: StatTypesRemoved, StatTypesAdded, AssetStatsUpdated, SetAssetTransferCompliance, TransferConditionExemptionsAdded, TransferConditionExemptionsRemoved. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Remove events: TransferManagerAdded, TransferManagerRemoved, ExemptionsAdded, ExemptionsRemoved (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Added types: AssetScope, StatOpType, StatType, StatClaim, Stat1stKey, Stat2ndKey, StatUpdate, TransferCondition, AssetTransferCompliance, TransferConditionExemptKey, TransferConditionResult (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Removed types: Counter, TransferManager, TransferManagerResult (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Removed field statistics_result and added transfer_condition_result in type GranularCanTransferResult. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • RPC version bump for asset_canTransferGranular call to reflex the change to type GranularCanTransferResult. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    • Treasury::disbursement emits the Balances::Transfer event for each disbursement beneficiary. (https://github.com/PolymeshAssociation/Polymesh/pull/1233)
    • Replace all the old events/extrinsics in the Statistics pallet. (https://github.com/PolymeshAssociation/Polymesh/pull/1159)
    Source code(tar.gz)
    Source code(zip)
    polymesh-5.0.2-wasm.zip(16.23 MB)
    polymesh-5.0.2.zip(46.76 MB)
  • v4.1.2(May 16, 2022)

  • v4.1.1(Feb 14, 2022)

  • v4.1.0(Jan 19, 2022)

    Polymesh 4.1.0 Release Notes

    Release notes are with respect to changes from Polymesh 4.0.0.

    Pending audit & benchmarks

    changelog

    modified api

    • Renamed IdSeqOverflow to CounterOverflow. (https://github.com/PolymathNetwork/Polymesh/pull/1137)
    • Removed CheckpointOverflow, ScheduleOverflow, CustomAssetTypeIdOverflow, LocalCAIdOverflow, and NumFullAgentsOverflow in favor of CounterOverflow. (https://github.com/PolymathNetwork/Polymesh/pull/1137)
    • Added newtypes FundraiserId, InstructionId, LegId, and VenueId. No storage changes but shows up in schema. (https://github.com/PolymathNetwork/Polymesh/pull/1135)
    • New event asset.InvestorUniquenessClaimNotAllowed - This is thrown if an issuer tries to add an investor uniqueness claim for a ticker that has uniqueness disabled. (https://github.com/PolymathNetwork/Polymesh/pull/1162)
    • identity.add_investor_uniqueness_claim and identity.add_investor_uniqueness_claim_v2 will throw error InvestorUniquenessClaimNotAllowed if the ticker has IU disabled. (https://github.com/PolymathNetwork/Polymesh/pull/1162)
    • Added new extrinsic rotate_primary_key_to_secondary. (https://github.com/PolymathNetwork/Polymesh/pull/1163)
    • Added new Item to enum AuthorizationData::RotatePrimaryKeyToSecondary(Permissions). (https://github.com/PolymathNetwork/Polymesh/pull/1163)
    • Added new Item to enum AuthorizationType::RotatePrimaryKeyToSecondary. (https://github.com/PolymathNetwork/Polymesh/pull/1163)

    modified logic

    • PipId and SnapshotId advancement points will now error with pallet_base::Error::IdSeqOverflow on overflow. (https://github.com/PolymathNetwork/Polymesh/pull/1127)
    • make_multisig_signer and join_identity now check that the maximum amount of secondary keys is not exceeded. (https://github.com/PolymathNetwork/Polymesh/pull/1160)
    • asset.issue - Now correctly updates the scope balance. (https://github.com/PolymathNetwork/Polymesh/pull/1162)
    • An InvestorUniqueness claim (both v1 and v2) is not allowed for tickers with Investor Uniqueness disabled. (https://github.com/PolymathNetwork/Polymesh/pull/1162)
    • make_multisig_signer - Use empty permissions when adding a multisig as a secondary key. (https://github.com/PolymathNetwork/Polymesh/pull/1164)
    • create_or_approve_proposal_as_identity, create_proposal_as_identity, approve_as_identity, reject_as_identity, accept_multisig_signer_as_identity - Add call permissions checks to make sure that secondary keys for the identity have the right permissions. (https://github.com/PolymathNetwork/Polymesh/pull/1164)
    • asset.create_asset - Now checks if AssetType::Custom is valid. Will throw error InvalidCustomAssetTypeId if a custom asset hasn't been registered for that type id. (https://github.com/PolymathNetwork/Polymesh/pull/1165)
    • Fixed behavior of ActivePipCount when rescheduling. (https://github.com/PolymathNetwork/Polymesh/pull/1154)
    • Staking.{bond_extra, rebond} check that the new active amount >= the minimum_balance. (https://github.com/PolymathNetwork/Polymesh/pull/1156)
    • Staking.withdraw_unbonded is also updated to use minimum_balance instead of zero. (https://github.com/PolymathNetwork/Polymesh/pull/1156)
    • Staking.reap_stash now considers minimum_balance also. (https://github.com/PolymathNetwork/Polymesh/pull/1156)
    • Staking.validate can now throw errors StashIdentityDoesNotExist and StashIdentityNotPermissioned. (https://github.com/PolymathNetwork/Polymesh/pull/1156)
    • Staking.nominate now throws TooManyTargets on targets.len() <= MAX_NOMINATIONS. It also considers blocked validators. (https://github.com/PolymathNetwork/Polymesh/pull/1156)
    • accept_primary_key now accepts secondary keys as the new primary key. (https://github.com/PolymathNetwork/Polymesh/pull/1163)
    • On Asset.createAsset, the event AgentAdded is now emitted.
    • More restrict limits on secondary keys and their permissions.

    new features

    • bumps spec_version to 3001 (https://github.com/PolymathNetwork/Polymesh/pull/1170)
    • bumps transaction_version to 2 (https://github.com/PolymathNetwork/Polymesh/pull/1170)
    • Added Bridge::remove_txs. Allows admin to remove frozen transactions permanently. (https://github.com/PolymathNetwork/Polymesh/pull/1166)
    • Added new extrinsic rotate_primary_key_to_secondary. (https://github.com/PolymathNetwork/Polymesh/pull/1163)
    Source code(tar.gz)
    Source code(zip)
    polymesh-4.1.0-linux-amd64.sha256(97 bytes)
    polymesh-4.1.0-linux-amd64.tgz(40.83 MB)
    polymesh_runtime-4.1.0.sha256(93 bytes)
    polymesh_runtime-4.1.0.tgz(4.10 MB)
  • v4.0.0(Oct 7, 2021)

    Polymesh 4.0.0 Release Notes

    This is the mainnet release candidate. Release notes are with respect to changes from Polymesh 3.3.0.

    MESH-1645,MESH-1666,MESH-1668: Mainnet genesis config and todo cleanup

    https://github.com/PolymathNetwork/Polymesh/pull/1075

    Adds stub for mainnet genesis configuration and binaries

    MESH-1672: AssetCreated: add disable_iu

    https://github.com/PolymathNetwork/Polymesh/pull/1092

    modified API

    • The event Asset.AssetCreated now includes disable_iu: bool.

    Fix AuthorizationType in scheme

    https://github.com/PolymathNetwork/Polymesh/pull/1083

    Fix for schema file

    Fix weight typo

    https://github.com/PolymathNetwork/Polymesh/pull/1094

    Fixes typo in weight comment

    Clean up a few todos

    https://github.com/PolymathNetwork/Polymesh/pull/1081

    Cleans up some TODOs and comments

    MESH-1654/ Simple Relayer Integration Test

    https://github.com/PolymathNetwork/Polymesh/pull/1082

    Add integration test for simple relayer feature

    MESH-1667/Update_identity_pallet_storage_prefix

    https://github.com/PolymathNetwork/Polymesh/pull/1090

    Changes the storage prefix from identity to Identity.

    MESH-1575: Reenable substrate benches + Bump nightly => 2021-08-24

    https://github.com/PolymathNetwork/Polymesh/pull/1088

    • Bump our version of Rust to nightly-2021-08-24. This involves fixing a bunch of dependencies, creating our own forks of them as necessary. A bunch of this work has therefore occurred outside this PR by making branches and whatnot.
    • Then reactivate the commented out benchmarks for substrate pallets (not our pallets).

    MESH-1680 Bump libsecp256k1

    https://github.com/PolymathNetwork/Polymesh/pull/1096

    Updates version of libsecp256k1.

    MESH-1671/cleanup authorization data

    https://github.com/PolymathNetwork/Polymesh/pull/1086

    modified API

    • Wrap Authorizations storage values in identity pallet with Option to remove the need for NoData variant.
    • Remove unused variants Custom, NoData, TransferPrimaryIssuanceAgent, TransferCorporateActionAgent from AuthorizationData.
    • Remove unused variants Custom, and NoData from AuthorizationType.

    MESH-1563: Update Storage Hashers

    https://github.com/PolymathNetwork/Polymesh/pull/1099

    Updates storage hashers to better reflect underlying data.

    See Mesh 1400/update storage hashers (#796)

    MESH-1686: Update mainnet config

    https://github.com/PolymathNetwork/Polymesh/pull/1098

    Updates mainnet genesis config:

    • binary version moved to 4.0.0
    • spec version moved to 30 namespace, transaction version to 1
    • identities / keys / GC / committees aligned for mainnet
    • bridge limit removed
    • pip expiry added and minimum bond
    • adds schema fix from 3.3

    Fix is_root check.

    https://github.com/PolymathNetwork/Polymesh/pull/1101

    Fix the is_root check in utility.batch extrinsic.

    We are not using a BaseCallFilter right now, so this bug has no security issues.

    MESH-1691 - fix settlement reschedule_instruction benchmark and weight.

    https://github.com/PolymathNetwork/Polymesh/pull/1102

    modified logic

    • Fix weight for reschedule_instruction.

    MESH-1693 - Fix reject_instruction permissions

    https://github.com/PolymathNetwork/Polymesh/pull/1105

    modified logic

    • reject_instruction now checks that the caller is a party of at least one of the legs. If the caller is not a party of the instruction, then UnauthorizedSigner error is returned.

    modified agent functionality

    • reject_instruction requires that the sender is the owner/custodian of a portfolio from at least one leg.

    MESH-1692: Rip out migrations

    https://github.com/PolymathNetwork/Polymesh/pull/1104

    Migration versions were set to 0 and existing migration code was removed.

    MESH-1675: Don't check perms in Identity::leave_identity_as_{identity, key}

    https://github.com/PolymathNetwork/Polymesh/pull/1095

    modified logic

    • Do not check permissions in Identity::leave_identity_as_key.

    modified api

    • Removed extrinsics Identity::{join, leave}_identity_as_identity and Identity::revoke_offchain_authorization.
    • Removed event Identity.ForwardedCall.
    • Removed errors {Permissions, Identity}.RecursionNotAllowed

    Add CI runtime with short blocktime

    https://github.com/PolymathNetwork/Polymesh/pull/1106

    Adds in a new CI runtime.

    This runtime has short block times so it can run quickly for automated tests.

    MESH-1669/Remove 100k POLYX mint for new accounts

    https://github.com/PolymathNetwork/Polymesh/pull/1109

    Removes 100k POLYX initial funding for mainnet

    Add a waitBocks utility function for the integration tests

    https://github.com/PolymathNetwork/Polymesh/pull/1112

    Utility function for integration tests

    MESH-1695: Round down in transfer_benefit

    https://github.com/PolymathNetwork/Polymesh/pull/1111

    modified logic

    • CapitalDistribution.{claim, push_benefit} will now round down for indivisible currencies before transferring gains.

    MESH-1704 fix scope in compliance manager tests

    https://github.com/PolymathNetwork/Polymesh/pull/1114

    Use Scope::Ticker in compliance manager tests.

    MESH-1701/Enforce max leg limit in settlement instructions

    https://github.com/PolymathNetwork/Polymesh/pull/1116

    modified API

    • Settlement::reject_instruction now takes two additional params (portfolio and max_leg_count).

    MESH-1653: Some benchmark fixes

    https://github.com/PolymathNetwork/Polymesh/pull/1122

    Fixes benchmarks - pips, settlement & committee

    Update itn_rewards.json

    https://github.com/PolymathNetwork/Polymesh/pull/1124

    Updates ITN Reward Points (provisional values)

    Update spec & tx version

    https://github.com/PolymathNetwork/Polymesh/pull/1126

    Updates all networks to spec_version 3000, tx_version 1

    MESH-1653: Update benchmarks for mainnet

    https://github.com/PolymathNetwork/Polymesh/pull/1128

    Updated weights for mainnet.

    More mainnet genesis config / refactoring

    https://github.com/PolymathNetwork/Polymesh/pull/1129

    • Removes itn / alcyone / buffron networks
    • Fixes mainnet configuration / runtimes
    • Updates genesis bridged amounts
    • Updates benchmarks to use Polymesh DbWeights
    • Syncs dev, ci, testnet and mainnet chain specs
    • Updates itn_rewards to remove invalid accounts
    • Updates Ethereum reserved ticker list
    • Updates testnet & mainnet chain_specs

    MESH-1722 fix dedup in compliance requirements (#1142)

    https://github.com/PolymathNetwork/Polymesh/pull/1142

    • Fix bugs in replace_asset_compliance and change_compliance_requirement
    Source code(tar.gz)
    Source code(zip)
    polymesh-4.0.0-linux-amd64.sha256(97 bytes)
    polymesh-4.0.0-linux-amd64.tgz(39.69 MB)
    polymesh_runtime-4.0.0.sha256(93 bytes)
    polymesh_runtime-4.0.0.tgz(4.06 MB)
  • v3.3.0(Sep 15, 2021)

    Polymesh 3.3.0 Release Notes

    Fix Phragman Issue

    https://github.com/PolymathNetwork/Polymesh/pull/1100

    Removes pruning of Phragman solution set to allow off-chain calculations to be submitted back on-chain.

    Backports fix from: #992 into 3.3

    Authorization refactor; nix accept_authorization for explicit extrinsics

    https://github.com/PolymathNetwork/Polymesh/pull/1035

    modified API

    • Removed Identity::accept_authorization in favor of ExternalAgents::accept_become_agent, Portfolio::accept_portfolio_custody,
    • Merge some error types into AuthorizationError::BadType.
    • Cleanup AuthorizationType, removing TransferPrimaryIssuanceAgent and TransferCorporateActionAgent variants.

    NCBD-234 Fix cli integration tests

    https://github.com/PolymathNetwork/Polymesh/pull/1040

    modified logic

    • in testnet chains, genesis accounts now get BOOTSTRAP_TREASURY POLYX instead of BOOTSTRAP_STASH the higher amount is needed for the integration tests.

    Fix deserialization from jsonrpc for the RPC interface.

    modified logic

    Polkadot's RPC serializes rust enum variant type names to lowercase. This seems to only affect rust style enums like our Singatory enum.

    This PR uses #[serde(alias = "identity")] variant attribute to allow deserialize from the lowercase variant name.

    Misc refactors and bug fixes, mostly re current DIDs

    https://github.com/PolymathNetwork/Polymesh/pull/1039

    modified logic

    • Some bug fixes around permissions in some extrinsics. Not particularly notable.
    • Fixed a bug in make_multisig_signer where you could call it several times for the same multisig.

    MESH-1615/Relax CapitalDistribution::reclaim to only require portfolio custody

    https://github.com/PolymathNetwork/Polymesh/pull/1029

    modified logic

    • Relaxed CapitalDistribution::reclaim to only require portfolio custody

    MESH-1629/create simple relayer

    https://github.com/PolymathNetwork/Polymesh/pull/1028

    new features

    • Added Relayer pallet. This pallet provides subsidising support, to allow a paying_key to pay transaction and protocol fees.
    • Added type Subsidy.
    • Added AccountKeyUsage storage map to identity pallet. Internal functions are provided manage a 'usage' counter for account keys to lock them to their identity. This is being used by relayer, but can be used by other pallets.

    modified API

    • AuthorizationData::AddRelayerPayingKey(AccountID, AccountID, Balance) and AuthorizationType::AddRelayerPayingKey was added. The authorization is used to add a subsidy to a user_key.
    • Added error AccountKeyIsBeingUsed to the identity pallet. This error is returned if a paying/user key tries to leave their identity.

    modified logic

    • Extrinsics accept_primary_key, leave_identity_as_key, leave_identity_as_identity, remove_secondary_keys can throw error AccountKeyIsUsed if the key is being used as a paying_key or user_key in the relayer pallet.

    MESH-1651: Don't allow a portfolio with assets to be deleted

    https://github.com/PolymathNetwork/Polymesh/pull/1044

    new features

    • A new storage item Portfolio.portfolio_asset_count(pid) => u64 keeps count of the number of distinct assets with non-zero balance stored in the portfolio.

    modified logic

    • Portfolio.delete_portfolio(pid) will error with PortfolioNotEmpty when Portfolio.portfolio_asset_count(pid) == 0.

    MESH-1652: T::Balance => polymesh_primitives::Balance

    https://github.com/PolymathNetwork/Polymesh/pull/1047

    No external impact

    MESH-1625: Constant time portfolio name uniqueness

    https://github.com/PolymathNetwork/Polymesh/pull/1048

    new features

    • Adds Portfolio.name_to_number for fast PortfolioName => PortfolioNumber lookup.

    MESH-1625: Move out AssetName from SecurityToken

    https://github.com/PolymathNetwork/Polymesh/pull/1049

    modified API

    • SecurityToken.name is moved into storage item Asset.asset_names(ticker) => AssetName.

    MESH-1631/redirect fees to subsidiser

    new features

    • Add support to pay transaction & protocol fees using a subsidy in Relayer.
    • Add restriction on pallets that can be subsidised.

    modified API

    • Added error InsufficientSubsidyBalance to protocol-fee pallet. This error is returned if the subsidy doesn't have enough remaining POLYX to pay for the protocol fee.
    • Added PalletNotSubsidised to TransactionError.

    modified logic

    • If the caller's account key has a subsidy in Relayer, then the transaction and/or protocol fees will be paid by the subsidiser.

    MESH-1625: Move out CADetails from CorporateAction

    https://github.com/PolymathNetwork/Polymesh/pull/1053

    modified API

    • Moved field CorporateAction.details: CADetails into its own storage item Details: CAId => CADetails.

    MESH-1625: Split Venue

    https://github.com/PolymathNetwork/Polymesh/pull/1055

    modified API

    • Split Settlement.update_venue into update_venue_type & update_venue_details along with respective events.
    • Removed fields Venue.{details, instructions}. The former improves performance and the latter crucially removes an attack vector.
    • Added storage item Settlement.details(venue_id) -> VenueDetails.
    • Added storage item Settlement.venue_instructions(venue_id, instruction_id) -> ().

    MESH-1625: Comment out smart extension code

    https://github.com/PolymathNetwork/Polymesh/pull/1052

    modified API

    • Removes smart extension related storage items. These should have been unused on ITN.

    MESH-1625: AssetType::Custom uses ID instead of string

    https://github.com/PolymathNetwork/Polymesh/pull/1051

    new features

    • Extrinsic Asset.register_custom_asset_type(origin, ty: Vec<u8>) was added. It is used to register string contents for a custom asset type, getting back an CustomAssetTypeId which can be used in AssetType::Custom. The extrinsic uses the following new resources:
      • Storage items Asset.{CustomTypeIdSequence, CustomTypes, CustomTypesInverse}. These are used by register_custom_asset_type
      • Events Asset.{CustomAssetTypeExists, CustomAssetTypeRegistered}.
      • Error Asset.CustomAssetTypeIdOverflow.

    modified API

    • AssetType::Custom has a field CustomAssetTypeId(u32) instead of Vec<u8>.

    MESH-1656/bridge freezing permissions

    https://github.com/PolymathNetwork/Polymesh/pull/1059

    new features

    • Add support for multiple freeze admin accounts to the bridge pallet.

    modified API

    • New extrinsics add_freeze_admin and remove_freeze_admin to bridge pallet. These can only be called by the current bridge admin to add/remove freeze admins.
    • New events FreezeAdminAdded and FreezeAdminRemoved.

    modified logic

    • Bridge extrinsic freeze can now be called by any of the freeze admin accounts.

    MESH-1636/Relayer tests

    https://github.com/PolymathNetwork/Polymesh/pull/1050

    Adds additional tests for simple relayer - no downstream impact.

    MESH-1662/allow changing paying key

    https://github.com/PolymathNetwork/Polymesh/pull/1057

    new features

    • Allow user key to change subsidiser in single transaction.
    • Fix issue with user key calling remove_paying_key.

    modified API

    • Removed error AlreadyHasPayingKey.

    modified logic

    • accept_paying_key now allows accepting a new paying key without having to first remove the old paying key. (MESH-1663)
    • Fixed issue with the user key calling remove_paying_key. (MESH-1662)

    modified agent functionality

    • accept_paying_key can now emit event RemovePayingKey if the user key already had a subsidy.

    MESH-1664: Allow different ss58 values

    https://github.com/PolymathNetwork/Polymesh/pull/1069

    Allows us to specify correct SS58 values for different networks.

    MESH-1661: Optional PUIS

    https://github.com/PolymathNetwork/Polymesh/pull/1065

    modified API

    • Asset.create_asset now takes an additional parameter that decides whether the asset will enforce investor uniqueness (IU). This information is stored in Asset.disable_iu, which, if true, means that IU is not enforced.

    ITN Rewards

    new features

    • New pallet rewards and new extrsinc claim_itn_reward.

    MESH-1658/audit bridge pallet

    https://github.com/PolymathNetwork/Polymesh/pull/1060

    modified API

    • Added event BridgeTxScheduleFailed for when scheduling a transaction failed.

    modified logic

    • Extrinsic change_bridge_limit will throw error DivisionByZero if duration == 0.
    • Errors NoValidCdd, DivisionByZero, Overflow, BridgeLimitReached are now reported correctly.

    modified agent functionality

    • Event BridgeTxScheduleFailed can be emitted by extrinsics force_handle_bridge_tx, batch_propose_bridge_tx, propose_bridge_tx, handle_bridge_tx, unfreeze_txs, handle_scheduled_bridge_tx.

    MESH-1665/ITN Rewards: CDD Check for recipients

    https://github.com/PolymathNetwork/Polymesh/pull/1070

    modified logic

    Check that the recipient of ITN rewards has a valid CDD claim.

    MESH-1659/relayer increase decrease polyx limit

    https://github.com/PolymathNetwork/Polymesh/pull/1068

    new features

    • Add extrinsics increase_polyx_limit and decrease_polyx_limit to increase/decrease the POLYX limit of a subsidy.
    • Add error Overflow that can be thrown by increase_polyx_limit or decrease_polyx_limit.

    modified agent functionality

    • Added extrinsics increase_polyx_limit and decrease_polyx_limit that can emit event UpdatedPolyxLimit.

    MultiSig: Subsidise rejecting proposal and consistent errors

    https://github.com/PolymathNetwork/Polymesh/pull/1071

    new features

    • When a MultiSig signer rejects a proposal, the transaction is paid for by the primary key of the creator.
    • When approving a MultiSig proposal, throw an error if the proposal was already executed.
    Source code(tar.gz)
    Source code(zip)
    polymesh-3.3.0-linux-amd64.sha256(97 bytes)
    polymesh-3.3.0-linux-amd64.tgz(36.37 MB)
    polymesh_runtime-3.3.0.sha256(93 bytes)
    polymesh_runtime-3.3.0.tgz(3.09 MB)
  • v3.1.0(Jul 30, 2021)

    Polymesh 3.1.0 Release Notes

    MESH-1597: Split issuance and token creation #981

    https://github.com/PolymathNetwork/Polymesh/pull/981

    new features

    • Asset::create_asset_and_mint does what Asset::create_asset used to do

    modified API

    • Asset::create_asset no longer mints tokens by default

    MESH-1543: coverage bridge #979

    https://github.com/PolymathNetwork/Polymesh/pull/979

    Refactor on UT of bridge pallet and it also add new ones to increase the coverage of this module.

    Changes in Bridge pallet

    1. handle_bridge_tx_now adds new argument exempted_did, which ignore the bridge limits if it is some. This allows to remove the "hacky approach" in force_handle_signed_bridge_tx line 853.
    2. Move code outside decl_storage macro.
    3. Remove some duplicated code.

    More stuff

    1. Genesis configuration has been moved out from lib.rs into genesis.rs.
    2. Runtime migrations have been moved out from lib.rs into migration.rs.
    3. ExtBuilder supports bridge configuration.

    modified API

    • Bridge::Event::TxsHandled added the recipient account to each handled transaction.

    MESH-1603: allow portfolio custodians unilaterally quit #977

    https://github.com/PolymathNetwork/Polymesh/pull/977

    new features

    • A new extrinsic quit_portfolio_custody is added in the portfolio module to allow a portfolio custodian to relinquish custodianship duties without going through the authorization sequence.

    modified logic

    • Accepting a portfolio custody authorization for the portfolio owner will not add the pair of portfolio owned and the portfolio ID to the PortfoliosInCustody mapping in the portfolio module.
    • The portfolio name length parameter was removed from the weight of the create_portfolio extrinsic in the portfolio module.

    MESH-1598: use expect/assert in benchmarks #986

    https://github.com/PolymathNetwork/Polymesh/pull/986

    Changed all ? operators in the benchmarks to unwrap() and changed all ensure's to assert.

    MESH-1617: Fixed a bug preventing some operators from changing commission #987

    https://github.com/PolymathNetwork/Polymesh/pull/987

    MESH-1593: Fix payout_stakers benchmarks #988

    https://github.com/PolymathNetwork/Polymesh/pull/988

    MESH-1542: Improve code coverage for Identity module #990

    https://github.com/PolymathNetwork/Polymesh/pull/990

    MESH-1581: External Agents #978

    https://github.com/PolymathNetwork/Polymesh/pull/978

    new features

    • The ExternalAgents pallet has been added. The functionality is described more thoroughly in the code documentation. As a result, many things noted below, on a best-effort basis, have changed, including extrinsics, schema, events, error types, and some data types.
    • Types AgentGroup and AGId have been added.

    modified API

    • SubsetRestriction (i.e. ExtrinsicPermissions & friends) is now redefined as either Whole, These(elems), and Except(elems).
    • TargetIdentity::PrimaryIssuanceAgent is now TargetIdentity::ExternalAgent, testing for if the identity is any of the external agents.
    • AuthorizationData::BecomeAgent(Ticker, AgentGroup) was added. This authorization is used for adding an external agent with a group to an asset. Similarly, AuthorizationType::BecomeAgent was added.
    • AuthIdentifier was removed. It was never actually in use.
    • Extrinsics CorporateActions::reset_caa, Asset::remove_primary_issuance_agent, and Asset::accept_primary_issuance_agent_transfer have been removed.
    • The error IrrelevantAuthorization (Portfolio pallet) was removed.
    • CorporateActions::Agent (storage item) was removed.
    • SecurityToken.primary_issuance_agent was removed.
    • SecondaryKeyNotAuthorizedForAsset was moved to the external agents pallet.

    modified logic

    • Relevant extrinsics now check for agent permissions. Sometimes, this replaces other explicit checks such as from the explicit CAA or PIA concepts.
    • AuthorizationData::{TransferPrimaryIssuanceAgent, TransferCorporateActionAgent} are now always rejected by the chain. That is, these variants are deprecated awaiting future removal.

    MESH-1587: move Alcyone & general genesis identity balances to the bridge #966

    https://github.com/PolymathNetwork/Polymesh/pull/966

    modified logic

    • Genesis identities in dev and testnet configurations are changed a bit to more closely resemble the ITN config.

    MESH-1623: add memo field to portfolio #1004

    https://github.com/PolymathNetwork/Polymesh/pull/1004

    new features

    • Add optional memo field to portfolio.move_portfolio_funds. Each asset moved can have a memo added to the move.

    modified API

    • Add memo field (Option<Memo>) to MovePortfolioItem struct.
    • Add memo field to MovedBetweenPortfolios event.

    modified logic

    • Each asset that is moved between portfolios can have a memo attached to the move action.

    MESH-1620: refactor #1011

    https://github.com/PolymathNetwork/Polymesh/pull/1011

    This is a refactor of the batch functions in the utility pallet. No logic was changed. The main goal is to decrease duplicate code.

    ExternalAgents: Fix schema + fn agent_permissions #1012

    https://github.com/PolymathNetwork/Polymesh/pull/1012

    modified API

    • Fixed bug in schema, Meta -> ExceptMeta

    modified logic

    • Fixed bug in fn agent_permissions for ExceptMeta

    MESH-1619: Allow rescheduling failed Settlements #996

    https://github.com/PolymathNetwork/Polymesh/pull/996

    new features

    • Event InstructionRescheduled
    • Errors InstructionNotFailed and UnknownInstruction
    • Extrinsic Settlement::reschedule_instruction

    modified API

    • Settlement::reject_instruction only takes instruction_id as an argument

    modified logic

    • Instructions are no longer pruned upon failure and instead go into a Failed state.

    MESH-1621: Script to create snapshot of all user balances #1000

    https://github.com/PolymathNetwork/Polymesh/pull/1000

    Created a script to get users balances and store them in a CSV file.

    To run: enter yarn polyx_balances from cli folder

    MESH-1622: create script to distribute POLYX #1010

    https://github.com/PolymathNetwork/Polymesh/pull/1010

    How to run script: cd scripts/cli/util node <file_name>.js --account <private_key or mnemonic phrase> --amount <amount>

    If you are using mnemonic phrase as the account wrap it in quotes.

    MESH-1620: improve batch functions (EventCounts, ErrorAt) #1003

    https://github.com/PolymathNetwork/Polymesh/pull/1003

    new features

    • batch functions return number of events emitted from each call.

    modified API

    • Changed BatchInterrupted, BatchOptimisticFailed and BatchCompleted events to include a vector of event counts.
    • Wrap the call index and error in a ErrorAt type. This changes BatchInterrupted and BatchOptimisticFailed.

    MESH-1638: Add a reverse map to allow an easy lookup from IdentityId to list of assets for which the identity is an EA #1021

    https://github.com/PolymathNetwork/Polymesh/pull/1021

    new features

    • External agents now has a mapping for Agents to what tickers they are agents for. This is available in ExternalAgents::AgentOf map (IdentityId, Ticker) => ().
    Source code(tar.gz)
    Source code(zip)
    polymesh-3.1.0-linux-amd64.sha256(97 bytes)
    polymesh-3.1.0-linux-amd64.tgz(36.67 MB)
    polymesh_runtime-3.1.0.sha256(93 bytes)
    polymesh_runtime-3.1.0.tgz(2.18 MB)
  • v3.0.2(Apr 29, 2021)

  • v3.0.1(Apr 8, 2021)

    changelog

    modified api

    • Removed pips_votingHistoryByAddress, pips_votingHistoryById, and asset_balanceAt RPC functions. (https://github.com/PolymathNetwork/Polymesh/pull/980)
    • add_investor_uniqueness_claim_v2 now uses scope from the claim to verify the proof. (https://github.com/PolymathNetwork/Polymesh/pull/970)

    new features

    • More constants are now exposed via Metadata for easier consumption (https://github.com/PolymathNetwork/Polymesh/pull/972)
    • New InvestorUniquenessV2 Claim has been added. (https://github.com/PolymathNetwork/Polymesh/pull/970)
    • New Identity::revoke_claim_by_index function to revoke claims without inner scope. (https://github.com/PolymathNetwork/Polymesh/pull/970)

    modified logic

    • Fixed a bug in Distribution::{claim, push_benefit} where remaining could underflow/wrap when sufficient tokens were locked but amount was too small. (https://github.com/PolymathNetwork/Polymesh/pull/975)
    • Setting the portfolio custodian to the owner of the portfolio now clears the PortfolioCustodian mapping of the portfolio ID in question thus saving some runtime storage. (https://github.com/PolymathNetwork/Polymesh/pull/976)
    Source code(tar.gz)
    Source code(zip)
    polymesh-3.0.1-linux-amd64.sha256(97 bytes)
    polymesh-3.0.1-linux-amd64.tgz(36.66 MB)
    polymesh_runtime-3.0.1.sha256(93 bytes)
    polymesh_runtime-3.0.1.tgz(2.20 MB)
  • v3.0.0(Mar 31, 2021)

    changelog

    modified api

    • The AssetType enum now has an extra variant - StableCoin. Schema has been updated accordingly. (https://github.com/PolymathNetwork/Polymesh/pull/956)
    • The Staking Reward event now also contains the Identity of the key being rewarded. (https://github.com/PolymathNetwork/Polymesh/pull/958)
    • Added CW, SX & BQ jurisdictions (https://github.com/PolymathNetwork/Polymesh/pull/917)
    • Removed OfflineSlashingParams from the genesis configuration of pallet-im-online and schema. (https://github.com/PolymathNetwork/Polymesh/pull/922)
    • Removed *-live configs (https://github.com/PolymathNetwork/Polymesh/pull/924)
    • No API change but in the metadata, ethereum::EcdsaSignature -> EcdsaSignature, ethereum::EthereumAddress -> EthereumAddress. (https://github.com/PolymathNetwork/Polymesh/pull/936)
    • Bonding less than MinimumBond to Staking::bond will now throw a BondTooSmall (https://github.com/PolymathNetwork/Polymesh/pull/921)
    • pallet_confidential(module index = 43) has been removed. (https://github.com/PolymathNetwork/Polymesh/pull/923)
    • No API change but a few changes in the metadata: secondary_key::api::LegacyPermissions -> LegacyPermissions, secondary_key::api::SecondaryKey -> SecondaryKey, and <T as IdentityTrait>::OffChainSignature -> T::OffChainSignature. (https://github.com/PolymathNetwork/Polymesh/pull/943)
    • register_did, mock_cdd_register_did, get_my_did, and get_cdd_of extrinsics have been moved to a new Testnet pallet. (https://github.com/PolymathNetwork/Polymesh/pull/940)
    • [Only applies to new networks] Address prefix changed from 5xxx to 2xxx. i.e. We are not using 12 as the ss58 prefix. (https://github.com/PolymathNetwork/Polymesh/pull/935)
    • Changed how classic tickers are serialized and deserialized. It shouldn't have impact on existing networks since there was no classic ticker reserved there. (https://github.com/PolymathNetwork/Polymesh/pull/929)

    modified logic

    • Calling the add_investor_uniqueness_claim extrinsic in the identity pallet with a new investor uniqueness claim that has a new ScopeId cleans up identity-ticker balances related to the ScopeId of the old investor uniqueness claim if there was one. (https://github.com/PolymathNetwork/Polymesh/pull/955)
    • A Base pallet has been added; moving UnexpectedError event from the pallet Identity to Base.
    • The Base pallet has an error TooLong triggered in cases where a stored list would cross more than 2048 elements. (https://github.com/PolymathNetwork/Polymesh/pull/959)
    • The error NowAfterPayment is no longer emitted by the distribute extrinsic of the CapitalDistribution pallet. (https://github.com/PolymathNetwork/Polymesh/pull/926)
    • Tipping is allowed only for Operational transactions that are called from CDD or Governance Committee members. (https://github.com/PolymathNetwork/Polymesh/pull/918)
    • If there are multiple PIPs scheduled for a given block, they now respect block weight limits. (https://github.com/PolymathNetwork/Polymesh/pull/918)
    • Removed error BalanceAmountProductSupplyDivisionFailed in Capital Distributions. (https://github.com/PolymathNetwork/Polymesh/pull/942)
    • Renamed error BalanceAmountProductOverflowed to BalancePerShareProductOverflowed in Capital Distributions. (https://github.com/PolymathNetwork/Polymesh/pull/942)
    • Fixed tracking of validators being run by an Operator. Involved storage migration to retroactively fix the running_count. (https://github.com/PolymathNetwork/Polymesh/pull/946)
    • The distribute extrinsic of the CapitalDistribution pallet can now be called past the dividend date defined in the payment_at argument. (https://github.com/PolymathNetwork/Polymesh/pull/926)
    • By default, polymesh_contracts::put_code is disabled. :boom: (https://github.com/PolymathNetwork/Polymesh/pull/920)
    • Testnet only functions moved to a new testnet pallet. Transaction version breaking change. (https://github.com/PolymathNetwork/Polymesh/pull/940)

    new features

    • Added a new asset_balanceAt RPC call to query identity-ticker balance at a checkpoint. (https://github.com/PolymathNetwork/Polymesh/pull/957)
    • ITN Genesis Config (https://github.com/PolymathNetwork/Polymesh/pull/954)
    • Primary key of every new Identity now gets seeded with some POLYX on ITN (https://github.com/PolymathNetwork/Polymesh/pull/954)
    • New RPC can_transfer_granular (https://github.com/PolymathNetwork/Polymesh/pull/928)
    • Added the ITN runtime (https://github.com/PolymathNetwork/Polymesh/pull/919)
    • New extrinsic polymesh_contracts::set_put_code_flag which enables/disables polymesh_contracts::put_code. (https://github.com/PolymathNetwork/Polymesh/pull/920)
    • New event polymesh_contracts::Event::PutCodeFlagChanged is emitted, when root calls polymesh_contracts::set_put_code_flag. (https://github.com/PolymathNetwork/Polymesh/pull/920)
    • New Identity::add_investor_uniqueness_claim_v2 extrinsic that supports InvestorUniqueness claims generated by PIUS v2.
    Source code(tar.gz)
    Source code(zip)
    polymesh-3.0.0-linux-amd64.sha256(97 bytes)
    polymesh-3.0.0-linux-amd64.tgz(36.66 MB)
    polymesh_runtime-3.0.0.sha256(93 bytes)
    polymesh_runtime-3.0.0.tgz(2.16 MB)
  • v2.6.0(Mar 4, 2021)

    Alcyone 2.6.0 Release Notes

    modified API

    • Type Distribution has gained per_share: Balance field. This is used instead the total supply to compute the benefit of a claimant as per_share * shares_at_checkpoint. (#942)

    modified logic

    • Fixed tracking of validators being run by an Operator. Involved storage migration to retroactively fix the running_count. (#946)
    • Removed error BalanceAmountProductSupplyDivisionFailed in Capital Distributions. (#942)
    • Renamed error BalanceAmountProductOverflowed to BalancePerShareProductOverflowed in Capital Distributions. (#942)
    Source code(tar.gz)
    Source code(zip)
    polymesh-2.6.0-linux-amd64.sha256(97 bytes)
    polymesh-2.6.0-linux-amd64.tgz(30.87 MB)
    polymesh_runtime-2.6.0.sha256(93 bytes)
    polymesh_runtime-2.6.0.tgz(2.22 MB)
  • v2.5.0(Feb 25, 2021)

    Alcyone 2.5.0 Release Notes

    modified api

    • affirm_instruction, withdraw_affirmation, reject_instruction, and affirm_with_receipts extrinsics of settlement pallet now takes one more parameter, max_legs_count - the no. of legs in which the sender portfolio is authorizing the transaction. (https://github.com/PolymathNetwork/Polymesh/pull/855) (https://github.com/PolymathNetwork/Polymesh/pull/856)
    • HistoricalVoting RPC Definitions fixed in Schema. (https://github.com/PolymathNetwork/Polymesh/pull/851)
    • Portfolio RPCs removed. The storage can be queried directly for those. (https://github.com/PolymathNetwork/Polymesh/pull/851)
    • committee::RawOrigin is now a zero sized type (ZST) and simplified. (https://github.com/PolymathNetwork/Polymesh/pull/857)
    • close extrinsic of Committee pallet was removed. Closed event and errors CloseBeforeVoteEnd and NotAllowed are removed as a result. (https://github.com/PolymathNetwork/Polymesh/pull/857)
    • Struct/definition of PolymeshVotes used in Committee pallet has changed. (https://github.com/PolymathNetwork/Polymesh/pull/857)
    • Removed the unused IssueAssetItem from the schema and code. (https://github.com/PolymathNetwork/Polymesh/pull/898)
    • Checkpoint.timestamps now is a double map Ticker -> CheckpointId -> Moment instead of just a map CheckpointId -> Moment. This fixes a bug. Existing storage is nuked on chain upgrade per discussion. (https://github.com/PolymathNetwork/Polymesh/pull/899)
    • Checkpoint.{total_supply_at, balance_at_checkpoint, balance_updates, schedule_ref_count, and schedule_points} are now also double maps. (https://github.com/PolymathNetwork/Polymesh/pull/899)
    • ScheduleSpec now takes remaining which denotes the number of CPs that can be made before the schedule expires. remaining == 0 means the schedule will never expire. The movement from remaining: 1 -> 0 triggers expiry. The schema is changed for this type. StoredSchedule receives the same change. A schema change + storage migration follows suit. (https://github.com/PolymathNetwork/Polymesh/pull/882)

    new features

    • Receipt issuers for settlement can now invalidate and revalidate their receipts (https://github.com/PolymathNetwork/Polymesh/pull/878)
    • New error Multisig::Error::<T>::TooManySigners: Number of signers is greater than pending number of signer in remove_multisig_signers_via_creator function. (https://github.com/PolymathNetwork/Polymesh/pull/887)
    • Utility to create a list of transactions that require Asset/Portfolio permissions (https://github.com/PolymathNetwork/Polymesh/pull/894)
    • Adds a new event FundraiserWindowModifed (https://github.com/PolymathNetwork/Polymesh/pull/903)
    • Adds a new fundraiser status ClosedEarly (https://github.com/PolymathNetwork/Polymesh/pull/903)
    • New function added asset::controller_transfer() which allows the PIA to force transfer tokens. Correspondingly, a new event, ControllerTransfer is added. (https://github.com/PolymathNetwork/Polymesh/pull/879)
    • Emit FundraiserClosed event when fundraisers are stopped (https://github.com/PolymathNetwork/Polymesh/pull/903)
    • added distributeALCY.js script (https://github.com/PolymathNetwork/Polymesh/pull/874)

    modified logic

    • The hard limit of 10 legs per instruction is removed. You can now add as many instructions as the block gas/weight limit allows. (https://github.com/PolymathNetwork/Polymesh/pull/905)
    • TXs are sorted by (priority, insertion_id). Previously TXs were sorted by (priority, valid_till, insertion_id) (https://github.com/PolymathNetwork/Polymesh/pull/893)
    • Priority of a TX is its tip and only operational TX can contains a tip != 0. (https://github.com/PolymathNetwork/Polymesh/pull/893)
    • A minimum of 1 POLYX must be locked when bonding for staking. (https://github.com/PolymathNetwork/Polymesh/pull/910)
    • Checkpoint schedules now store reference counts from CAs rather than removability. As a result, CACheckpoint::Schedule now stores the number of CPs belonging to a schedule before attachment. Schema changes + migration follow suit. (https://github.com/PolymathNetwork/Polymesh/pull/882)
    • Legs of a settlement instruction are now executed in order. (https://github.com/PolymathNetwork/Polymesh/pull/873)

    internal

    • Integer underflow bug fix in pallets/multisig/src/lib.rs via remove_multisig_signers_via_creator (https://github.com/PolymathNetwork/Polymesh/pull/887)
    • Minimum investment amount is now checked correctly against the payment tokens instead of the offering token. (https://github.com/PolymathNetwork/Polymesh/pull/869)
    • Accounted for price_divisor when checking for max price. (https://github.com/PolymathNetwork/Polymesh/pull/869)
    • No longer checks that the sender is an asset holder since 0 amount transfers are allowed. (https://github.com/PolymathNetwork/Polymesh/pull/869)
    • The close extrinsic in the Committee pallet now works in the develop chain as a result of changing the value of the MotionDuration parameter from 0 to 1. (https://github.com/PolymathNetwork/Polymesh/pull/771)
    Source code(tar.gz)
    Source code(zip)
    polymesh-2.5.0-linux-amd64.sha256(97 bytes)
    polymesh-2.5.0-linux-amd64.tgz(30.85 MB)
    polymesh_runtime-2.5.0.sha256(93 bytes)
    polymesh_runtime-2.5.0.tgz(2.21 MB)
  • v2.4.0(Jan 27, 2021)

    Alcyone 2.4 Release Notes

    Mesh 1460/STO improvements #848

    new features

    • STOs can now have a name and a minimum investment amount.

    modified API

    • Fundraiser data struct changed to contain the STO status and min investment amount, Schema update required.
    • FundraiserCreated event changed to contain the STO name.

    Refactored Multisig benchmarks #840

    modified API

    • change_all_signers_and_sigs_required has been removed. The users should use utility.batch function.

    Re enable slashing #849

    modified logic

    • Slashing will happen even when slashing targets are set to None. However, the amount of slash will be zero in those cases.

    MESH-1431/Allow fix rewards #841

    modified logic

    • Introduce a fixed reward process, which will kick in whenever the total_issuance() >= MaxInflatedTotalIssuance::get().

    MESH-1418/Enforce cdd_id uniqueness #839

    modified logic

    • Either a single (unique within its claims) cdd_id is allowed for a given identity or it can be default_cdd_id() only if the claims issuer is the systematic issuers. Ex - Alice can have default_cdd_id() that is provided by the systematic issuers and Alice can also possess one non-default cdd_id claim which should be the same for all its non-default cdd claims.

    Misc cleanups & refactorings, Part 2 #837

    modified logic

    • Check permissions in Pips::{reschedule_execution, snapshot, clear_snapshot}.

    Fix PIA semantics and forwarded_call permissions #834

    modified logic

    • Only the PIA (which defaults to the ticker owner) can call issue, redeem and controller_transfer. Tokens are moved to the PIAs default portfolio.
    • When using identity::forwarded_call permissions are now checked correctly for the calling DID, rather than the original origin. identity::forwarded_call is only used when an identity is a key to another identity.
    • Recursive calls to identity::forwarded_call are not allowed.

    Remove duplicated schedule event and fix comments #833

    modified API

    • Changes the ExecutionScheduled event to only contain the new scheduled block, not the previous one

    Misc cleanups & refactorings, Part 1 #831

    modified logic

    • MemberNotFound and BadOrigin errors in the committee pallet got merged into NotAMember.
    • Committee::<T, I>::close now requires committee membership from the origin.
    • Fixed atomicity bugs in move_portfolio_funds and the bridge pallet in general.
    • remove_smart_extension allows itself to shuffle around SEs for improved performance.

    Mesh 1439/native tms #829

    new features

    • Added native transfer managers (CTM and PTM). Includes additions in Schema, extrinsics, and state variables.

    modified logic

    • SEs are no longer checked during transfers

    internal

    • Removed some of the gas refund stuff to simplify a few things
    • Fixed investor count

    MESH-1433: Introduce limits for fixed values in CA extrinsic weights #827

    modified logic

    • set_default_targets(..., targets) requires that the number of DIDs in targets <= a new limit, or an error occurs. The error occurs also in ìnitiate_corporate_action if targets is provided under the same condition.
    • set_did_withholding_tax(..., did, Some(tax)) requires that the number of DIDs for which a withholding-tax override is set is strictly below (<) a new limit or an error occurs. The error occurs also in ìnitiate_corporate_action if withholding_tax.len() is strictly above the limit.

    Remove STO, Voting, & Dividend #826

    removed features

    • Dividend, Voting and STOCapped modules have been removed as they have been superseded.

    modified API

    • The following types have been removed from the schema file: STO, Investment, Dividend, and Ballot.

    Mesh 1373/ Configurable limit on no. of validators for an entity #821

    new features

    • Associated permissioned identity with the intended count of validators they are able to run.
    • Intended count should always be less than the MaxValidatorPerIdentity * validator_count().
    • Introduced the PermissionedIdentityPrefs type in the schema to facilitate the above functionality.
    • New extrinsic update_permissioned_validator_intended_count is added to update the intended_count for a given permissioned identity.

    modified API

    • Introduced intended_count param for add_permissioned_validator dispatch.
    • Removed Commission type from the schema and from the runtime as well.

    modified logic

    • Only permissioned entities are allowed to show the intended to run a validator.

    Fix minor typos #820

    modified API

    • Schema for CAKind enum had a typo - UnpredictableBenfit should be UnpredictableBenefit

    MESH-1413: ASCII-only tickers #818

    modified logic

    • A Ticker must now consist of ASCII characters or error TickerNotAscii occurs at registration or asset creation time. Not applied retroactively to existing tickers.

    MESH-1095/DocumentHash #817

    new features

    • New event Asset::MigrationFailure. It adds a detailed description of any error during the migration.
    • Schema: New types to support MigrationFailure event.

    modified API

    • DocumentHash type has been limited to the output of the most common hash functions: 512bits, 256bits, 128bits, etc.
    • Schema: DocumentHash has been updated.

    Add getter to retrieve all the exempted identities #816

    new features

    • Introduced get_all_exempted_identities() getter function in PTM contract.

    MESH-1416: Require IU claims for payer and receiver of transfers #812

    modified logic

    • Both the sender and receiver of an asset settlement must have an InvestorUniqueness claim (previously just receiver)
    • Transfer and Issued events are only emitted for create_asset if total_supply > 0

    MESH-1483: Rename valid_from to trade_date and add value_date #811

    new features

    • Capture value_date of an instruction.

    modified API

    • Modified add_instruction and add_and_affirm_instruction by renaming valid_from to trade_date and adding new value_date parameter.
    • Modified Instruction schema.
    • Modified InstructionCreated event.

    modified logic

    • value_date of an instruction must be after trade_date.

    MESH-1409/Add check for zero balance during revoke of IU claim #809

    modified behaviour

    • Removal of InvestorUniqueness claim is only allowed when the target ScopeId has 0 balance.

    MESH-1422: correctly check permissions in batches #805

    modified behaviour

    • Portfolio module name corrected (was: Session) and runtime upgrade is implemented for all portfolio storage items.
    • Utility batch functions no longer require extrinsic permissions (but underlying batched extrinsics still do).

    Mesh 1383/Settlement Benches #799

    bug fixes

    • Increase arbitrary gas limits to allow PTM to go through.

    internal

    • Update the 4-byte selector for the verify_transfer() fn of the smart extensions.
    • Added Benchmarks for the execute_schedule_instruction, claim_receipt, reject_instruction, affirm_instruction, affirm_with_receipts.
    • Remove weight_for module in the settlement pallet in the favour of WeightInfo trait.
    • execute_schedule_instruction() now returns Result<u32, DispatchError>.
    • Remove WeightInfo impl of ().
    • Dedup the code in settlement/benchmarking.rs

    MESH-1294/Multisig benchmarks #743

    modified logic

    • Mulitsig proposals are now executed on the next block instead of the current block.

    internal

    • Partial benchmarks for Multisig.

    MESH-1423, MESH-1424, MESH-1425 - Sto and settlement fixes #807

    modified logic

    • Fixes Fundraiser(Type) schemas
    • Allow fractional prices in STOs (e.g. a price of 1.5 is 1,500,000)
    • Emit FundraiserId in event when creating Fundraiser
    • Fix Receipt invalidation when instructions settle

    MESH-1382/ Same block settlement changes to next block settlement #763

    modified logic

    • SettleOnAffirmation instructions now settle on the block following their final affirmation, not immediately upon their last affirmation

    MESH-1393: Refactor snapshots using live queue model #765

    modified API

    • Cancelled state removed for PIPs since they no longer have a cool down period
    • set_proposal_cool_off_period extrinsic removed

    modified logic

    • Removes cool down period for PIPs

    internal

    • Calculates PIP snapshot queue as each PIP is added or voted on, rather than when snapshot is called
    Source code(tar.gz)
    Source code(zip)
    polymesh-2.4.0-linux-amd64.sha256(97 bytes)
    polymesh-2.4.0-linux-amd64.tgz(28.90 MB)
    polymesh_runtime-2.4.0.sha256(93 bytes)
    polymesh_runtime-2.4.0.tgz(2.24 MB)
  • v2.3.0(Dec 16, 2020)

  • v2.2.0(Nov 25, 2020)

  • v2.1.0(Oct 28, 2020)

  • v2.0.1(Sep 1, 2020)

  • v1.1.4(Aug 6, 2020)

  • v1.1.3(Jul 20, 2020)

  • v1.1.2(Jul 7, 2020)

    Emit events on governance committee voting Fix kill_proposal to accept governance committee origin Fix set_proposal_cool_off_period for PIP execution Use consistent errors in PIP pallet Disallow asset transfers to and from the same identity Fix custody bug

    Source code(tar.gz)
    Source code(zip)
Owner
Polymath
The Securities Token Platform
Polymath
Node implementation for aleph blockchain built with Substrate framework

This repository contains the Rust implementation of Aleph Zero blockchain node based on the Substrate framework. Aleph Zero is an open-source layer 1

Aleph Zero Foundation 55 Dec 15, 2022
xx network Substrate based blockchain node

xx network Substrate based blockchain node Rust Setup First, complete the basic Rust setup instructions. MacOS users: setup to compile for Linux Befor

xx network 11 Dec 20, 2022
The Data Highway Substrate-based blockchain node.

DataHighway-Parachain, a parachain on the Polkadot network. Planned features include a decentralized LPWAN roaming hub for LoRaWAN IoT devices and network operator roaming agreements, participative mining, an inter-chain data market, and DAO governance.

DataHighway 11 Dec 2, 2022
A node and runtime configuration for polkadot node.

MANTA NODE This repo is a fresh FRAME-based Substrate node, forked from substrate-developer-hub/substrate-node-templte ?? It links to pallet-manta-dap

Manta Network 14 Apr 25, 2021
Simple node and rust script to achieve an easy to use bridge between rust and node.js

Node-Rust Bridge Simple rust and node.js script to achieve a bridge between them. Only 1 bridge can be initialized per rust program. But node.js can h

Pure 5 Apr 30, 2023
Sample lightning node command-line app built on top of Ldk Node (similar to ldk-sample).

ldk-node-sample Sample lightning node command-line app built on top of Ldk Node (similar to ldk-sample ). Installation git clone https://github.com/op

optout 3 Nov 21, 2023
A high performance blockchain kernel for enterprise users.

English | 简体中文 What is CITA CITA is a fast and scalable blockchain kernel for enterprises. CITA supports both native contract and EVM contract, by whi

CITAHub 1.3k Dec 22, 2022
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 1k Dec 30, 2022
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 314 Jan 6, 2023
Substrate: The platform for blockchain innovators

Substrate · Substrate is a next-generation framework for blockchain innovation ?? . Trying it out Simply go to substrate.dev and follow the installati

Parity Technologies 7.7k Dec 30, 2022
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.2k Jan 1, 2023
Local blockchain for Free TON DApp development and testing.

TON OS Startup Edition Local blockchain for Free TON DApp development and testing. Have a question? Get quick help in our channel: TON OS Startup Edit

TON Labs 35 Jan 2, 2023
A value transfer bridge between the Monero blockchain and the Secret Network.

Secret-Monero-Bridge A value transfer bridge between the Monero blockchain and the Secret Network. Proof-of-Concept Video Demonstration: https://ipfs.

null 28 Dec 7, 2022
C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

null 1.9k Dec 28, 2022
HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

null 949 Dec 31, 2022
🌍 The Earth Blockchain on Polkadot (archived)

Social Network Blockchain · The Social Network blockchain is a next-generation governance, economic, and social system for humanity built on Polkadot

social.network 18 Jan 2, 2023
High Performance Blockchain Deserializer

bitcoin-explorer bitcoin_explorer is an efficient library for reading bitcoin-core binary blockchain file as a database (utilising multi-threading). D

Congyu 18 Dec 22, 2022
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021