The Data Highway Substrate-based blockchain node.

Overview

Please read parachain template readme - https://github.com/substrate-developer-hub/substrate-parachain-template/blob/master/README.md.

Data Highway GitHub license Test Create release

The Data Highway Substrate-based blockchain node.

WARNING: This implementation is a proof-of-concept prototype and is not ready for production use.

Table of contents

Note: Generate a new chapter with openssl rand -hex 3

Contributing

Refer to CONTRIBUTING.md for contributing instructions.

Documentation

Relevant part of contributing instructons will progressively be moved to DataHighway Developer Hub.

Refer to EXAMPLES.md for different examples of how to configure and interact.

Quickstart

  • Follow the steps below

Run a single Node (development)

Run multiple Nodes (local testnet)

Run multiple Nodes (latest_testnet)

Run a Validator node (Harbour testnet)

Run a Collator node as a parachain to Polkadot (Chachacha/Rococo)

Comments
  • feat: Restore Substrate pallets for on-chain upgrade that were temporarily removed to minimise genesis runtime size for Rococo launch

    feat: Restore Substrate pallets for on-chain upgrade that were temporarily removed to minimise genesis runtime size for Rococo launch

    • [X] Restore Substrate pallets that were removed to minimize runtime size for Rococo genesis launch. As part of launching on the Rococo parachain production testnet in this previous PR that was merged https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17, a recommendation was to minimise the runtime size and then perform incremental runtime upgrades to reintroduce the funcitonality. Previously in that PR we removed the following Substrate pallets in the following commits: https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17/commits/e6edf898614f65f64e97f51a87e8a892c1de1605, https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17/commits/7a0810d7bde3e27dd8e5df880caf73ca11a52c7b, https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17/commits/676e96bdfcf5f27f89ea45d3586f009ed28aaa1f These pallets have been restored in this PR using git revert.

    • [X] Update versions in Cargo.toml files for and other parameters like spec_version and impl_version

    • [X] check that all essential pallet functionality works using polkadot.js

      • [X] balances - make transfers between accounts, hard spooned balances transferred from standalone to parachain
      • [X] democracy - create a preimage to transfer funds and use that preimage hash to create a proposal
      • [X] treasury - check 30 million DHX balance hard spooned from standalone to parachain
      • [X] sudo - check that sudo works for forceTransfer and setBalance
      • [X] staking - check that able to add additional collator nodes and they generate and finalize blocks
      • [X] runtime upgrade - check that able to perform a runtime upgrade by changing the existential deposit constant and using .compact.compressed.wasm file that is generated
      • [X] metadata - check that no errors in polkadot.js using custom_types.json
    • [X] Linting to fix indentation issues

      • Unable to run benchmarks with cargo build --release --features runtime-benchmarks, as it gives the following erorr even though we're not evening using frame society, and even though successful_origin is already implemented in that branch here https://github.com/paritytech/substrate/blob/22d40c7/frame/society/src/lib.rs#L1278
    • [X] - check that unit and integration tests still pass

    • [ ] SKIPPED - Memory Profiling. See notes in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17

    • [ ] SKIPPED - Try-runtime. See notes in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17

    • [ ] SKIPPED - Benchmarking. See notes in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17

    • [X] Updates to incorporate changes from Substrate branch 'polkadot-v0.9.17' to 'polkadot-v0.9.18' that affected those pallets

    • [X] Fix benchmarking script

    • [X] Increment spec_version to 3

    • [X] Increment version of runtime and node from 3.4.0 to 3.5.0

    • [X] Performed the following on the Rococo server (not local machine)

      • [X] Generated "raw" chain spec, wasm, and state files using ./scripts/dump_wasm_and_state_for_all_chains.sh and copied into both ./res folder and ./upgrades/3.5.0. Important note: we need this changes to be deployed at genesis because it includes the Sudo pallet, which we need for on-chain runtime upgrades (we likely won't use the files in ./upgrades/3.0.4 and ./upgrades/3.5.0)
      • [X] Build release and copy ./target/release/wbuild/datahighway-parachain-runtime.compact.wasm and .compact.compressed.wasm and store in /res folder for the latest changes in this PR for the parachains
    • [ ] Generate new Github release (use contents of this checklist to mention what was done) and perform runtime upgrade on Rococo. Add DRAFT RELEASE MESSAGE below

    v3.5.0
    
    ## What's Changed
    
    * Restore pallets to the parachain again that were pruned from initial genesis Rococo deployment as recommmended by the Cumulus tutorial to minimize runtime size
    * Updates to incorporate changes from Substrate branch 'polkadot-v0.9.17' to 'polkadot-v0.9.18' that affected those pallets
    * Fixed logic in benchmarking script
    * Check that all essential pallet functionality works using polkadot.js
      * Balances pallet - make transfers between accounts, hard spooned balances transferred from standalone to parachain
      * Democracy - create a preimage to transfer funds and use that preimage hash to create a proposal
      * Treasury - check 30 million DHX balance hard spooned from standalone to parachain
      * Sudo - check that sudo works for forceTransfer and setBalance
      * Collators - check that able to add additional collator nodes and they generate and finalize blocks
      * Runtime upgrade - check that able to perform a runtime upgrade by for example changing the existential deposit constant and using .compact.compressed.wasm file that is generated
      * Metadata - check that no browser errors in polkadot.js using custom_types.json
    * Increment `spec_version` to `3` for use with on-chain runtime upgrade
    * Increment version of runtime and node from 3.4.0 to 3.5.0
    * check that unit and integration tests still pass
    * Release build performed with the latest changes on the Rococo server and generated the plain and raw chain specification, wasm, and state files using ./scripts/dump_wasm_and_state_for_all_chains.sh and copied those files into the ./res folder. Copied the following files into the ./res folder after release build:
      * ./target/release/wbuild/datahighway-parachain-runtime/datahighway_parachain_runtime.compact.wasm
      * ./target/release/wbuild/datahighway-parachain-runtime/datahighway_parachain_runtime.compact.compressed.wasm
    * Generate new Github release
    
    opened by ltfschoen 3
  • Updated ParaId and Rococo Json

    Updated ParaId and Rococo Json

    Since Rococo was restarted and our ParaId was allocated to some other chain, so as a part of this PR

    1. We registered new paraid and replaced with existing one.
    2. We pointed to latest rococo.json as suggested by community here https://matrix.to/#/!xVhtrCsUqgnxpwmsZq:matrix.parity.io/$TeagUwHxOWY4fcGy_KbZ3-Nss2NrvE6poCDZsILiy5k?via=matrix.parity.io&via=matrix.org
    3. Added our chain's raw json, WASM, Genesis and compact wasm in res folder
    4. Updated DataHighway release to v3.3.0
    opened by ayushmishra2005 2
  • feat: Update MultiAddress with AccountIndex

    feat: Update MultiAddress with AccountIndex

    i think we need these changes in order for transfers between accounts to work

    this PR where i've tried to change pub type Address = MultiAddress<AccountId, ()>; to pub type Address = MultiAddress<AccountId, AccountIndex>; generates the following error:

      error[E0599]: the function or associated item `execute_block` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1392:24
           |
      1392 |               Executive::execute_block(block)
           |                          ^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0599]: the function or associated item `initialize_block` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1396:24
           |
      1396 |               Executive::initialize_block(header)
           |                          ^^^^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0599]: the function or associated item `apply_extrinsic` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1408:24
           |
      1408 |               Executive::apply_extrinsic(extrinsic)
           |                          ^^^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0599]: the function or associated item `finalize_block` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1412:24
           |
      1412 |               Executive::finalize_block()
           |                          ^^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0599]: the function or associated item `validate_transaction` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1434:24
           |
      1434 |               Executive::validate_transaction(source, tx, block_hash)
           |                          ^^^^^^^^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0599]: the function or associated item `offchain_worker` exists for struct `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`, but its trait bounds were not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1440:24
           |
      1440 |               Executive::offchain_worker(header)
           |                          ^^^^^^^^^^^^^^^ function or associated item cannot be called on `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>` due to unsatisfied trait bounds
           |
          ::: /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:1
           |
      44   | / pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
      45   | | where
      46   | |     Extra: SignedExtension,
      47   | | {
      ...    |
      53   | |     pub function: Call,
      54   | | }
           | |_- doesn't satisfy `_: Checkable<ChainContext<Runtime>>`
           |
           = note: the following trait bounds were not satisfied:
                   `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>`
    
      error[E0277]: the trait bound `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>: Checkable<ChainContext<Runtime>>` is not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1572:1
           |
      1572 | / cumulus_pallet_parachain_system::register_validate_block! {
      1573 | |     Runtime = Runtime,
      1574 | |     BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>,
      1575 | |     CheckInherents = CheckInherents,
      1576 | | }
           | |_^ the trait `Checkable<ChainContext<Runtime>>` is not implemented for `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>`
           |
           = help: the following implementations were found:
                     <sp_runtime::generic::UncheckedExtrinsic<Address, Call, Signature, Extra> as Checkable<Lookup>>
           = note: required because of the requirements on the impl of `ExecuteBlock<sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>>` for `frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>`
           = note: 1 redundant requirement hidden
           = note: required because of the requirements on the impl of `ExecuteBlock<sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>>` for `BlockExecutor<Runtime, frame_executive::Executive<Runtime, sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, u32>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeAssetTxPayment<Runtime>)>>, ChainContext<Runtime>, Runtime, (frame_system::Pallet<Runtime>, (cumulus_pallet_parachain_system::Pallet<Runtime>, (pallet_utility::Pallet<Runtime>, (pallet_randomness_collective_flip::Pallet<Runtime>, (pallet_timestamp::Pallet<Runtime>, (pallet_identity::Pallet<Runtime>, (pallet_recovery::Pallet<Runtime>, (pallet_scheduler::Pallet<Runtime>, (pallet_sudo::Pallet<Runtime>, (parachain_info::Pallet<Runtime>, (pallet_indices::Pallet<Runtime>, (pallet_balances::Pallet<Runtime>, (pallet_transaction_payment::Pallet<Runtime>, (pallet_asset_tx_payment::Pallet<Runtime>, (pallet_authorship::Pallet<Runtime>, (pallet_collator_selection::Pallet<Runtime>, (pallet_session::Pallet<Runtime>, (pallet_democracy::Pallet<Runtime>, (pallet_aura::Pallet<Runtime>, (cumulus_pallet_aura_ext::Pallet<Runtime>, (cumulus_pallet_xcmp_queue::Pallet<Runtime>, (pallet_xcm::Pallet<Runtime>, (cumulus_pallet_xcm::Pallet<Runtime>, (cumulus_pallet_dmp_queue::Pallet<Runtime>, (pallet_collective::Pallet<Runtime, Instance1>, (pallet_collective::Pallet<Runtime, Instance2>, (pallet_elections_phragmen::Pallet<Runtime>, (pallet_membership::Pallet<Runtime, Instance1>, (pallet_treasury::Pallet<Runtime>, (pallet_bounties::Pallet<Runtime>, (pallet_child_bounties::Pallet<Runtime>, (pallet_tips::Pallet<Runtime>, (pallet_assets::Pallet<Runtime>, (pallet_preimage::Pallet<Runtime>, (pallet_proxy::Pallet<Runtime>, (pallet_multisig::Pallet<Runtime>, (pallet_referenda::Pallet<Runtime>, (pallet_conviction_voting::Pallet<Runtime>, (membership_supernodes::Module<Runtime>, (roaming_operators::Module<Runtime>, (roaming_networks::Module<Runtime>, (roaming_organizations::Module<Runtime>, (roaming_network_servers::Module<Runtime>, (roaming_devices::Module<Runtime>, (roaming_routing_profiles::Module<Runtime>, (roaming_service_profiles::Module<Runtime>, (roaming_accounting_policies::Module<Runtime>, (roaming_agreement_policies::Module<Runtime>, (roaming_network_profiles::Module<Runtime>, (roaming_device_profiles::Module<Runtime>, (roaming_sessions::Module<Runtime>, (roaming_billing_policies::Module<Runtime>, (roaming_charging_policies::Module<Runtime>, (roaming_packet_bundles::Module<Runtime>, (mining_setting_token::Module<Runtime>, (mining_setting_hardware::Module<Runtime>, (mining_rates_token::Module<Runtime>, (mining_rates_hardware::Module<Runtime>, (mining_sampling_token::Module<Runtime>, (mining_sampling_hardware::Module<Runtime>, (mining_eligibility_token::Module<Runtime>, (mining_eligibility_hardware::Module<Runtime>, (mining_eligibility_proxy::Module<Runtime>, (mining_claims_token::Module<Runtime>, (mining_claims_hardware::Module<Runtime>, (mining_execution_token::Module<Runtime>, (exchange_rate::Module<Runtime>,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>>`
      note: required by a bound in `cumulus_pallet_parachain_system::validate_block::implementation::validate_block`
          --> /Users/ls2/.cargo/git/checkouts/cumulus-59522f43471fa161/76479e7/pallets/parachain-system/src/validate_block/implementation.rs:45:5
           |
      45   |     E: ExecuteBlock<B>,
           |        ^^^^^^^^^^^^^^^ required by this bound in `cumulus_pallet_parachain_system::validate_block::implementation::validate_block`
           = note: this error originates in the macro `cumulus_pallet_parachain_system::register_validate_block` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    
    opened by ltfschoen 2
  • Need Tanganika chainspec with bootnodes

    Need Tanganika chainspec with bootnodes

    Can you post a link the Tanganika [Kusama paraID 2116] chainspec -- with the bootnodes included? We [Polkaholic.io] are building a multi-chain block explorer with XCM support cf https://tanganika.polkaholic.io/chain/tanganika and are attempting to run a full archive node (to index blocks including traces, xcm transfers into and out of Tanganika, etc.) and couldn't find the chainspec/bootnodes in your repo to do so.

    opened by sourabhniyogi 1
  • Upgrade substrate dependency to match 0.9.24

    Upgrade substrate dependency to match 0.9.24

    All substrate-related dependency have been updated to v0.9.24.

    Remaining changes: In pallet_bounties there are new types in Config trait namely: CuratorDepositMin & CuratorDepositMax. Proper true value is to be assigned here

    opened by sudipghimire533 1
  • Refactoring work

    Refactoring work

    • [ ] Do we need PR #19 where we use AccountIndex with MultiAddress? I have asked the community here https://substrate.stackexchange.com/questions/738/how-to-use-accountindex-with-multiaddress-in-a-parachain. Can we also remove use of SendTransactionTypes? Kilt's Spiritnet parachain codebase here that has already live also uses dependencies from Substrate branch 'polkadot-v0.9.17', but even though they are using pallets like pallet_indices, they haven't added AccountIndex to MultiAddress, and they aren't using CreateSignedTransaction, SigningTypes, or SendTransactionTypes. Similarly with the live Zeitgeist parachain codebase here that is using 0.9.16, they aren't using it either, and nor is the cumulus
    opened by ltfschoen 1
  • feat: Add CrowdloanRewards pallet

    feat: Add CrowdloanRewards pallet

    i get this error when i try to implement these changes:

    error[E0277]: the trait bound `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, ()>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>: Encode` is not satisfied
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1441:38
           |
      1441 |         fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {
           |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Encode` is not implemented for `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, ()>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>`
           |
           = help: the following implementations were found:
                     <sp_runtime::generic::UncheckedExtrinsic<Address, Call, Signature, Extra> as Encode>
           = note: required because of the requirements on the impl of `Codec` for `sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, ()>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>`
           = note: required because of the requirements on the impl of `sp_api::BlockT` for `sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<MultiAddress<sp_runtime::AccountId32, ()>, Call, MultiSignature, (CheckNonZeroSender<Runtime>, CheckSpecVersion<Runtime>, CheckTxVersion<Runtime>, CheckGenesis<Runtime>, CheckEra<Runtime>, CheckNonce<Runtime>, CheckWeight<Runtime>, ChargeTransactionPayment<Runtime>)>>`
    
      error[E0277]: the trait bound `pallet_crowdloan_rewards::Pallet<Runtime>: Callable<Runtime>` is not satisfied in `Call`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1441:39
           |
      1441 |         fn collect_collation_info(header: &<Block as BlockT>::Header) -> cumulus_primitives_core::CollationInfo {
           |                                             ^^^^^ within `Call`, the trait `Callable<Runtime>` is not implemented for `pallet_crowdloan_rewards::Pallet<Runtime>`
           |
      note: required because it appears within the type `Call`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
      note: required by a bound in `sp_runtime::generic::UncheckedExtrinsic`
          --> /Users/ls2/.cargo/git/checkouts/substrate-7e08433d4c370a21/22d40c7/primitives/runtime/src/generic/unchecked_extrinsic.rs:44:40
           |
      44   | pub struct UncheckedExtrinsic<Address, Call, Signature, Extra>
           |                                        ^^^^ required by this bound in `sp_runtime::generic::UncheckedExtrinsic`
           = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
    

    so i tried adding the following

    impl pallet_crowdloan_rewards::Config for Runtime {
        ...
        type Currency = Balances;
        ... 
    

    and removing Call as follows CrowdloanRewards: pallet_crowdloan_rewards::{Pallet, Call, Config<T>, to CrowdloanRewards: pallet_crowdloan_rewards::{Pallet, Config<T>,

    but i still get further errors

      note: required because it appears within the type `Event`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
      note: required by a bound in `Decode`
          --> /Users/ls2/.cargo/registry/src/github.com-1ecc6299db9ec823/parity-scale-codec-2.3.1/src/codec.rs:277:19
           |
      277  | pub trait Decode: Sized {
           |                   ^^^^^ required by this bound in `Decode`
           = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::codec::Decode` (in Nightly builds, run with -Z macro-backtrace for more info)
    
      error[E0277]: the trait bound `Runtime: frame_system::pallet::Config` is not satisfied in `Event`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^ within `Event`, the trait `frame_system::pallet::Config` is not implemented for `Runtime`
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
           |
      note: required because it appears within the type `Event`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
      note: required by a bound in `Result`
          --> /Users/ls2/.rustup/toolchains/nightly-2021-12-15-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/result.rs:503:17
           |
      503  | pub enum Result<T, E> {
           |                 ^ required by this bound in `Result`
           = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::codec::Decode` (in Nightly builds, run with -Z macro-backtrace for more info)
    
      error[E0277]: the trait bound `pallet_balances::Pallet<Runtime>: frame_support::traits::tokens::currency::Currency<_>` is not satisfied in `Event`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^ within `Event`, the trait `frame_support::traits::tokens::currency::Currency<_>` is not implemented for `pallet_balances::Pallet<Runtime>`
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
           |
      note: required because it appears within the type `Event`
          --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:1237:1
           |
      651  |  | parameter_types! {
           |  |_________^
      ...
      1237 |    construct_runtime!(
           |   _^
           |  |_|
           | ||
      1238 | |      pub enum Runtime where
      1239 | |          Block = Block,
      1240 | |          NodeBlock = opaque::Block,
      ...    |
      1320 | |      }
      1321 | |  );
           | |__- in this macro invocation
      note: required by a bound in `Result`
          --> /Users/ls2/.rustup/toolchains/nightly-2021-12-15-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/result.rs:503:17
           |
      503  | pub enum Result<T, E> {
           |                 ^ required by this bound in `Result`
    

    so i created this issue https://github.com/PureStake/crowdloan-rewards/issues/52

    help wanted 
    opened by ltfschoen 1
  • Failed Attempt 1 Bulk Migrate pallets from standalone chain that was updated to common branch 'polkadot-v0.9.17'

    Failed Attempt 1 Bulk Migrate pallets from standalone chain that was updated to common branch 'polkadot-v0.9.17'

    TODO

    • Unable to figure out what library we're using that is causing this no std build errors
      error: duplicate lang item in crate `std`: `panic_impl`.
        |
        = note: the lang item is first defined in crate `sp_io` (which `datahighway_parachain_runtime` depends on)
        = note: first definition in `sp_io` loaded from /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/target/release/wbuild/datahighway-parachain-runtime/target/wasm32-unknown-unknown/release/deps/libsp_io-062aada906e39ead.rmeta
        = note: second definition in `std` loaded from /Users/ls2/.rustup/toolchains/nightly-2021-12-15-x86_64-apple-darwin/lib/rustlib/wasm32-unknown-unknown/lib/libstd-10bfc64443a2c69d.rlib
    
      error: duplicate lang item in crate `std`: `oom`.
        |
        = note: the lang item is first defined in crate `sp_io` (which `datahighway_parachain_runtime` depends on)
        = note: first definition in `sp_io` loaded from /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/target/release/wbuild/datahighway-parachain-runtime/target/wasm32-unknown-unknown/release/deps/libsp_io-062aada906e39ead.rmeta
        = note: second definition in `std` loaded from /Users/ls2/.rustup/toolchains/nightly-2021-12-15-x86_64-apple-darwin/lib/rustlib/wasm32-unknown-unknown/lib/libstd-10bfc64443a2c69d.rlib
    
      error[E0282]: type annotations needed
         --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:597:6
          |
      597 | impl<LocalCall> frame_system::offchain::CreateSignedTransaction<LocalCall> for Runtime
          |      ^^^^^^^^^ cannot infer type for type parameter `LocalCall`
    
      error[E0282]: type annotations needed
         --> /Users/ls2/code/DataHighway-DHX/DataHighway-Parachain/runtime/src/lib.rs:649:9
          |
      649 | impl<C> frame_system::offchain::SendTransactionTypes<C> for Runtime
          |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for type parameter `C`
    
    • Add parachain_staking pallet as replacement for pallet_staking. See https://purestake.github.io/moonbeam/parachain_staking/index.html
    opened by ltfschoen 1
  • import hardspoon account balances from standalone chain into genesis block of parachain

    import hardspoon account balances from standalone chain into genesis block of parachain

    Status update:

    • [X] need to resolve the Error 1 mentioned below.
      • See https://gist.github.com/ltfschoen/44db460c02b23aa6562e3567cfac4659
      • See https://substrate.stackexchange.com/questions/156/how-to-overwrite-endowed-account-balances-using-additional-accounts-and-balances
    • [X] need to replace the contents of genesis.json with the actual list of hardspooned accounts and balances that were obtained from the Subscan API, which has been uploaded here https://github.com/DataHighway-DHX/open-polkadot-js-library/blob/main/subscan/data/datahighway.api.subscan.io-api-scan-accounts-2022-02-03-12:09-993000000-genesis-fixture.json, so we just copy/paste across
    • [X] fix so DHX DAO unlocked reserves is 30 million DHX (as it was incorrect)

    Error 1

    i've created this PR https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/5 to combine both the chain specification's endowed accounts with the contents of a JSON file genesis.json that contains further accounts and balances that i want to be credited to them in the genesis block (to overwrite any values in the endowed accounts).

    it compiles successfully, after changing to the compatible Rust version and compiling the code

    ./scripts/init.sh
    cargo build --release
    

    but when i then follow the polkadot-launch steps to copy the binary to the relevant polkadot-launch folder after setting up polkadot-launch to use DataHighway using this PR https://github.com/DataHighway-DHX/polkadot-launch/pull/2 and then run polkadot-launch, the polkadot-launch logs give an error message when it generates the chain spec Error: 0: Other: Error parsing spec file: 0x prefix is missing at line 208 column 1756,

    then copying the binary to the relevant folder for use with polkadot-launch :

    cp ./target/release/datahighway-collator ~/code/DataHighway-DHX/polkadot-launch/bin/datahighway-collator
    

    and then running the final step to run polkadot-launch with:

    yarn start config.json
    

    it outputs error:

    🧹 Resolving parachain id...
    2022-02-10 14:05:34 Building chain spec    
    
    🧹 Starting with a fresh authority set...
      👤 Added Genesis Authority alice
      👤 Added Genesis Authority bob
      👤 Added Genesis Authority charlie
      👤 Added Genesis Authority dave
    
    ⚙ Updating Relay Chain Genesis Configuration
      ✓ Updated Genesis Configuration [ validation_upgrade_frequency: 10 ]
      ✓ Updated Genesis Configuration [ validation_upgrade_delay: 10 ]
    
    ⛓ Adding Genesis Parachains
      ✓ Added Genesis Parachain 2000
      ✓ Added Genesis Parachain 3000
    ⛓ Adding Genesis HRMP Channels
      ✓ Added HRMP channel 2000 -> 3000
    Added Boot Nodes: /ip4/127.0.0.1/tcp/30336/p2p/12D3KooWF66thRTDXG2ksKm3nMCHeoMneuohs71Q4anPLVnBSsSp,/ip4/127.0.0.1/tcp/30337/p2p/12D3KooWAZ1VKfix84y8rrrLekd6xVksDgjiYooTNTBi32GSXCWN,/ip4/127.0.0.1/tcp/30338/p2p/12D3KooWEpmRWnuEga2oFPZ7P8BfcJBZj928XT46hhj6zyieA72R,/ip4/127.0.0.1/tcp/30339/p2p/12D3KooWFUiU4LrYD1MVwbvkE4wqvCTy2feU9LijMKPoEXBJhArG
    
    2022-02-10 14:05:36 Building chain spec    
    Error: 
       0: Other: Error parsing spec file: 0x prefix is missing at line 208 column 1756
    ...
    

    which is because the rococo-local.json file that it generates isn't being generated correctly, and its including snippets of the actual code in front of the hex values of the "genesis_head" value and "validation_code" properties as shown below:

    rococo-local.json

    ...
    "paras": {
      "paras": [
        [
          2000,
          {
            "genesis_head": "account_public_key_json "a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21"\naccount_balance_json 60000000000000000000000\naccount_ss58_address_json a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21 (5FmxcuFw...)\nno match b/w endowed and json for "a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21" so adding it to the list\n0x0000000000000000000000000000000000000000000000000000000000000000005c76496ba72...",
            "validation_code": "account_public_key_json "a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21"\naccount_balance_json 60000000000000000000000\naccount_ss58_address_json a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21 (5FmxcuFw...)\nno match b/w endowed and json for "a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21" so adding it to the list\n0x52bc5376
    

    i can't seem to debug in the chain_spec.rs file to figure out why it's not working (i.e. using println! or log::trace, etc), so i replicated the relevant parts of the code in a separate rust project here to see what was going on https://github.com/ltfschoen/RustTest/tree/master/projects/endow but that appears to be combining and returning the accounts and balances correctly:

    [
      (
        a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21 (5FmxcuFw...),
        30000000000000000000000,
      ),
    ...
    ]
    

    so i tried to isolate the issue...

    if i only use the for loop https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/5/files#diff-f2256017c4e606a30f53708578da46675512cc1300be6542ed5f77e58af0d6dcR961 and remove the line that calls get_allocation so it doesn't also add the accounts and balances in the .json file to the genesis, then it generates an error Error parsing spec file: 0x prefix is missing at line when i use polkadot-launch,

    but if i don't use that for loop (so it doesn't credit the endowed accounts), and i uncomment the get_allocation function again (so it credits the accounts loaded from the genesis.json file), then it compiles successfully and polkadot-launch launches the relay chain and collator nodes successfully, but it doesn't credit the accounts loaded from the genesis.json file when i add them to the address book to check their balance with polkadot.js at https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1:9988#/addresses

    • [X] - problem: need to find out who is being endowed in the parachain chain_spec that's causing the total issuance to double

    research: the in-built treasury account from the standalone chain, which is also the in-built treasury account for the parachain ss58 address: 4LTFqiD6H6g8a7ur9WH4RxhWx2givWfK7o5EDed3ai1nYTvk public key: 6d6f646c70792f74727372790000000000000000000000000000000000000000 which already has a balance of: 30.182709334742898651223000 million DHX

    in the genesis.json file that is a backup of the standalone chain balances we have: total issuance from the standalone chain of: 3.1852973655698758055894e+25 (i.e. 31.8 million DHX)

    but when i start the new parachain, and check the balances > totalIssuance, it is: 61,957,973,655,698,758,055,894,000 (i.e. 61 million DHX)

    solution: this was because the old temporary treasury account a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21 was also being funded in chain_spec.rs, which it shouldn't have, so i have removed it.

    we'll be using the balance in the genesis.json for the treasury, which will 4LTFqiD6H6g8a7ur9WH4RxhWx2givWfK7o5EDed3ai1nYTvk, which will overwrite the default value in the chain_spec.rs

    • [X] - problem: the sudo account from the standalone chain won't be the sudo account in the parachain, as we're using different keys for it. the old sudo standalone account is: ss58 address: 4NN9N4NCLWQWNsb2RRYE7CSPTN1tLa7Ez5eViJ4N1Q5wx9z3 public key: c201d4551d04a99772d8efe196490a96b4ee5e608ac8e495be9505a99e723069 it already has a balance of: 9.519994858881105000 DHX

    solution: we could remove the balance from the genesis.json and update the js script so it is clear that it was removed, so it isn't given a balance in the parachain. but i think we should just leave it and a democracy proposal can be used to burn that amount in the future instead since it is a small amount

    • [X] the authorities from the standalone chain won't also be authorities on the parachain as they have different accounts and keys, but these were effectively run by the DataHighway (funded by MXC) to run validator nodes and to secure the standalone chain. so although those accounts were given a head start with ~10 DHX in the initial standalone genesis, i think the account balances that they have now should remain since they contributed to early development. their account balances have changed due to validator rewards, so the old authority account balances are: note that their gran, babe, imon and audi keys didn't have an account balance.

    authority 1

    stash 3c62839f3ce86df3c27c66016b092d15186b23e429db4ad8338501fc219bfa6c ~10 DHX

    controller 42b728d9c752fe87c3e3db40d9a7d02f22b81bc1f0e49c59a5e128b861f87b08 ~22,760 DHX

    authority 2 stash 628580490f55f5340d8a5e5af85eb78fdc066f6ac0385ccb3d17dc9a8b3e651f ~10 DHX

    controller e627945747e5a66afd5ff3f383819dfb6dd9633f6c9d52b24b10307cc841d577 ~23,672 DHX

    authority 3 stash 44d784f6d346d337a98e273f683590c661ea20b83aa6c9ac93754e02cee4372e ~10 DHX

    controller 32e28b6f06a728b13d782b007d57ab53d7fe3fa2d5def2c58585d27007d5ea05 ~7,869 DHX

    authority 4

    stash 1e7c18d12311c46ca4fd9fba48f11ea81c7c87e992fc5b1abb4903219cc6b429 ~22,704.8269 DHX

    controller 3ee5ed5cdf314660b60c6acb87d51af5f10c5d8ea24dd762df4c5973a1683416 ~10 DHX

    authority 5

    stash b0e6b234c77cc3d9fde0f3a039779c8d6ae0a66cb95d764acc54667e74f4c800 ~10,690 DHX

    controller 2643aaa4cf95aa0f014c015722e31a356eb8bd17888f74bca1ca56c404445c39 ~10 DHX

    authority 6

    stash 48e771e75097d353d06b5fd469edf8cb53d8c9b8eeeb1aa0f480ff7a42e27f28 ~342 DHX

    cont 3e028f22ca42f5feee5344c3319ba97d23019087a124b43a825cb7d35ed7d522 ~10 DHX

    authority 7

    stash 1ae9a95688b6dcf6db83c61789e59352cdf363c5b13d39f37c27f7434439027e ~6,341 DHX

    cont 76ea25fc43fbdd113efabf6a12ea1f67c2916f9dd15d7c08a020269aa28cd521 ~10 DHX

    authority 8

    stash ec9ee2c38014483a454cfe108cc062e0ff641fef7c5c10f0a0f797cfdb860708 ~3,984 DHX

    cont ee323b965d01799f4af213347549ab5e8e533071df69c4d2ed122a354deb930c ~10 DHX

    authority 9

    stash 746be7c22192aa11d46d3b2bdad13cc77b1bab69ab9eb10799b629dd7ddfbf7e ~4,144 DHX

    cont cc517121c11d0135836a62816526bb40d9c9a0ae47f316c646c148a5cff0f200 ~10 DHX

    authority 10 stash ecc71d63ef4b80d8feab189a764cd3e759f941062f9b07168bbfcb814da7bf33 ~7,625 DHX

    cont 3c71cfbd77668301af5aefe0c81e3b4ffc1c0f0b07c0d42044922237d574455f ~10 DHX

    opened by ltfschoen 1
  • Implement `parachainStaking` & `Inflation` pallet

    Implement `parachainStaking` & `Inflation` pallet

    ParachainStaking will allow collators and delegators to stake their tokens and earn reward. The daily limit for this reward is 500DHX per day.

    Pallet Inflation adds 2000DHX to treasuery every day.

    Both of these pallets have been taken from Kilt's implementation and modified to match our need.

    opened by sudipghimire533 0
  • 'tokio-runtime-worker' panicked at 'SinkImpl::poll_flush called after error.'

    'tokio-runtime-worker' panicked at 'SinkImpl::poll_flush called after error.'

    I got the following error when syncing my Tanganika node with the relay and parachain, i'd synced ~11846441 out of 15934569, with 11846144 finalized blocks on relay chain and 1044591 out of 1104968 blocks with 0 finalized on parachain:

    root@localhost:~# journalctl -u datahighway.service -f
    Dec 26 07:50:46 localhost start.sh[29519]:       std::sys::unix::thread::Thread::new::thread_start
    Dec 26 07:50:46 localhost start.sh[29519]:              at rustc/34a6cae28e7013ff0e640026a8e46f315426829d/library/std/src/sys/unix/thread.rs:108:17
    Dec 26 07:50:46 localhost start.sh[29519]:   39: <unknown>
    Dec 26 07:50:46 localhost start.sh[29519]:   40: <unknown>
    Dec 26 07:50:46 localhost start.sh[29519]: Thread 'tokio-runtime-worker' panicked at 'SinkImpl::poll_ready called after error.', /home/sudip/.cargo/registry/src/github.com-1ecc6299db9ec823/quicksink-0.1.2/src/lib.rs:158
    

    i was using: https://github.com/DataHighway-DHX/DataHighway-Parachain/releases/download/v3.7.1/datahighway-collator https://github.com/DataHighway-DHX/DataHighway-Parachain/releases/download/v3.7.1/kusama.json https://raw.githubusercontent.com/DataHighway-DHX/DataHighway-Parachain/v3.6.0/res/kusama/kusama-parachain-raw.json

    It seems related to this https://github.com/paritytech/substrate/issues/12522

    when i restarted the node it continued syncing relay chain blocks, but stopped syncing parachain blocks and showed the following error:

    Error importing block 0x9a12c8dc3df1aab3f72ed5e0abfd7b15e9f9b50f4a15643f12058e3a5bf47897: consensus error: Import failed: Backend error: Can't canonicalize missing block number #1044592 when importing 0x9a12c8dc3df1aab3f72ed5e0abfd7b15e9f9b50f4a15643f12058e3a5bf47897 (#1048688)
    
    opened by ltfschoen 1
  • [log] Treasury Transfer Log

    [log] Treasury Transfer Log

    This issue will log the treasury transfer that was intended for the purpose of chain maintainance/operation.

    How to log??

    Add a comment in format specified below.

    What should be logged?

    • Every transaction that initiates from treasury.
    • After the transfer has been logged, also put the remarks on-chain with format:
    TxHash: 0x00000000000000000,Reason:short justification of reason
    
    • Same transfer should also be logged as a comment following this issue with much detailed as relevant
    treasury transfer log 
    opened by sudipghimire533 6
  • feat: Restore custom pallets for on-chain upgrade

    feat: Restore custom pallets for on-chain upgrade

    Note: This was used to test that we could restore all old custom pallets using an on-chain upgrade on Rococo using our paraID 2116 at https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fspreehafen.datahighway.com. It is not anticipated that this PR will be merged since the included pallets shall be developed further ready for production

    opened by ltfschoen 0
  • fix: Try to fix benchmarking

    fix: Try to fix benchmarking

    Trying to fix benchmarking error since a solution was mentioned here, but we already applied those changes to our codebase here and we are already using 'polkadot_v0.9.17', and Cumulus 'polkadot_v0.9.17' already includes the change that they said should fix it in their upstream here https://github.com/paritytech/cumulus/commits/polkadot-v0.9.17, but it still doesn't work

    When I run cargo check -p datahighway-collator --features runtime-benchmarks in this PR, it generates error shown below, although this time it is complaining about pallet-xcm rather than pallet-society

      error[E0046]: not all trait items implemented, missing: `successful_origin`
          --> /Users/ls2/.cargo/git/checkouts/polkadot-4038f27d5e4ea2e8/de0ecd4/xcm/pallet-xcm/src/lib.rs:1508:1
           |
      1508 | / impl<O: OriginTrait + From<Origin>, F: Contains<MultiLocation>> EnsureOrigin<O> for EnsureXcm<F>
      1509 | | where
      1510 | |     O::PalletsOrigin: From<Origin> + TryInto<Origin, Error = O::PalletsOrigin>,
      1511 | | {
      ...    |
      1527 | |     }
      1528 | | }
           | |_^ missing `successful_origin` in implementation
           |
           = help: implement the missing item: `fn successful_origin() -> OuterOrigin { todo!() }`
    
      error[E0046]: not all trait items implemented, missing: `successful_origin`
          --> /Users/ls2/.cargo/git/checkouts/polkadot-4038f27d5e4ea2e8/de0ecd4/xcm/pallet-xcm/src/lib.rs:1533:1
           |
      1533 | / impl<O: OriginTrait + From<Origin>, F: Contains<MultiLocation>> EnsureOrigin<O>
      1534 | |     for EnsureResponse<F>
      1535 | | where
      1536 | |     O::PalletsOrigin: From<Origin> + TryInto<Origin, Error = O::PalletsOrigin>,
      ...    |
      1552 | |     }
      1553 | | }
           | |_^ missing `successful_origin` in implementation
           |
           = help: implement the missing item: `fn successful_origin() -> OuterOrigin { todo!() }`
    
    opened by ltfschoen 0
  • Futures features

    Futures features

    • [ ] Do we want to add crowdloan-rewards from Moonbeam? See this draft PR https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/18 but wasn't able to resolve errors when trying to incorporate, so created an issue at the link provided in the description, and Moonbeam responded and changed it so we can use their branch 'polkadot-v0.9.17', as mentioned here https://github.com/PureStake/crowdloan-rewards/issues/52#issuecomment-1069048267 Alternatively we could just use this script to find out the list of contributors https://github.com/Phala-Network/phala-blockchain/blob/master/scripts/js/src/dumpCrowdloan.js
    • [ ] Do we want to add delegated proof of stake using Moonbeam's parachain-staking pallet instead of collator-selection or pallet-staking pallets. See:
      • https://moonbeam.network/announcements/moonbeam-collators-announcement/
      • https://purestake.github.io/moonbeam/parachain_staking/index.html It seems that parachain_staking also allows for a list of "delegators" to delegate funds to the collators, whereas collator_selection doesn't appear to include that feature. but parachain_staking only allows list of collators, but doesn't allow list of invulnerables like collator_selection does. and it isn't clear how to integrate parachain_staking instead of collator_selection into pallet_session as shown below:
    impl pallet_session::Config for Runtime {
        ...
        type ValidatorIdOf = pallet_collator_selection::IdentityCollator;
        ...
        type SessionManager = CollatorSelection;
    

    I tried to replace collator-selection with Moonbeam's parachain-staking pallet (since apparently it's more decentralized, and collator-selection allows for delegations), but couldn't get it to work at first attempt. other teams like Kilt, Mangata Finance, and Zeitgeist are using it, so we need to have a look at their codebases to see how they incorporated it.

    opened by ltfschoen 0
Releases(v3.7.1)
  • v3.7.0(Oct 11, 2022)

  • v3.6.1(Jul 28, 2022)

  • v3.6.0(Apr 1, 2022)

    v3.6.0

    What's Changed

    • Increment version of runtime and node from 3.5.0 to 3.6.0
    • Generate new Github release
    • Generated Kusama WASM, State and Spec files and moved in res/kusama
    • Moved Rococo related files in res/rococo
    • Removed unnecessary docker file
    • Attach copy of datahighway-collator executable hosted on Kusama bootnode datahighway-collator.tar.gz
    Source code(tar.gz)
    Source code(zip)
    datahighway-collator.tar.gz(43.80 MB)
  • v3.5.0(Mar 28, 2022)

    v3.5.0

    What's Changed

    • Restore pallets to the parachain again that were pruned from initial genesis Rococo deployment as recommmended by the Cumulus tutorial to minimize runtime size but excluding custom DataHighway pallets such as roaming and mining that shall be included in future runtime upgrades instead.
    • Updates to incorporate changes from Substrate branch 'polkadot-v0.9.17' to 'polkadot-v0.9.18' that affected those pallets
    • Fixed logic in benchmarking script
    • Check that all essential pallet functionality works using polkadot.js
      • Balances pallet - make transfers between accounts, hard spooned balances transferred from standalone to parachain
      • Democracy - create a preimage to transfer funds and use that preimage hash to create a proposal
      • Treasury - check 30 million DHX balance hard spooned from standalone to parachain
      • Sudo - check that sudo works for forceTransfer and setBalance
      • Collators - check that able to add additional collator nodes and they generate and finalize blocks
      • Runtime upgrade - check that able to perform a runtime upgrade. an on-chain upgrade was successfully performed on Rococo using code in PR #37 and using the .compact.compressed.wasm file that was generated, however we do not anticipate including that PR in production until after further development.
      • Metadata - check that no browser errors in polkadot.js using custom_types.json
    • Increment spec_version to 3 for use with on-chain runtime upgrade
    • Increment version of runtime and node from 3.4.0 to 3.5.0
    • check that unit and integration tests still pass
    • Release build performed with the latest changes on the Rococo server that is running the 1st Spreehafen collator bootnode and generated the plain and raw chain specification, wasm, and state files using ./scripts/dump_wasm_and_state_for_all_chains.sh and copied those files into the ./res folder. Copied the following files into the ./res folder after release build:
      • ./target/release/wbuild/datahighway-parachain-runtime/datahighway_parachain_runtime.compact.wasm
      • ./target/release/wbuild/datahighway-parachain-runtime/datahighway_parachain_runtime.compact.compressed.wasm
    • Generate new Github release
    • Attach copy of datahighway-collator executable hosted on Rococo bootnode for running other Rococo collator nodes with using a command like gunzip -c datahighway-collator.tar.gz | tar xopf -
    • Synchronise the 1st Spreehafen collator with the Rococo relay chain. Provide the wasm and state files to Parity to register Spreehafen chain on Rococo network with sudo as a parathread and parachain. Check the 1st Spreehafen collator node parachain generates and finalizes blocks. Add additional collators and check that their Aura session keys have been included correctly so both collators are shown to be generating blocks at https://polkadot.js.org/apps/?rpc=wss://spreehafen.datahighway.com#/explorer
    Source code(tar.gz)
    Source code(zip)
    datahighway-collator.tar.gz(43.45 MB)
  • v3.4.0(Mar 24, 2022)

  • v3.3.0(Mar 18, 2022)

    v3.3.0

    What's Changed

    • Registered New ParaId and Replaced existing paraid with new one.
    • Pointed to latest rococo.json as suggested by community here https://matrix.to/#/!xVhtrCsUqgnxpwmsZq:matrix.parity.io/$TeagUwHxOWY4fcGy_KbZ3-Nss2NrvE6poCDZsILiy5k?via=matrix.parity.io&via=matrix.org
    • Added DataHighway chain's raw JSON, WASM, Genesis and compact wasm in resfolder
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Mar 17, 2022)

    v3.2.0

    What's Changed

    • Updated version of datahighway-collator and datahighway-parachain-runtime packages to 3.2.0
    • Migrated all relevant pallets from DataHighway standalone chain PR https://github.com/DataHighway-DHX/node/pull/215, which fixes the block delay by switching from Babe to Aura, and also updates to Substrate branch 'polkadot-v0.9.17' from the substrate-parachain-template dated 10th Feb 2022
      • Switched from using a commit rev = '...' to using latest branch for parachain branch = 'polkadot-v0.9.17'
    • Omited the following pallets from parachain since only relevant on standalone chain: pallet-grandpa, pallet-im-online, pallet-election-provider-multi-phase, pallet-offences, pallet-staking, pallet-staking-reward-curve, pallet-bags-list, pallet-authority-discovery, frame-election-provider-support, sp-npos-elections, sp-transaction-storage-proof, sp-staking, sp-keyring, sp-authority-discovery
    • Updated script ./scripts/init.sh to nightly-2021-12-15
    • Reset versions in Cargo.toml files and other parameters like spec_version and impl_version
    • Replaced pub type Address = MultiAddress<AccountId, ()>; with pub type Address = MultiAddress<AccountId, AccountIndex>; like on standalone chain. Received help here https://substrate.stackexchange.com/a/725/83
    • Modify parachain constants/parameters for each pallet and the runtime (for example, if we want democracy proposals to take 1 week instead of 1 month then change the parameter otherwise we will have to wait that long to make that change when the chain is live unless we use sudo)
    • Checked that it runs using polkadot-launch by following these steps https://github.com/DataHighway-DHX/documentation/blob/master/docs/tutorials/tutorials-node-polkadot-launch-datahighway-rococo-local.md
      • It was failing with error when it tries to export-genesis-state. The cause of this problem was because the EXISTENTIAL_DEPOSIT was currently 1000000000000000, (i.e. 100 * MILLICENTS), but some of the balances in the hardspoon accounts that we are trying to import from the standalone chain had less than the existential deposit. This was fixed in this PR https://github.com/DataHighway-DHX/open-polkadot-js-library/pull/8, and copied the latest data/ that was generated into the genesis.json, and that fixed the issue.
      • Checked that all essential pallet functionality works using polkadot.js
        • Balances - transfers between accounts, checked hard spooned balances transferred from standalone to parachain
        • Democracy - created a preimage to transfer funds and use that preimage hash to create a proposal
        • Treasury - checked 30 million DHX balance hard spooned from standalone to parachain
        • Sudo - checked that sudo works for forceTransfer and setBalance. This is necessary since the endowed amount of 10 DHX is not sufficient to pay the runtime upgrade fee of approx 30 DHX.
        • Staking - checked that able to add additional collator nodes and they generate and finalize blocks
        • Runtime Upgrade - checked that able to perform a small runtime upgrade when running rococo-local with a collator after minimizing the runtime size to less than the Rococo maxCodeSize of 3.1 MB without the transaction exhausting the block limits. Kusama will need to be used for incremental runtime upgrades to restore the pallets that were temporarily removed since it has a maxCodeSize of 10 MB. See comments here
        • Metadata - checked that no errors in polkadot.js using custom_types.json
    • Check that 'block delay' issue is fixed since we are now using Aura instead of Babe. block time varies between 18-30 seconds for a block time of 12 seconds https://github.com/DataHighway-DHX/open-polkadot-js-library/blob/main/block-delay/backup/data-datahighway-rococo-local-aura/datahighway-rococo-local-testnet-2022-03-15-11:17-744000000.csv
    • Added scripts to codebase to simplify dumping chain specs, state and wasm for all relevant chains (use these ones https://github.com/integritee-network/parachain/blob/master/scripts/dump_wasm_and_state_for_all_chains.sh)
    • Fixed treasury-dao and mining-lodgements-hardware that are missing Cargo.toml files
    • Added benchmarking
    • Skipped running benchmarking. See reasons in conversation https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17
    • Added try-runtime and essential hooks
    • Skipped running try-runtime to check amount of accounts remains the same after an on-chain upgrade. See reasons in conversation https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17
    • Checked that unit and integration tests still pass
    • Skipped Memory Profiling. See reasons in conversation https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/17
    • Minimize Runtime Size by checking critical parachain constraints and temporarily removing some pallets that will be restored again later on Kusama as incremental runtime upgrades https://docs.substrate.io/how-to-guides/v3/parachains/pre-launch/#3-minimize-your-runtime-size

    The following is the output of checking the configuration of Rococo relay chain

    maxCodeSize: 3,145,728 maxHeadDataSize: 32,768 maxPovSize: 5,242,880

    The runtime upgrade check where I just changed the existential deposit value generated a .compact.wasm file that was 6MB in size, so it was necessary to reduce it to less than 3.1MB. I have reduced the runtime size to 3.05MB so can perform small runtime upgrades in PR #24. The community has been asked why the Rococo maxCodeSize is smaller than Kusama's here https://substrate.stackexchange.com/questions/784/why-is-the-rococo-maxcodesize-too-small-to-do-adequate-incremental-runtime-upg

    • Generate the chain spec, "raw" chain definition, exported genesis state, exported genesis wasm using scripts in the /scripts folder from the first collator bootnode server. Copy them into a subfolder in the /res folder (i.e. /res/v3.2.0). Also copy the built DataHighway-Parachain/target/release/wbuild/datahighway-parachain-runtime.compact.wasm file into the /res folder, and then push them as a commit to Github. This process should also be performed for runtime upgrades so they are distributed to all collators and bootnodes so they have the latest changes.

    Full Changelog: https://github.com/DataHighway-DHX/DataHighway-Parachain/commits/v3.2.0

    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Mar 10, 2022)

    What's Changed

    • Changed the version of datahighway-collator and datahighway-parachain-runtime packages in their Cargo.lock files to be the same version 3.1.0
    • Fixes treasury DHX DAO Unlocked Reserves SS58 address 4LTFqiD6H6g8a7ur9WH4RxhWx2givWfK7o5EDed3ai1nYTvk in chain_spec.rs so it is the correct amount of 30 million DHX.
    • Old temporary DHX DAO Unlocked Reserves public key a42b7518d62a942344fec55d414f1654bf3fd325dbfa32a3c30534d5976acb21 was also being funded in chain_spec.rs so it has been removed.
    • Add genesis.json file to import hardspoon account balances from the DataHighway Westlake standalone chain into the genesis block of the DataHighway parachain. The values in genesis.json should override any other values in genesis.json. The balance values are based on those obtained from Subscan and stored in the data/ subfolder using the script here
    • Checked that total issuance when run locally is approx. 31.8 million DHX.
    • Sudo account from DataHighway standalone chain with SS58 address 4NN9N4NCLWQWNsb2RRYE7CSPTN1tLa7Ez5eViJ4N1Q5wx9z3 still has the same balance on the DataHighway parachain. A democracy proposal may be created in future to burn the funds.
    • Authorities from the DataHighway standalone chain will not also be authorities on the DataHighway parachain as they have different accounts and keys, but those on the DataHighway standalone chain were effectively run by the DataHighway (funded by MXC) to run validator nodes and to secure the standalone chain. Those accounts were given a head start with ~10 DHX in the initial DataHighway standalone genesis, and their remaining account balances will be transferred to the DataHighway parachain since they contributed to early development, noting that their account balances may have changed due to validator rewards. Their remaining old authority account balances were as shown here. Their grandpa, babe, imonline and authority discovery keys did not have an account balance.
    • There were ten (10) validators run by the DataHighway (funded by MXC) who were slashed and so too were their nominators on the DataHighway standalone chain. In era 1089 it affected validators 6-9, and then later occurred again in era 1091 and affected validator 5 and 10. It was caused because the validators were offline for too long and the chain was using Babe instead of Aura. It was necessary to purge the database and resync the chain after adding the --unsafe-pruning --pruning 1000 parameter, but the re-sync about a day and was done one validator at the time. A democracy proposal may be created to credit the slashed funds in future.

    Full Changelog: https://github.com/DataHighway-DHX/DataHighway-Parachain/commits/v3.1.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Feb 8, 2022)

    What's Changed

    • updated Readme by @ayushmishra2005 in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/1
    • Updated rust nightly version by @ayushmishra2005 in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/2
    • Corrected rococo json and command by @ayushmishra2005 in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/3
    • Modify para id by @ayushmishra2005 in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/4
    • fix upgrade to 0.9.16. add para id for rococo. add para block time by @ltfschoen in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/6
    • Upgrade polkadot 0.9.16 by @ltfschoen in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/7

    New Contributors

    • @ayushmishra2005 made their first contribution in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/1
    • @ltfschoen made their first contribution in https://github.com/DataHighway-DHX/DataHighway-Parachain/pull/6

    Full Changelog: https://github.com/DataHighway-DHX/DataHighway-Parachain/commits/v3.0.0

    Source code(tar.gz)
    Source code(zip)
Owner
DataHighway
Inter-Chain Data Market
DataHighway
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
Marvin-Blockchain-Rust: A Rust-based blockchain implementation, part of the Marvin blockchain project.

Marvin Blockchain - Rust Implementation Welcome to the Rust implementation of the Marvin Blockchain. This project is part of a comparative study on bu

João Henrique Machado Silva 3 Sep 6, 2024
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
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

Liam Parry 0 Nov 6, 2021
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
Polkadex - An Orderbook-based Decentralized Exchange using the Substrate Blockchain Framework.

What is Polkadex? ?? Polkadex is a Open Source, Decentralized Exchange Platform made using Substrate Blockchain Framework that provides traders with t

Polkadex 243 Dec 16, 2022
Selendra is a multichains interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications.

Selendra An interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications. Read

Selendra 16 Nov 29, 2022
A Substrate-based PoA node supporting dynamic addition/removal of authorities.

Substrate PoA A sample Substrate runtime for a PoA blockchain that allows: Dynamically add/remove authorities. Automatically remove authorities when t

Gautam Dhameja 10 Jun 16, 2022
A fresh FRAME-based Substrate node, ready for hacking

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

Web 3 | Mobile | Blockchain Full Stack Engineer 6 Jun 23, 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 Ethereum compatible Substrate blockchain for bounties and governance for the Devcash community.

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

null 4 Mar 30, 2022
Substrate: The platform for blockchain innovators

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

Viktor Karazhov 1 Jan 8, 2022
A privacy-preserving blockchain on Substrate

Zerochain Zerochain is a generic privacy-protecting layer on top of Substrate. It provides some useful substrate modules and toolkit for protecting us

LayerX 256 Dec 26, 2022
Basilisk node - cross-chain liquidity protocol built on Substrate

Basilisk node Local Development Follow these steps to prepare a local Substrate development environment ??️ Simple Setup Install all the required depe

Galactic Council 52 Dec 27, 2022
Substrate Node for Anmol Network

Anmol Substrate Node ?? ??️ ?? Anmol is the First Cross-Chain NFT Toolkit, on Polkadot. Introducing: Moulds NFT Breeding Multi-Chain NFT Migration ink

Anmol Network 12 Aug 28, 2022
Minimal Substrate node configured for smart contracts via pallet-contracts.

substrate-contracts-node This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract modu

Parity Technologies 73 Dec 30, 2022
Substrate Node Template Generator

Substrate Node Template Generator A tool to generate stand-alone node templates of a customized Substrate clients used in "Substrate Library Extension

Parity Technologies 2 Feb 11, 2022
Subsocial full node with Substrate/Polkadot pallets for decentralized communities: blogs, posts, comments, likes, reputation.

Subsocial Node by DappForce Subsocial is a set of Substrate pallets with web UI that allows anyone to launch their own decentralized censorship-resist

DappForce 74 Nov 24, 2022