Substrate: The platform for blockchain innovators

Overview

Substrate · GitHub license GitLab Status PRs Welcome

Substrate is a next-generation framework for blockchain innovation 🚀 .

Trying it out

Simply go to substrate.dev and follow the installation instructions. You can also try out one of the tutorials.

Contributions & Code of Conduct

Please follow the contributions guidelines as outlined in docs/CONTRIBUTING.adoc. In all communications and contributions, this project follows the Contributor Covenant Code of Conduct.

Security

The security policy and procedures can be found in docs/SECURITY.md.

License

The reason for the split-licensing is to ensure that for the vast majority of teams using Substrate to create feature-chains, then all changes can be made entirely in Apache2-licensed code, allowing teams full freedom over what and how they release and giving licensing clarity to commercial teams.

In the interests of the community, we require any deeper improvements made to Substrate's core logic (e.g. Substrate's internal consensus, crypto or database code) to be contributed back so everyone can benefit.

Issues
  • update README.adoc

    update README.adoc

    Fixes for better understanding and reading to developers. Added exact outputs and specific word names.

    Thank you for your Pull Request!

    Before you submitting, please check that:

    • [x] You added a brief description of the PR, e.g.:
      • What does it do?
      • What important points reviewers should know?
      • Is there something left for follow-up PRs?
    • [ ] You labeled the PR appropriately if you have permissions to do so:
      • [ ] A* for PR status (one required)
      • [ ] B* for changelog (one required)
      • [ ] C* for release notes (exactly one required)
      • [ ] D* for various implications/requirements
      • [ ] Github's project assignment
    • [ ] You mentioned a related issue if this PR related to it, e.g. Fixes #228 or Related #1337.
    • [ ] You asked any particular reviewers to review. If you aren't sure, start with GH suggestions.
    • [ ] Your PR adheres to the style guide
      • In particular, mind the maximal line length of 100 (120 in exceptional circumstances).
      • There is no commented code checked in unless necessary.
      • Any panickers have a proof or removed.
    • [ ] You bumped the runtime version if there are breaking changes in the runtime.
    • [ ] You updated any rustdocs which may have changed
    • [ ] Has the PR altered the external API or interfaces used by Polkadot? Do you have the corresponding Polkadot PR ready?

    Refer to the contributing guide for details.

    After you've read this notice feel free to remove it. Thank you!

    ✄ -----------------------------------------------------------------------------

    A2-insubstantial B0-silent C1-low 📌 
    opened by 6636345e 624
  • Benchmarking also benchmark for decoding the call

    Benchmarking also benchmark for decoding the call

    in the benchmarking macro, when user use the syntax: bench_name { $code }: $dispatch_name($origin, $args) verify { $code }, the benchmark only dispatch the call. This PR changes it, instead the benchmark decode the call and dispatch it.

    Breaking change

    Some benchmark code won't compile complaining about partially moved variables. It should be generally easily fixable using clone.

    A0-pleasereview B3-apinoteworthy C1-low 📌 D5-nicetohaveaudit ⚠️ 
    opened by thiolliere 100
  • Reweigh Staking

    Reweigh Staking

    This PR does a sanity check of the weights in the Staking pallet.

    A8-mergeoncegreen B0-silent C1-low 📌 
    opened by shawntabrizi 71
  • Implement `pallet-bags-list` and its interfaces with `pallet-staking`

    Implement `pallet-bags-list` and its interfaces with `pallet-staking`

    closes https://github.com/paritytech/substrate/issues/9440

    polkadot companion https://github.com/paritytech/polkadot/pull/3413

    Notes for reviewers

    Below is a table describing how an extrinsic would affect an account (relative to SortedListProvider and CounterForNominators) given its role in staking:

    | extrinsic | Chilled | Nominator | Validator | |:------------------:|:----------------------:|:----------------------:|------------------------| | chill, chill_other | nothing, nothing | on_remove, dec counter | nothing, nothing | | nominate | on_insert, inc counter | nothing, nothing | on_insert, inc counter | | validate | nothing, nothing | on_remove, dec counter | nothing, nothing | | bond_extra | nothing, nothing | on_update, nothing | nothing, nothing | | rebond | nothing, nothing | on_update, nothing | nothing, nothing | | unbond | nothing, nothing | on_update, nothing | nothing, nothing |

    TODO:

    • [x] update benchmarks of extrinsics that call do_rebag to force a rebag (relates to some work done in https://github.com/paritytech/substrate/pull/9529)
    • [x] Check the benchmark values for snapshot creation. There are some tests that tell us how many snapshot items we can take in a 2 second block. https://github.com/paritytech/substrate/pull/9507#issuecomment-899466440
    • [x] Write a remote-externalities-based test that checks the state of polkadot and substrate, and populates the list. Same as testing the migration basically: Done in companion.
    • [x] Test migration

    • [ ] (seperate_pr) Make all staking tests work with and without bags-list. For now we use bags-list only, and we do this in a follow up, to prevent a single super big PR.
    • [x] rename and fix docs, avoid using voter in bags-list, it should be id and vote-weight. Ideally we could also use something like priority instead of vote-weight.
    • [ ] (maybe+separate PR) Write a fuzzer/quick test that just bombards the SortedListProvider with random data and calls, and the internal state of the pallet should always remain correct. (https://github.com/paritytech/substrate/pull/9851)
    • [ ] (seperate pr) weight refunds for when the operation does not affect nominators (and thus not the bags list)
    • [ ] (separate PR) Allow the ability to reorder yourself within a bag.

    original description for #9081 below:

    Problem: there are too many nominators, we can't keep all of them. Solution: truncate the list by stake.

    Problem: an attacker can kick out as many people as they can afford to; those people at the low end would need to re-nominate. Solution: don't actually take them out of the nominator set, but compute the top N members at runtime.

    Problem: computing the top N at runtime is expensive. Solution: create many bags, each of which holds voters within a particular stake range. Each bag is a linked list, so it can be added to and removed from in O(1). We can then iterate over the bags in order and truncate anywhere we desire. Given a realistic distribution of stake, it doesn't matter where we stop; the final bag is the one with the lowest-staked individuals.

    polkadot companion: https://github.com/paritytech/polkadot/pull/3413

    A0-pleasereview B7-runtimenoteworthy E1-runtimemigration C1-low 📌 D1-audited 👍 
    opened by emostov 65
  • [DO NOT MERGE] Test Benchmark Bot

    [DO NOT MERGE] Test Benchmark Bot

    Testing the benchmark bot

    [skip ci]

    opened by shawntabrizi 59
  • Batch signature verification

    Batch signature verification

    polkadot companion: https://github.com/paritytech/polkadot/pull/939

    A0-pleasereview E5-breaksapi 
    opened by NikVolf 55
  • BREAKING Overlay transaction support.

    BREAKING Overlay transaction support.

    BREAKING: this pr adds externalities, and change mutability of existing one, the corresponding

    This PR is a refactor of overlay_change to allow transactional support, it is similar to #2980 goals, but does not stack Ext, it only stacks storage.

    It also switches from a stack of hashmap (previously prospective and top) to a single hashmap (containing history of values) and a transaction global state. Those values with state are managed with 'historied-data' crate (simple vec of data to query in front of a reference global state).

    Under this design access to data is not badly impacted by the number of open transactional layers. I did fuzz this code a bit against a partial simple layered hashmap implementation.

    Usage from a runtime with a function, in a similar way as ext_try from #2980, there is the very simple with_transaction function: internally it uses three host functions ext_start_transaction, ext_commit_transaction and ext_discard_transaction. This does not look as good as the single ext_try but is clearer: memory mgmt seems way simplier (as there is none).

    Note that to call global state action, modification of local values need to be synchronize. eg discard_transaction on states must be follow by apply_discard_transaction for all values related to this state and then follow by ensure_running.

    Technically we only maintain a counter of current number of stacked transaction as a global state (this start at 1 and can be 0 only to update some values: case of discarding content, but will then return to 1 through 'finalize_discard' call). Local state is either committed or the number of stacked transaction when the value was changed, this state is stored with the value history.

    polkadot companion: https://github.com/paritytech/polkadot/pull/999

    A0-pleasereview B3-apinoteworthy E5-breaksapi 
    opened by cheme 55
  • Merge metadata by module

    Merge metadata by module

    This PR is an ongoing work on #840.

    Technically this PR does some joining on metadata depending on module prefix.

    A8-mergeoncegreen E5-breaksapi 
    opened by cheme 54
  • Add missing fields to the light sync state

    Add missing fields to the light sync state

    Part of #6804.

    polkadot companion: https://github.com/paritytech/polkadot/pull/1801

    A0-pleasereview B0-silent C1-low 📌 
    opened by expenses 49
  • Metadata with complete type information

    Metadata with complete type information

    This fixes #917, which is one of the biggest pain point to me when working with Substrate (and polkadot.js), that any type information needs to be implemented twice and incompatible type information simply cause polkadot.js crashes without much helpful clues (other than it is mostly likely a codec error).

    This introduce type_registry to RuntimeMetadata which contains all the type informations i.e. the metadata itself stores the information about how to decode the storage types.

    Ideally, this will remove the needs to manually maintain type information in polkadot.js (currently implemented at https://github.com/polkadot-js/api/tree/master/packages/types/src). Those JS classes can be generated at runtime by parsing the metadata. TS files can be generated ahead-of-time if needed. This will also make implement (and support) other languages SDK much easily.

    Some code copied from parity-codec.

    Fixes #917 Enable the proper fix for https://github.com/polkadot-js/api/issues/416 Could be the foundation work for https://github.com/polkadot-js/api/issues/429

    This is the debug print of the resulting metadata: https://gist.github.com/xlc/19d010e55f84bf6d43afafdc5e5b5df6#file-metadata-L5525

    A4-gotissues A3-inprogress A3-stale E5-breaksapi 
    opened by xlc 49
  • Tips Benchmarking to be Runtime Agnostic

    Tips Benchmarking to be Runtime Agnostic

    Use the generic config traits in benchmarking instead of hard-coded constants so any runtime configuration can benchmark pallet_tips and pallet bounties

    opened by ferrell-code 0
  • chore: add example for balance AccountStore

    chore: add example for balance AccountStore

    Added an example for balance AccountStore #6532.

    opened by ECJ222 0
  • Make the genesis block building more flexible

    Make the genesis block building more flexible

    The background is that we want to inject a DigestItem into the header of the genesis block, I thought calling frame_system::deposit_log() in genesis build should work, but it's not because right now only the genesis storage/state is taken care of and the genesis Digest is hardcoded as the default value.

    https://github.com/paritytech/substrate/blob/1d8f7bf6de1f447b706a121c83e759da807d3a01/client/service/src/client/genesis.rs#L34

    Since we already have built the genesis storage, we could extract the Digest value from the state and extend construct_genesis_block(state_root, digest) using it, so that people can use frame_system::deposit_log() during the genesis build as normal.

    https://github.com/paritytech/substrate/blob/1d8f7bf6de1f447b706a121c83e759da807d3a01/client/service/src/client/client.rs#L335-L339

    By adding this feature, people can have full control of building the genesis block.

    opened by liuchengxu 9
  • Runtime Upgrade (Big PoV) leading to collator peer reputation dropping (network stalled)

    Runtime Upgrade (Big PoV) leading to collator peer reputation dropping (network stalled)

    Conditions

    • Internal permanent network (4 validators, 4 collators)
    • Relay runtime 9122 (kusama-local) client 0.12.1
    • Parachain runtime Moonbase 902 (substrate v0.9.11) migrating to 1000 (substrate v0.9.12)

    Event

    • Parachain runtime upgraded from 902 to 1000
    • Parachain stalled at the block applying the upgrade

    Logs

    https://drive.google.com/file/d/1tNixS4n4_HHiaGz5bMURWM5-wGyGFmWb/view?usp=sharing

    Observations

    PoV for the block applying the runtime upgrade is 3000kb:

    PoV size { header: 0.244140625kb, extrinsics: 2.8232421875kb, storage_proof: 3100.509765625kb }
    

    Validators are reporting the collators:

    validator2 2021-11-24 00:56:49.379 DEBUG tokio-runtime-worker parachain::collator-protocol: Fetching collation failed due to network error hash=0x91139d3d4a8c5c31febfb614a2a509681204535403fe0a769e5d0837095dd2fe para_id=Id(1000) peer_id=PeerId("12D3KooWEokXpahv1QL2aJceYDnfjR6d2B4bTpc1xnY2wP7cgkiS") err=Network(Timeout)
    validator2 2021-11-24 00:56:49.379 DEBUG tokio-runtime-worker parachain::network-bridge: peer=PeerId("12D3KooWEokXpahv1QL2aJceYDnfjR6d2B4bTpc1xnY2wP7cgkiS") rep=CostMinor("Some network error") action="ReportPeer"
    

    image

    Conclusion

    When the PoV is too big and can't be fetch in time by the validators, those are reducing the reputation of the collator and preventing it from sending any further block, stalling the network

    opened by crystalin 9
  • Update wording of IterableStorageMap docs

    Update wording of IterableStorageMap docs

    /// Enumerate all elements in the map in lexicographical order of the encoded key. If you /// alter the map while doing this, you'll get undefined results.

    The undefined results wording is very uncomfortable to me as someone with C++ background. There are no undefined behaviour here. There maybe unexpected result depends on the how the map is altered. Deleting item is perfectly fine, update value is also ok. Only add item means it may or may not be iterated later depends on the hash value of the key. Can we update the docs to make it more clear?

    https://github.com/paritytech/substrate/blob/ee8ac3a6c9c9292911afbf5ec16fbb2bb0d44b27/frame/support/src/storage/mod.rs#L326-L351

    opened by xlc 2
  • CI to check each individual pallet compiles with supported feature configurations.

    CI to check each individual pallet compiles with supported feature configurations.

    There are many pallets (in Substrate & Polkadot) that doesn't compile by itself due to mis configured features. The runtime compiles fine thanks for feature pollution, but it can cause trouble when working with those pallet directly.

    Some related fixes that can be detected by CI: https://github.com/paritytech/substrate/pull/6995 https://github.com/paritytech/substrate/pull/5833 https://github.com/paritytech/substrate/pull/10324 https://github.com/paritytech/polkadot/pull/4355

    opened by xlc 0
  • Schedule tasks by their Call hash

    Schedule tasks by their Call hash

    Subsumes #10153

    TODO:

    • [ ] Test new functionality in pallet_scheduler
    • [ ] Update weights for new functionality in pallet_scheduler
    • [x] Weights for pallet_preimage
    A3-inprogress B7-runtimenoteworthy C1-low 📌 D9-needsaudit 👮 
    opened by gavofyork 0
  • The 'import block' command shows a large gap between the optimal block and the final block

    The 'import block' command shows a large gap between the optimal block and the final block

    ./substrate export-blocks --chain main --to 318450 shuju --base-path db1/ --pruning=archive
    
    ./substarte import-blocks --chain main shuju --base-path db-cp --pruning=archive
    

    when i run my local node with ./substratre --chain main --base-path db-cp --pruning=archive, and there are my log:

     〽️ Prometheus server started at 127.0.0.1:9615    
    Nov 24 01:26:22.339  INFO Listening for new connections on 127.0.0.1:9944.    
    Nov 24 01:26:27.184  INFO Accepted a new tcp connection from 127.0.0.1:51642.    
    Nov 24 01:26:27.340  INFO 💤 Idle (0 peers), best: #318450 (0x4fc6…b8d8), finalized #317952 (0x162d…eb7d), ⬇ 0.3kiB/s ⬆ 0.2kiB/s    
    Nov 24 01:26:32.340  INFO 💤 Idle (0 peers), best: #318450 (0x4fc6…b8d8), finalized #317952 (0x162d…eb7d), ⬇ 0.2kiB/s ⬆ 0.2kiB/s    
    Nov 24 01:26:37.340  INFO 💤 Idle (0 peers), best: #318450 (0x4fc6…b8d8), finalized #317952 (0x162d…eb7d), ⬇ 0 ⬆ 0    
    Nov 24 01:26:42.340  INFO 💤 Idle (0 peers), best: #318450 (0x4fc6…b8d8), finalized #317952 (0x162d…eb7d), ⬇ 0.2kiB/s ⬆ 0.3kiB/s  
    
    Z0-unconfirmed 
    opened by Irish-bee 1
  • Enable signature verification in background task

    Enable signature verification in background task

    Bring back signature batch verification but with the new name background verification.

    Indeed, batch verification - in the cryptographic sense - is a different feature, and only exists for certain types of signatures.

    Batch verification is currently only implemented for signatures of type sr25519. For the other types of signatures (ed25519 and ecdsa), each signature is verified alone but in a background task.

    Some questions about the design:

    1. How to expose this functionality to the user? For the moment I have chosen a compilation feature at the frame-executive level because it is the simplest.
    2. Should we disable batch verification for sr25519 signatures, in order to separate this in a different future functionality?
    3. Should we replace all the batch occurrences by background ?

    Closes #6618

    opened by librelois 0
  • add the events

    add the events

    Closes https://github.com/paritytech/substrate/issues/10283

    This PR adds two new events to pallet democracy: Seconded for when a user seconds a proposal. And Voted for when a user votes on a referendum.

    Question about the Polkadot Companion: This only adds the events to the pallet. It does not require any code changes in Polkadot. Shall I still open a Polkadot PR that updates its cargo.lock file? If so shall I wait until this is merged so I know what sha to point to?

    cc @thiolliere

    A0-pleasereview B0-silent C1-low 📌 D3-trivial 🧸 
    opened by JoshOrndorff 0
Releases(monthly-2021-11)
  • monthly-2021-11(Nov 1, 2021)

    Automatic snapshot pre-release monthly-2021-11

    Changes since last snapshot (monthly-2021-10)

    Substrate changes

    Runtime

    • Add Baseline FRAME Benchmarks (#9691)
    • contracts: Fix account counter isn't persisted (#10112)
    • More lenient mechanism for identifying stash accounts in purge_keys (#10004)
    • Root origin always bypass all filter, other origin cannot bypass BaseCallFilter even when constructed from Root origin (#9948)
    • Rework Transaction Priority calculation (#9834)

    Client

    • Removal of light client from substrate (#9684)
    • Don't print "Discovered new external" line for private IPs (#10055)
    • make the ws buffer size configurable (#10013)
    • sc-executor-wasmtime: upgrade wasmtime to 0.30.0 (#10003)
    • Disable log reloading by default (#9966)
    • --dev implies --tmp (#9938)
    • Introduce block authorship soft deadline (#9663)
    • Quickly skip invalid transactions during block authorship. (#9789)

    API

    • fix query details (#10107)
    • Switch to using ss58-registry crate (#9755)
    • pow: add Version for quick-check of metadata state and refactor lock handling (#9698)
    • Add Deposit and Withdraw Events to Balances Pallet (#9425)
    • Support extra constant renaming (#9814)
    • Root origin always bypass all filter, other origin cannot bypass BaseCallFilter even when constructed from Root origin (#9948)
    • Add low level traits to retrieve name, symbol, decimals and allowance in pallet-assets (#9757)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-10(Oct 1, 2021)

    Automatic snapshot pre-release monthly-2021-10

    Changes since last snapshot (monthly-2021-09)

    Substrate changes

    Runtime

    • Fungibles and Non-Fungibles Create and Destroy Traits + Assets and Uniques Implementation (#9844)
    • Implement a CountedStorageMap (#9125)
    • Emit log on Runtime Code change. (#9580)
    • Migrate pallet-tips to the new pallet attribute macro (#9711)
    • Use the precise number of approvals when constructing RawOrgin::Members (#9647)
    • Implemented seal_ecdsa_recovery function in the contract pallet (#9686)
    • contracts: Remove state rent (#9669)
    • Add VoteLocking config (#9641)

    Client

    • follow-chain testing mode for try-runtime (and revamp CLI configs). (#9788)
    • Emit log on Runtime Code change. (#9580)
    • Add childstate_getStorageEntries RPC (#9459)
    • Use tokio runtime handle instead of TaskExecutor abstraction (#9737)
    • Store the database in a role specific subdirectory (#9645)
    • Fixed block response limit check (#9692)

    API

    • Extend PalletInfoAccess with module_name and crate_version method (#9690)
    • Migrate pallet-session to the new pallet macro (#9796)
    • pallet macro: allow to declare individual unbounded storage for those who cannot go into PoV (#9670)
    • Society Pallet to FrameV2 (#9472)
    • Bounties Pallet to FrameV2 (#9566)
    • Generate storage info for pallet im_online (#9654)
    • Enrich metadata with type information (#8615)
    • Emit log on Runtime Code change. (#9580)
    • Migrate pallet-collective to the new pallet attribute macro (#9115)
    • Migrate pallet-tips to the new pallet attribute macro (#9711)
    • add query types to generate_storage_alias (#9659)
    • Migrate pallet-membership to the new pallet attribute macro (#9080)
    • sp-utils => sc-utils (#9677)
    • Add VoteLocking config (#9641)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-09(Sep 1, 2021)

    Automatic snapshot pre-release monthly-2021-09

    Changes since last snapshot (monthly-2021-08)

    Substrate changes

    Runtime

    • Generate storage info for pallet authority_discovery (#9428)
    • Make System Events Private from the Runtime (#9619)
    • pallet-vesting: Support multiple, merge-able vesting schedules (#9202)
    • Custom Benchmark Errors and Override (#9517)
    • Stabilize seal_debug_message (#9550)
    • Improve call, and usage in pallet utility (#9418)
    • Refactor Benchmarks for Less Wasm Memory Usage (#9373)

    Client

    • Fix state_subscribeRuntimeVersion for parachains (#9617)
    • Integrate Wasmer into Substrate sandbox environment (#5920)
    • Make choosing an executor (native/wasm) an explicit part of service construction (#9525)
    • Simplify NativeExecutionDispatch and remove the native_executor_instance! macro (#9562)
    • Limit the maximum number of wasm memory pages a runtime can have (#9308)

    API

    • Add methods param for RPC state_traceBlock (#9642)
    • Remove dependency on sandboxing host functions (#9592)
    • Better RPC prometheus metrics. (#9358)
    • Integrate Wasmer into Substrate sandbox environment (#5920)
    • DatabaseSource::Auto (#9500)
    • Remove Filter and use Contains instead (#9514)
    • Improve call, and usage in pallet utility (#9418)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-08(Aug 1, 2021)

    Automatic snapshot pre-release monthly-2021-08

    Changes since last snapshot (monthly-2021-07)

    Substrate changes

    Runtime

    • Add some important events to batch & staking to ensure ease of analysis (#9462)
    • Move PalletVersion away from the crate version (#9165)
    • check can_dec_provider when transfer allow death (#9411)
    • include dispatch result in the Executed event (#9315)
    • pallet-collective: Do not vote aye with propose (#9323)
    • contracts: Allow contracts to dispatch calls into the runtime (#9276)
    • Include StorageInfo in Benchmarking Pipeline (#9090)

    Client

    • Move client consensus parts out of primitives and into client/consensus/api (#9319)
    • Do not call initialize_block before any runtime api (#8953)

    API

    • Add methods to PrefixIterator to support iterating from a specific key (#9313)
    • Benchmarking also benchmark for decoding the call (#9343)
    • Emit error when Config part is imported but without the std feature (#9225)
    • Migrate pallet-mmr to the new pallet attribute macro (#9181)
    • pallet-collective: Do not vote aye with propose (#9323)
    • Migrate pallet-treasury to the new pallet attribute macro (#9197)
    • Remove impl_outer_ macros (#9307)
    • Implement InspectEnumerable for Uniques (#9117)
    • Implement iter_keys function for all types of storage maps (#9238)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-07(Jul 1, 2021)

    Automatic snapshot pre-release monthly-2021-07

    Changes since last snapshot (monthly-2021-06)

    Substrate changes

    Runtime

    • Improve Staking Limits (#9193)
    • Decouple Staking and Election - Part 3: Signed Phase (#7910)
    • contracts: Remove weight pre charging (#8976)
    • Result<Option<>> rather than Option<Option<>> (#9119)
    • Add Control to Growth of the Staking Pallet (#8920)
    • Frame remove_all with size limit. (#9106)
    • staking/election: prolonged era and emergency mode for governance submission. (#8912)
    • Enforce pub calls in pallets (#9085)
    • Migrate pallet-staking to pallet attribute macro (#9083)
    • contracts: Add new seal_call that offers new features (#8909)
    • update ss58 type to u16 (#8955)
    • Named reserve (#7778)
    • Add Call Filter That Prevents Nested batch_all (#9009)
    • Uniques: An economically-secure basic-featured NFT pallet (#8813)

    Client

    • Move client only primitives to another dir (#9220)
    • Remove txpool as an export of sc_transaction_pool, exporting the used components instead. (#9217)
    • Fast sync (#8884)
    • double the allocator limit (#9102)
    • Make it possible to override maximum payload of RPC (#9019)
    • Decommit instance memory after a runtime call on Linux (#8998)
    • rpc-http-threads cli arg (#8890)
    • Transaction pool: Ensure that we prune transactions properly (#8963)
    • Update wasmtime to 0.27 (#8913)

    API

    • Emit error when construct_runtime imports a non-existent pallet part (#8949)
    • Allow renaming storage item prefixes (#9016)
    • Enforce pub calls in pallets (#9085)
    • Stop sending network_state to telemetry (#9026)
    • Use pallet names to name enum variants (#8990)
    • Delete legacy runtime metadata macros (#9043)
    • Storage chain: Runtime module (#8624)
    • Allow usage of path in construct_runtime! (#8801)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-06(Jun 1, 2021)

    Automatic snapshot pre-release monthly-2021-06

    Changes since last snapshot (monthly-2021-05)

    Substrate changes

    Runtime

    • Make Schedule fields public to allow for customization (#8924)
    • Simple MaxBoundedLen Implementations (#8793)
    • contracts: Add seal_rent_status (#8780)
    • Fix transaction payment fee/tip unbalanceds (#8860)
    • Ensure election offchain workers don't overlap (#8828)
    • Implement StorageNMap (#8635)
    • contracts: Move Schedule from Storage to Config (#8773)
    • Migrate pallet-offences to pallet attribute macro (#8763)
    • Embed runtime version as a custom section (#8688)
    • Migrate pallet-recovery to pallet attribute macro (#8761)
    • Add arithmetic dispatch errors. (#8726)
    • primitives: remove random_seed from BlockBuilder API (#8718)
    • make custom on runtime upgrade prior to pallet ones (#8687)

    Client

    • Introduce code_substitute (#8898)
    • Make wasmtime the default when the feature is enabled (#8855)
    • Embed runtime version as a custom section (#8688)
    • RPC to trace execution of specified block (#7780)
    • Change to use the same subcommand syntax as subkey (#8678)
    • Add a JSON-RPC layer for reserved nodes (#8704)

    API

    • Refactor code a little bit (#8932)
    • Migrate pallet-scored-pool to pallet attribute macro (#8825)
    • Migrate pallet-grandpa to attribute macros (#8724)
    • Introduce WeakBoundedVec, StorageTryAppend, and improve BoundedVec API (#8842)
    • Pallet-Multisig to framev2 (#8741)
    • Make hooks and call attributes optional in pallet macro (#8853)
    • Fix transaction payment fee/tip unbalanceds (#8860)
    • Migrate pallet-scheduler to pallet attribute macro (#8769)
    • Allow to specify some max number of values for storages in pallet macro. (#8735)
    • Use StorageNMap for Approvals in assets pallet (#8816)
    • Migrate pallet-nicks to pallet attribute macro. (#8723)
    • Migrate pallet-im-online to pallet attribute macro. (#8714)
    • Update Identity pallet to Frame V2 (#8697)
    • Rework inherent data client side (#8526)
    • make custom on runtime upgrade prior to pallet ones (#8687)
    • Upgrade authorship pallet to Frame-v2 (#8663)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-05(May 1, 2021)

    Automatic snapshot pre-release monthly-2021-05

    Changes since last snapshot (monthly-2021-04)

    Substrate changes

    Runtime

    • Ensure inherent are first (#8173)
    • Add PoV Tracking to Benchmarking Pipeline (#8559)
    • Support code blobs compressed with zstd (#8549)

    Client

    • subkey: display SS58 encoding of public key (#8674)
    • Authority-discovery no longer publishes non-global IP addresses (#8643)
    • Enable --no-private-ipv4 by default for live chains (#8642)
    • Make non-validators listen on /ws by default (#8609)
    • contracts: Add RPC that allows instantiating of a contract (#8451)
    • Add PoV Tracking to Benchmarking Pipeline (#8559)
    • Support code blobs compressed with zstd (#8549)

    API

    • migrate pallet-elections-phragmen to attribute macros (#8044)
    • Make pallet macro generate accessor to PalletInfo information on pallet placeholder (#8630)
    • expose set_timestamp for runtime benchmarks (#8601)
    • Ensure inherent are first (#8173)
    Source code(tar.gz)
    Source code(zip)
  • monthly-2021-04(Apr 7, 2021)

    Automatic snapshot pre-release monthly-2021-04

    Changes since last snapshot (monthly-2021-03)

    Substrate changes

    Runtime

    • Add an INDEX to the Instance trait (#8555)
    • Fix account ref-counting in session (#8538)
    • Introduce OnSetCode type into system config trait. (#8496)
    • Implement fungible::* for Balances (#8454)
    • [pallet-staking] Refund unused weight for payout_stakers (#8458)
    • Make the number of nominations configurable (#8368)
    • Add tracing logic in pallet macro for hooks and dispatchables (#8305)
    • contracts: Update deduct block when a contract is excempted (#8418)
    • Decouple Staking and Election - Part 2.1: Unleash Multi Phase (#8113)
    • staking: Flexible generation of reward curve and associated tweaks (#8327)
    • contracts: Expose rent parameter to contracts (#8231)
    • pallet-staking: add RewardDestination::None for explictly not receiving rewards (#8168)
    • Return babe configuration information in the babe api epoch functions (#8072)
    • Assets: Remove zombies, introduce approvals (#8220)
    • Self-sufficient account ref-counting (#8221)
    • Init RuntimeLogger automatically for each runtime api call (#8128)

    Client

    • Storing multiple Justifications per block (#7640)
    • Remove legacy network protocol (#8296)
    • Rework telemetry to replace the use of tracing with an object we pass around (#8143)
    • Decrease the peer reputation on invalid block requests (#8260)

    API

    • Migrate pallet-indices to pallet! (#8465)
    • Migrate pallet-sudo to pallet! (#8448)
    • Upgrade pallet atomic swap (#8452)
    • Migrate pallet-utility to pallet attribute macro. (#8326)
    • contracts: Reduce the API surface (#8359)
    • Add tracing logic in pallet macro for hooks and dispatchables (#8305)
    • Use the log crate to output contract generated messages. (#8403)
    • Replace 'Module' with 'Pallet' in construct_runtime macro (#8372)
    • Migrate pallet-babe to pallet attribute macro. (#8310)
    • Migrate node authorization pallet to FRAME v2 (#8337)
    • Migrate pallet-proxy to pallet attribute macro (#8365)
    • im-online: use EstimateNextSessionRotation to get better estimates of session progress (#8242)
    • Add on_idle hook (#8209)
    • more clear randomness API for BABE (#8180)
    • Custom RPC for Merkle Mountain Range pallet (#8137)
    • pallet_macro: Generate default documentation for well known types (#8276)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Feb 10, 2021)

    Changelog for Substrate 3.0.0/0.9.0 - Apollo 14

    Most notably, this is the first release of the new FRAME (2.0) with its new macro-syntax and some changes in types, and pallet versioning. This release also incorporates the faster and improved version 2.0 of the parity-scale-codec and upgraded dependencies all-around. While the FinalityTracker pallet has been dropped, this release marks the first public appearance of a few new pallets, too: Bounties, Lottery, Tips (extracted from the Treasury-pallet, see #7536) and Merkle-Mountain-Ranges (MMR).

    On the client side, the most notable changes are around the keystore, making it async and switching to a different signing model allowing for remote-signing to be implemented. Various changes to improve networking and light-client support, like adding the Grandpa warp sync request-response protocol (#7711) are also included.

    Contracts: Please note that the contracts pallet is not part of this release. The pallet is not yet ready and will be released separately in the coming weeks. The currently released contracts pallet is not compatible with the new FRAME, thus if you need the contracts pallet, we recommend you wait with the upgrade until it has been released, too.

    Upgrade instructions

    Not too much has changed on the top and API level for developing Substrate betweeen 2.0 and 3.0. The easiest and quickest path for upgrading is to just take the latest node-template and try applying your changes to it:

    1. take a diff between 2.0 and your changes
    2. store that diff
    3. remove everything, copy over the 3.0 node-template
    4. try re-applying your diff, manually, a hunk at a time.

    If that doesn't work for you, we are working on an in-depth-guide for all major changes that took place and how you need to adapt your code for it. You can find the upgrade guide under docs/ in the repo, if you have further questions or problems, please feel free to ask in the github discussion board.

    Runtime

    • Fix elections-phragmen and proxy issue (#7040)
    • Allow validators to block and kick their nominator set. (#7930)
    • Decouple Staking and Election - Part1: Support traits (#7908)
    • Introduces account existence providers reference counting (#7363)
    • Use checked math when calculating storage size (#7885)
    • Fix clear prefix check to avoid erasing child trie roots. (#7848)
    • babe: expose next epoch data (#7829)
    • fix : remove _{ } syntax from benchmark macro (#7822)
    • Define ss58 prefix inside the runtime (#7810)
    • Allow council to slash treasury tip (#7753)
    • Don't allow self proxies (#7803)
    • add a current_epoch to BabeApi (#7789)
    • Add pallet attribute macro to declare pallets (#6877)
    • Make it possible to calculate the storage root as often as you want (#7714)
    • Issue 7143 | Refactor Treasury Pallet into Bounties, Tips, and Proposals (#7536)
    • Participating in Council Governance is Free for First Time Voters and Successful Closing (#7661)
    • Streamline frame_system weight parametrization (#6629)
    • Features needed for reserve-backed stablecoins (#7152)
    • sudo_as should return a result (#7620)
    • More Extensible Multiaddress Format (#7380)
    • Fix on_runtime_upgrade weight recording (#7480)
    • Implement batch_all and update Utility pallet for weight refunds (#7188)
    • Fix wrong outgoing calculation in election (#7384)
    • Implements pallet versioning (#7208)
    • Runtime worker threads (#7089)
    • Allow schedule_after(0, ...) to work (#7284)
    • Fix offchain election to respect the weight (#7215)
    • Fix weight for inner call with new origin (#7196)
    • Move proxies migration (#7205)
    • Introduce cancel_proposal to rid us of those pesky proposals (#7111)

    Client

    • Remove backwards-compatibility networking hack (#8068)
    • Extend SS58 network identifiers (#8039)
    • Update dependencies ahead of next release (#8015)
    • Storage chains: serve transactions over IPFS/bitswap (#7963)
    • Add a send_request function to NetworkService (#8008)
    • Rename system_networkState to system_unstable_networkState (#8001)
    • Allow transaction for offchain indexing (#7290)
    • Grandpa warp sync request-response protocol (#7711)
    • Add explicit limits to notifications sizes and adjust yamux buffer size (#7925)
    • Rework priority groups, take 2 (#7700)
    • Define ss58 prefix inside the runtime (#7810)
    • Expand remote keystore interface to allow for hybrid mode (#7628)
    • Allow capping the amount of work performed when deleting a child trie (#7671)
    • RPC to allow setting the log filter (#7474)
    • Remove sc_network::NetworkService::register_notifications_protocol and partially refactor Grandpa tests (#7646)
    • minor fix and improvements on localkeystore (#7626)
    • contracts: Add salt argument to contract instantiation (#7482)
    • contracts: Rework contracts_call RPC (#7468)
    • Make sure to use the optimized method instead of reading the storage. (#7445)
    • WASM Local-blob override (#7317)
    • client/network: Allow configuring Kademlia's disjoint query paths (#7356)
    • client/network: Remove option to disable yamux flow control (#7358)
    • Make queryStorage and storagePairs unsafe RPC functions (#7342)
    • No longer actively open legacy substreams (#7076)
    • Make run_node_until_exit take a future (#7318)
    • Add an system_syncState RPC method (#7315)
    • Async keystore + Authority-Discovery async/await (#7000)
    • Fixes logging of target names with dashes (#7281)
    • Refactor CurrencyToVote (#6896)
    • client/network: Stop sending noise legacy handshake (#7211)

    API

    • pallet macro: easier syntax for #[pallet::pallet] with struct Pallet<T>(_) (#8091)
    • WasmExecutor takes a cache directory (#8057)
    • Remove PalletInfo impl for () (#8090)
    • Migrate assets pallet to new macros (#7984)
    • contracts: Make ChainExtension trait generic over the runtime (#8003)
    • Decouple the session validators from im-online (#7127)
    • Update parity-scale-codec to 2.0 (#7994)
    • Merkle Mountain Range pallet improvements (#7891)
    • Cleaner GRANDPA RPC API for proving finality (#7339)
    • Migrate frame-system to pallet attribute macro (#7898)
    • Introduces account existence providers reference counting (#7363)
    • contracts: Lazy storage removal (#7740)
    • contracts: Allow runtime authors to define a chain extension (#7548)
    • Define ss58 prefix inside the runtime (#7810)
    • Add pallet attribute macro to declare pallets (#6877)
    • Add keccak-512 to host functions. (#7531)
    • Merkle Mountain Range pallet (#7312)
    • Allow capping the amount of work performed when deleting a child trie (#7671)
    • add an upgrade_keys method for pallet-session (#7688)
    • Streamline frame_system weight parametrization (#6629)
    • Rename pallet trait Trait to Config (#7599)
    • contracts: Add salt argument to contract instantiation (#7482)
    • pallet-evm: move to Frontier (Part IV) (#7573)
    • refactor subtrait/elevated trait as not needed (#7497)
    • Allow BabeConsensusDataProvider fork existing chain (#7078)
    • decouple transaction payment and currency (#6912)
    • contracts: Refactor the runtime API in order to simplify node integration (#7409)
    • client/authority-discovery: Remove sentry node logic (#7368)
    • client/network: Make NetworkService::set_priority_group async (#7352)
    • *: Bump async-std to v1.6.5 (#7306)
    • babe: make secondary slot randomness available on-chain (#7053)
    • allow where clause in decl_error (#7324)
    • reschedule (#6860)
    • SystemOrigin trait (#7226)
    • permit setting treasury pallet initial funding through genesis (#7214)

    Runtime Migrations

    • Migrate pallet-balances to pallet attribute macro (#7936)
    • Migrate pallet-timestamp to pallet attribute macro (#8078)
    • Migrate assets pallet to new macros (#7984)
    • Fix elections-phragmen and proxy issue (#7040)
    • Allow validators to block and kick their nominator set. (#7930)
    • Migrate frame-system to pallet attribute macro (#7898)
    • Implements pallet versioning (#7208)
    • Move proxies migration (#7205)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Sep 22, 2020)

    Latest Changes (since 2.0.0-rc6)

    Runtime

    • Rename ModuleToIndex to PalletRuntimeSetup (#7148)
    • Bounties (#5715)
    • pallet-collective: allow customized default vote (#6984)
    • add instantiable support for treasury pallet (#7058)
    • frame/authority-discovery: Have authorities() return both current and next (#6788)
    • add generated weight info for pallet-collective (#6789)
    • Support Staking Payout to Any Account (#6832)
    • Time-delay proxies (#6770)
    • Refcounts are now u32 (#7164)

    Client

    • Rename inspect-key to inspect (#7160)
    • Send import notification always for re-orgs (#7118)
    • Allow remotes to not open a legacy substream (#7075)
    • Fix storage::read (#7084)
    • Support hex encoded secret key for --node-key (#7052)
    • Update the service tasks Grafana dashboard (#7038)
    • manual seal is now consensus agnostic (#7010)
    • Move subcommands from sc-cli to nodes (#6948)
    • Implement request-responses protocols (#6634)
    • fix bench db wipe (#6965)
    • Fix benchmark read/write key tracker for keys in child storages. (#6905)
    • *: Update to next libp2p version 0.24.0 (#6891)

    API

    • grandpa-rpc: use FinalityProofProvider to check finality for rpc (#6215)
    • pow: replace the thread-base mining loop with a future-based mining worker (#7060)
    • Tracing for wasm with bridging to native (#6916)
    • Frame-support storage: make iterations and translate consistent (#5470)
    • pow: support uniform tie breaking in fork choice (#7073)
    • Make decoding of compact<perthing> saturating instead of invalid (#7062)
    • Set reserved nodes with offchain worker. (#6996)
    • client/*: Treat protocol name as str and not [u8] (#6967)
    • Add a LightSyncState field to the chain spec (#6894)
    • *: Update to next libp2p version 0.24.0 (#6891)

    Runtime Migrations

    • Time-delay proxies (#6770)
    • Refcounts are now u32 (#7164)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc6(Aug 20, 2020)

    Runtime

    • Custom Codec Implenetation for NPoS Election (#6720)
    • Successful note_imminent_preimage is free (#6793)
    • pallet-democracy use of weightinfo (#6783)
    • Update Balances Pallet to use WeightInfo (#6610)
    • pallet-evm: add builtin support for the four basic Ethereum precompiles (#6743)
    • Allow PostDispatchInfo to disable fees (#6749)
    • pallet-evm: add support for tuple-based precompile declarations (#6681)
    • grandpa: allow noting that the set has stalled (#6725)

    Client

    • Merge Subkey into sc-cli (#4954)
    • RpcHandlers Refactorings (#6846)
    • client/authority-discovery: Introduce AuthorityDiscoveryService (#6760)
    • Implement tracing::Event handling & parent_id for spans and events (#6672)
    • Move to upstream wasmtime, refactor globals snapshot (#6759)
    • Revalidate transactions only on latest best block (#6824)
    • Allow task manager to have children (#6771)
    • client/network: Expose DHT query duration to Prometheus (#6784)
    • client/network: Add peers to DHT only if protocols match (#6549)
    • Name all the tasks! (#6726)
    • Child nodes can be handled by adding a child TaskManager to the parent's TaskManager (#6771)

    API

    • pow: add access to pre-digest for algorithm verifiers (#6900)
    • babe, aura, pow: only call check_inherents if authoring version is compatible (#6862)
    • Implement 'transactional' annotation for runtime functions. (#6763)
    • seal: Change prefix and module name from "ext_" to "seal_" for contract callable functions (#6798)
    • Add Subscription RPC for Grandpa Finality (#5732)
    • seal: Fix and improve error reporting (#6773)
    • Allow blacklisting blocks from being finalized again after block revert (#6301)
    • BABE slot and epoch event notifications (#6563)
    • Add memory-tracker feature to sp-trie to fix wasm panic (#6745)
    Source code(tar.gz)
    Source code(zip)
    node-rpc-client(6.99 MB)
    node-rpc-client.asc(488 bytes)
    node-template(47.62 MB)
    node-template.asc(488 bytes)
    subkey(8.86 MB)
    subkey.asc(488 bytes)
    substrate(60.27 MB)
    substrate.asc(488 bytes)
  • v2.0.0-rc5+2(Jul 24, 2020)

    Changelog

    2.0.0-rc4 -> 2.0.0-rc5

    Runtime

    • Support using system storage directly for EVM balance and nonce (#6659)
    • Properly filter out duplicate voters in elections. (#6693)
    • Treasury burning can be directed (#6671)
    • identity: Don't let subs be re-registered (#6667)
    • Regression test to ensure we don't break deterministic builds in wasm (#6597)
    • allow to specify schedule time as a relative value (#6578)
    • Make signature batching use specialized methods (#6616)
    • Rename CheckEra to CheckMortality (#6619)
    • Add WeightInfo to all pallets with benchmarks. (#6575)
    • Don't require module name in inherents (#6576)
    • pallet-evm: return Ok(()) when EVM execution fails (#6493)
    • Make the encoded-Call Vec explicitly so in metadata (#6566)
    • Allow specify schedule dispatch origin (#6387)
    • pallet-evm: customizable chain id (#6537)
    • Refactor as_sub to make things clearer. (#6503)

    Client

    • Update wasmtime to (almost) lastest master (#6662)
    • Update to latest sysinfo prevents leaking fd-handlers (#6708)
    • Tracing values (#6679)
    • Graceful shutdown for the task manager (#6654)
    • Update substrate-networking Grafana dashboard (#6649)
    • *: Update to libp2p v0.21.1 (#6559)
    • Send Status message on all newly-opened legacy substreams (#6593)
    • babe: report equivocations (#6362)
    • Support synching of blocks that are not new_best (#6508)
    • Remove the service, replacing it with a struct of individual chain components (#6352)
    • Fix tx-pool returning the same transaction multiple times (#6535)

    API

    • Better handling of stable-only build (#6569)
    • Remove the service builder (#6557)
    • seal: Prevent contracts from going below subsistence (#6623)
    • seal: Rework contracts API (#6573)
    • Make evm errors public (#6598)
    • Add log rotation (#6564)
    • decl_module! macro: use 'frame_system' instead of system as default ident (#6500)
    • Restrict Protected to some heap types. (#6471)
    Source code(tar.gz)
    Source code(zip)
    node-rpc-client(6.97 MB)
    node-rpc-client.asc(488 bytes)
    node-template(48.94 MB)
    node-template.asc(488 bytes)
    subkey(11.02 MB)
    subkey.asc(488 bytes)
    substrate(60.89 MB)
    substrate.asc(488 bytes)
  • v2.0.0-rc4(Jun 25, 2020)

    Changelog

    2.0.0-rc3 -> 2.0.0-rc4

    Runtime

    • Staking Payout Creates Controller (#6496)
    • pallet-scheduler: Check that when is not in the past (#6480)
    • Fix sp-api handling of multiple arguments (#6484)
    • Fix issues with Operational transactions validity and prioritization. (#6435)
    • pallet-atomic-swap: generialized swap action (#6421)
    • Avoid multisig reentrancy (#6445)
    • Root origin use no filter by default. Scheduler and Democracy dispatch without asserting BaseCallFilter (#6408)
    • Scale and increase validator count (#6417)
    • Pallet: Atomic Swap (#6349)
    • Restrict remove_proxies (#6383)
    • Stored call in multisig (#6319)
    • Allow Sudo to do anything (#6375)
    • vesting: Force Vested Transfer (#6368)
    • Add events for balance reserve and unreserve functions (#6330)
    • Introduce frozen indices. (#6307)

    Client

    • client/network/service: Add primary dimension to connection metrics (#6472)
    • Fix Babe secondary plain slots claiming (#6451)
    • add network propagated metrics (#6438)
    • client/authority-discovery: Compare PeerIds and not Multihashes (#6414)
    • Update sync chain info on own block import (#6424)
    • Remove --legacy-network-protocol CLI flag (#6411)
    • Runtime interface to add support for tracing from wasm (#6381)
    • Remove penalty on duplicate Status message (#6377)
    • Fix the broken weight multiplier update function (#6334)
    • client/authority-discovery: Don't add own address to priority group (#6370)
    • Split the service initialisation up into seperate functions (#6332)
    • Fix transaction pool event sending (#6341)
    • Add a [prefix]_process_start_time_seconds metric (#6315)
    • new crate sc-light (#6235)
    • Allow adding a prefix to the informant (#6174)

    API

    • seal: Remove ext_dispatch_call and ext_get_runtime_storage (#6464)
    • seal: Refactor ext_gas_price (#6478)
    • Implement nested storage transactions (#6269)
    • Allow empty values in the storage (#6364)
    • add system_dryRun (#6300)
    • Introduce in-origin filtering (#6318)
    • add extend_lock for StorageLock (#6323)
    • Deprecate FunctionOf and remove its users (#6340)
    • transaction-pool: expose blocking api for tx submission (#6325)
    Source code(tar.gz)
    Source code(zip)
    node-rpc-client(6.96 MB)
    node-rpc-client.asc(488 bytes)
    node-template(48.16 MB)
    node-template.asc(488 bytes)
    subkey(10.97 MB)
    subkey.asc(488 bytes)
    substrate(60.20 MB)
    substrate.asc(488 bytes)
  • v2.0.0-rc3(Jun 8, 2020)

    Changelog

    2.0.0-rc1 -> 2.0.0-rc3

    Runtime

    • Introduce stacked filtering (#6273)
    • Allow "anonymous" proxied accounts (#6236)
    • Allow over-weight collective proposals to be closed (#6163)
    • Fix Election when ForceNone V1 (#6166)

    Client

    • Make transaction pool prune transactions only of canonical blocks (#6123)
    • Rename all the election operations (#6245)
    • Sentry nodes and validator nodes also imply reserved (#6251)
    • Fix peerset not filtering incoming connections in reserved-only (#6249)
    • Use Subscription Manager from jsonrpc-pubsub (#6208)
    • Add a Substrate networking Grafana dashboard template (#6171)
    • Add subkey inspect-node-key (#6153)
    Source code(tar.gz)
    Source code(zip)
    subkey(10.69 MB)
    subkey.asc(488 bytes)
    substrate(59.35 MB)
    substrate.asc(488 bytes)
  • v2.0.0-rc1(May 25, 2020)

    Changelog

    2.0.0-alpha.8 -> 2.0.0-rc1

    Runtime

    • Allow operational recovery path if on_initialize use fullblock. (#6089)
    • Maximum extrinsic weight limit (#6067)

    Client

    • Add JSON format to import blocks and set it as default (#5816)
    • Upgrade to libp2p v0.19 - Changes the default PeerId representation (#6064)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha.8(May 15, 2020)

    2.0.0-alpha.7 -> 2.0.0-alpha.8

    License Changed From this release forward, the code is released under a new – more relaxed – license scheme: Client (sc-*) is released under "GPL 3.0 or newer with the Classpath Exception", while primitives, FRAME, the pallets, utils and test-utils are released under "Apache 2.0". More details in the Relax licensing scheme PR.

    Runtime

    • Democracy weight (#5828)
    • Make Digest support StorageAppend (#5922)
    • Added RuntimePublic for ecdsa public key. (#6029)
    • Benchmarks for elections-phragmen pallet (#5845)

    Client

    • Meter block import results via prometheus (#6025)
    • Monitor transactions rejected from the pool as invalid (#5992)
    • client/network: Remove default Kademlia DHT in favor of per protocol DHT (#5993)
    • Allow passing multiple --log CLI options (#5982)
    • client: Replace unsafe_rpc_expose with an RpcMethods enum (#5729)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha.7(May 5, 2020)

    2.0.0-alpha.6 -> 2.0.0-alpha.7

    Runtime

    • Use storage::append in the implementation of the storage types (#5889)
    • pallet-sudo: Store DispatchResult in Sudid event (#5804)
    • Enable Offchain Equalise (#5683)
    • Add support for custom runtime upgrade logic (#5782)
    • Require fn token in decl_storage get (#5717)
    • Child trie api changes BREAKING (#4857)
    • Pass max-total to RewardRemainder on end_era (#5697)
    • Transaction versioning in the RuntimeVersion (#5582)
    • emit TipClosed event on success tip payout (#5656)

    Client

    • Adds export-state subcommand (#5842)
    • Drop ClientProvider (#5823)
    • Move spawning tasks from thread pools to Service's TaskManager for block importing (#5647)
    • Reputation penalty for sending empty block response (#5814)
    • Move sc-client into sc-service (#5502)
    • Use new block requests protocol (#5760)
    • Fix leak in stream notifications (#5739)
    • network: Only insert global addresses into the DHT. (#5735)
    • enum Pays for PaysFee (#5733)
    • Migrate away from SimpleDispatchInfo (#5686)
    • Child trie api changes BREAKING (#4857)
    • subkey: compute and inspect a moduleid (#5676)
    • Listen on ipv6 by default as well (#5677)
    • Adjustments to Kademlia-related metrics (#5660)
    • client/authority-discovery: Allow to be run by sentry node (#5568)
    • Add alternative RPC methods to system_networkState (#5643)
    • Several tweaks to networking Prometheus metrics (#5636)
    • Use a Kademlia instance per ProtocolId. (#5045)
    • Report tasks metrics to Prometheus (#5619)

    API

    • Child trie api changes BREAKING (#4857)
    • Pass max-total to RewardRemainder on end_era (#5697)
    • Implement iter for doublemap (#5504)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-alpha.6(Apr 14, 2020)

    Changelog 2.0.0-alpha.5 -> 2.0.0-alpha.6

    Runtime

    • Unsigned Validation best practices (#5563)
    • Generate Unit Tests for Benchmarks (#5527)
    • Mandate weight annotation (#5357)
    • Make Staking pallet using a proper Time module. (#4662)
    • Pass transaction source to validate_transaction (#5366)
    • on_initialize return weight consumed and default cost to default DispatchInfo instead of zero (#5382)

    Client

    • Add new RPC method to get the chain type (#5576)
    • Reuse wasmtime instances, the PR (#5567)
    • Prometheus Metrics: Turn notifications_total counter into notifications_sizes histogram (#5535)
    • Make verbosity level mandatory with telemetry opt (#5057)
    • Additional Metrics collected and exposed via prometheus (#5414)
    • Switch to new light client protocol (#5472)
    • client/finality-grandpa: Instrument until-imported queue (#5438)
    • Batch benchmarks together with * notation. (#5436)
    • src/service/src/builder: Fix memory metric exposed in bytes not KiB (#5459)
    • Make transactions and block announces use notifications substre… (#5360)
    • Adds state_queryStorageAt (#5362)
    • Offchain Phragmén BREAKING. (#4517)
    • sc_rpc::system::SystemInfo.impl_version now returns the full version (2.0.0-alpha.2-b950f731c-x86_64-linux-gnu) instead of the short version (1.0.0) (#5271)

    API

    • Unsigned Validation best practices (#5563)
    • Split the Roles in three types (#5520)
    • Pass transaction source to validate_transaction (#5366)
    • on_initialize return weight consumed and default cost to default DispatchInfo instead of zero (#5382)
    Source code(tar.gz)
    Source code(zip)
    subkey(10.70 MB)
    subkey.asc(488 bytes)
    substrate(56.33 MB)
    substrate.asc(488 bytes)
  • ci-release-2.0.0-alpha.5+2(Mar 20, 2020)

  • ci-release(Mar 18, 2020)

  • v2.0.0-alpha.3(Feb 27, 2020)

  • v2.0.0-alpha.2(Feb 26, 2020)

  • v2.0.0-alpha.1(Feb 25, 2020)

  • subkey2.0.0rc(Dec 13, 2019)

  • v0.9.2(Jan 10, 2019)

    Send patch release of the 1.0-beta series. This introduces an updated runtime for Substrate Node, optimised for the current Charred Cherry test net upgrade. Other features/fixes:

    • system_peers and system_health RPC APIs exposed for additional information
    • Fix for Ctrl-C hanging
    • Invulnerability functionality in staking module
    • Various optimisations to block import
    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Dec 20, 2018)

    A point release to the 1.0 beta (0.9) series.

    • Fixes extrinsic validity response;
    • Fixes block tracking (for particularly useful for pubsub of chain_newHead);
    • Introduces default values into the metadata.
    • Updates the native runtime to version 10 of substrate-node.

    There are also a few smaller fixes and optimisations in here. All nodes should upgrade asap.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Dec 17, 2018)

    The 1.0 beta release of Substrate.

    This introduces our draft "final" 1.0 API for building Substrate-based blockchains and is what our documentation efforts will target.

    It includes GRANDPA (AfG/SHAFT) finality as well as Aura block production. It has the latest governance protocols including lock-voting and delayed-enactment. It includes the latest tagged, pluggable transaction queue and the latest "wasm" smart-contract environment module. There are also various updates to networking and other lower-level infrastructure.

    Source code(tar.gz)
    Source code(zip)
  • v0.2.4(Aug 15, 2018)

  • v0.2.3(Aug 10, 2018)

Owner
Parity Technologies
Solutions for a trust-free world
Parity Technologies
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 6.2k Nov 26, 2021
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 6.2k Nov 30, 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

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
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 1 Nov 23, 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 7 Nov 22, 2021
Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion 1 Oct 19, 2021
A substrate pallet that enables Manta's decentialized anynonymous payment (DAP) protocol.

This is a pallet that enables decentialized anynonymous payment (DAP) protocol. The best way to use this repo is to invoke it with a manta-runtime, available from either manta-node or cumulus.

Manta Network 24 Nov 11, 2021
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 21 Nov 25, 2021
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 10 Nov 6, 2021
Substrate NFT !ink smart contract base

Substrate !ink NFT simple implementation This is a simple working version of base NFT smart contract written using latest (as of this date) !ink 3.0.0

POLK4.NET 7 Sep 1, 2021
Crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains

crunch · crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains. Why use crunch To automate payout

null 16 Nov 6, 2021
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 11 Nov 24, 2021
InvArch Pallet Library - IP Infrastructure for Substrate

InvArch-Pallet-Library Intro This repository should contains the Pallets used in the InvArch blockchain, and reviews their relationships and functions

InvArch 8 Nov 19, 2021
Substrate Pallet for chaotic experimentations

Chaos Pallet The Chaos module is used to inject chaos into a Substrate Runtime and intentionally break things. Overview The Chaos module provides func

Bernardo A. Rodrigues 1 Oct 30, 2021
Filecoin to substrate bridge

filecoindot A Substrate pallet to bridge from Filecoin to any blockchain built using the Substrate framework, including Polkadot parachains. How to in

ChainSafe 9 Nov 29, 2021
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 Nov 21, 2021
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 51 Nov 25, 2021
A high performance blockchain kernel for enterprise users.

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

CITAHub 1.2k Nov 23, 2021
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

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

Nervos Network 916 Nov 29, 2021
The Phala Network Blockchain, pRuntime and the bridge.

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

Phala Network 224 Nov 23, 2021
Experimental blockchain database

A database for the blockchain. Design considerations API The database is a universal key-value storage that supports transactions. It does not support

Parity Technologies 92 Nov 20, 2021
An extensible open-source framework for creating private/permissioned blockchain applications

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

Exonum 1.1k Nov 23, 2021
TestSuite4 is a framework designed to simplify development and testing of TON Contracts. It includes light-weight emulator of blockchain making it easy to develop contracts.

TestSuite4 0.1.2 TestSuite4 is a framework designed to simplify development and testing of TON Contracts. It contains lightweight blockchain emulator

TON Labs 25 Nov 1, 2021
Local blockchain for Free TON DApp development and testing.

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

TON Labs 24 Nov 8, 2021
A value transfer bridge between the Monero blockchain and the Secret Network.

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

null 24 Oct 4, 2021
C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

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

null 1.5k Dec 1, 2021
A high performance blockchain kernel for enterprise users.

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

CITAHub 1.2k Nov 22, 2021