feat: initialize Kurdistan SDK - independent fork of Polkadot SDK

This commit is contained in:
2025-12-13 15:44:15 +03:00
commit e4778b4576
6838 changed files with 1847450 additions and 0 deletions
+529
View File
@@ -0,0 +1,529 @@
# Changelog
The format is based on [Keep a Changelog].
[Keep a Changelog]: http://keepachangelog.com/en/1.0.0/
## Unreleased
## 2.0.1-> 3.0.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 improve 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; and various changes to improve networking and light-client
support, like adding the Grandpa warp sync request-response protocol (#7711).
_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 between 2.0 and 3.0. The easiest and quickest
path for upgrading is just to 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](https://github.com/paritytech/substrate/blob/master/docs/Upgrading-2.0-to-3.0.md), if you have further questions
or problem, please [feel free to ask in the github discussion
board](https://github.com/paritytech/substrate/discussions).
#### Runtime
* contracts: Charge rent for code storage (#7935)
* contracts: Emit event on contract termination (#8014)
* 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)
* contracts: Cap the surcharge reward by the amount of rent that way paid by a contract (#7870)
* Use checked math when calculating storage size (#7885)
* Fix clear prefix check to avoid erasing child trie roots. (#7848)
* contracts: Collect rent for the first block during deployment (#7847)
* contracts: Add configurable per-storage item cost (#7819)
* 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 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)
## 2.0.0-> 2.0.1
Patch release with backports to fix broken nightly builds. Namely contains backports of
* [#7381: Make Substrate compile with latest nightly](https://github.com/paritytech/substrate/pull/7381)
* [#7238: Fix compilation with environmental on latest nightly](https://github.com/paritytech/substrate/pull/7238)
* [#7395: Make benchmarks compile with latest nightly](https://github.com/paritytech/substrate/pull/7395)
* [#7838: Fix incorrect use of syn::exports](https://github.com/paritytech/substrate/pull/7838) (partially)
* [#7854: Update to futures 0.3.9](https://github.com/paritytech/substrate/pull/7854)
## 2.0.0-rc6 -> 2.0.0 two dot 😮
### 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)
## 2.0.0-rc5 -> 2.0.0-rc6 Rock Hyrax
### Runtime
* Custom Codec Implementation 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)
## 2.0.0-rc4 -> 2.0.0-rc5 River Dolphin
### 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<u8> 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) latest 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)
## 2.0.0-rc3 -> 2.0.0-rc4 (Rhinoceros)
### 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: generalized 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 separate 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)
## 2.0.0-rc2 -> 2.0.0-rc3
### Runtime
* Introduce stacked filtering (#6273)
* Allow "pure" 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)
## 2.0.0-rc1 -> 2.0.0-rc2
(nothing of note)
## 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)
## 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](https://github.com/paritytech/substrate/pull/5947).
### Runtime
* Democracy weight (#5828)
* Make `Digest` support `StorageAppend` (#5922)
### Client
* Meter block import results via prometheus (#6025)
* Added RuntimePublic for ecdsa public key. (#6029)
* Benchmarks for elections-phragmen pallet (#5845)
* 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)
## 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)
## 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)
## 2.0.0-alpha.4 -> 2.0.0-alpha.5
### Runtime
* pallet-evm: configurable gasometer config (#5320)
* Adds new event phase `Initialization` (#5302)
## 2.0.0-alpha.3 -> 2.0.0-alpha.4
### Runtime
* Move runtime upgrade to `frame-executive` (#5197)
* Split fees and tips between author and treasury independently (#5207)
* Refactor session away from needless double_maps (#5202)
* Remove `secp256k1` from WASM build (#5187)
* Introduce default-setting prime for collective (#5137)
* Adds `vested_transfer` to Vesting pallet (#5029)
* Change extrinsic_count to extrinsic_index in pallet-utility (#5044)
### Client
* client/finality-grandpa: Add Prometheus metrics to GossipValidator (#5237)
* removes use of sc_client::Client from node-transaction-factory (#5158)
* removes use of sc_client::Client from sc_network (#5147)
* Use CLI to configure max instances cache (#5177)
* client/service/src/builder.rs: Add build_info metric (#5192)
* Remove `substrate-ui.parity.io` from CORS whitelist (#5142)
* removes use of sc_client::Client from sc-rpc (#5063)
* Use 128mb for db cache default (#5134)
* Drop db-cache default from 1gig to 32mb (#5128)
* Add more metrics to prometheus (#5034)
### API
* Produce block always on updated transaction pool state (#5227)
* Add `ext_terminate` (#5234)
* Add ext_transfer call (#5169)
* ChainSpec trait (#5185)
* client/authority-discovery: Instrument code with Prometheus (#5195)
* Don't include `:code` by default in storage proofs (#5179)
* client/network-gossip: Merge GossipEngine and GossipEngineInner (#5042)
* Introduce `on_runtime_upgrade` (#5058)
+114
View File
@@ -0,0 +1,114 @@
<!-- markdown-link-check-disable -->
# Security Policy
Parity Technologies is committed to resolving security vulnerabilities in our software quickly and carefully. We take
the necessary steps to minimize risk, provide timely information, and deliver vulnerability fixes and mitigations
required to address security issues.
## Reporting a Vulnerability
Security vulnerabilities in Parity software should be reported by email to security@parity.io. If you think your report
might be eligible for the Parity Bug Bounty Program, your email should be sent to bugbounty@parity.io.
Your report should include the following:
- your name
- description of the vulnerability
- attack scenario (if any)
- components
- reproduction
- other details
Try to include as much information in your report as you can, including a description of the vulnerability, its
potential impact, and steps for reproducing it. Be sure to use a descriptive subject line.
You'll receive a response to your email within two business days indicating the next steps in handling your report. We
encourage finders to use encrypted communication channels to protect the confidentiality of vulnerability reports. You
can encrypt your report using our public key. This key is [on MIT's key
server](https://pgp.mit.edu/pks/lookup?op=get&search=0x5D0F03018D07DE73) server and reproduced below.
After the initial reply to your report, our team will endeavor to keep you informed of the progress being made towards a
fix. These updates will be sent at least every five business days.
Thank you for taking the time to responsibly disclose any vulnerabilities you find.
## Responsible Investigation and Reporting
Responsible investigation and reporting includes, but isn't limited to, the following:
- Don't violate the privacy of other users, destroy data, etc.
- Dont defraud or harm Parity Technologies Ltd or its users during your research; you should make a good faith effort
to not interrupt or degrade our services.
- Don't target our physical security measures, or attempt to use social engineering, spam, distributed denial of service
(DDOS) attacks, etc.
- Initially report the bug only to us and not to anyone else.
- Give us a reasonable amount of time to fix the bug before disclosing it to anyone else, and give us adequate written
warning before disclosing it to anyone else.
- In general, please investigate and report bugs in a way that makes a reasonable, good faith effort not to be
disruptive or harmful to us or our users. Otherwise your actions might be interpreted as an attack rather than an
effort to be helpful.
## Bug Bounty Program
Our Bug Bounty Program allows us to recognize and reward members of the Parity community for helping us find and address
significant bugs, in accordance with the terms of the Parity Bug Bounty Program. A detailed description on eligibility,
rewards, legal information and terms & conditions for contributors can be found on [our
website](https://paritytech.io/bug-bounty.html).
## Plaintext PGP Key
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
BZYiIhW7GG4ozvKDqyNm4eg=
=yKcB
-----END PGP PUBLIC KEY BLOCK-----
```
+172
View File
@@ -0,0 +1,172 @@
---
title: Style Guide for Rust in Substrate
---
Where possible these styles are enforced by settings in `rustfmt.toml` so if you run `cargo fmt` then you will adhere to
most of these style guidelines automatically.
# Code Formatting
- Indent using tabs.
- Lines should be longer than 100 characters long only in exceptional circumstances and certainly no longer than 120.
For this purpose, tabs are considered 4 characters wide.
- Indent levels should be greater than 5 only in exceptional circumstances and certainly no greater than 8. If they are
greater than 5, then consider using `let` or auxiliary functions in order to strip out complex inline expressions.
- Never have spaces on a line prior to a non-whitespace character
- Follow-on lines are only ever a single indent from the original line.
```rust
fn calculation(some_long_variable_a: i8, some_long_variable_b: i8) -> bool {
let x = some_long_variable_a * some_long_variable_b
- some_long_variable_b / some_long_variable_a
+ sqrt(some_long_variable_a) - sqrt(some_long_variable_b);
x > 10
}
```
- Indent level should follow open parens/brackets, but should be collapsed to the smallest number of levels actually
used:
```rust
fn calculate(
some_long_variable_a: f32,
some_long_variable_b: f32,
some_long_variable_c: f32,
) -> f32 {
(-some_long_variable_b + sqrt(
// two parens open, but since we open & close them both on the
// same line, only one indent level is used
some_long_variable_b * some_long_variable_b
- 4 * some_long_variable_a * some_long_variable_c
// both closed here at beginning of line, so back to the original indent
// level
)) / (2 * some_long_variable_a)
}
```
- `where` is indented, and its items are indented one further.
- Argument lists or function invocations that are too long to fit on one line are indented similarly to code blocks, and
once one param is indented in such a way, all others should be, too. Run-on parameter lists are also acceptable for
single-line run-ons of basic function calls.
```rust
// OK
fn foo(
really_long_parameter_name_1: SomeLongTypeName,
really_long_parameter_name_2: SomeLongTypeName,
shrt_nm_1: u8,
shrt_nm_2: u8,
) {
...
}
// NOT OK
fn foo(really_long_parameter_name_1: SomeLongTypeName, really_long_parameter_name_2: SomeLongTypeName,
shrt_nm_1: u8, shrt_nm_2: u8) {
...
}
```
```rust
{
// Complex line (not just a function call, also a let statement). Full
// structure.
let (a, b) = bar(
really_long_parameter_name_1,
really_long_parameter_name_2,
shrt_nm_1,
shrt_nm_2,
);
// Long, simple function call.
waz(
really_long_parameter_name_1,
really_long_parameter_name_2,
shrt_nm_1,
shrt_nm_2,
);
// Short function call. Inline.
baz(a, b);
}
```
- Always end last item of a multi-line comma-delimited set with `,` when legal:
```rust
struct Point<T> {
x: T,
y: T, // <-- Multiline comma-delimited lists end with a trailing ,
}
// Single line comma-delimited items do not have a trailing `,`
enum Meal { Breakfast, Lunch, Dinner };
```
- Avoid trailing `;`s where unneeded.
```rust
if condition {
return 1 // <-- no ; here
}
```
- `match` arms may be either blocks or have a trailing `,` but not both.
- Blocks should not be used unnecessarily.
```rust
match meal {
Meal::Breakfast => "eggs",
Meal::Lunch => { check_diet(); recipe() },
// Meal::Dinner => { return Err("Fasting") } // WRONG
Meal::Dinner => return Err("Fasting"),
}
```
# Style
- Panickers require explicit proofs they don't trigger. Calling `unwrap` is discouraged. The exception to this rule is
test code. Avoiding panickers by restructuring code is preferred if feasible.
```rust
let mut target_path =
self.path().expect(
"self is instance of DiskDirectory;\
DiskDirectory always returns path;\
qed"
);
```
- Unsafe code requires explicit proofs just as panickers do. When introducing unsafe code, consider trade-offs between
efficiency on one hand and reliability, maintenance costs, and security on the other. Here is a list of questions
that may help evaluating the trade-off while preparing or reviewing a PR:
- how much more performant or compact the resulting code will be using unsafe code,
- how likely is it that invariants could be violated,
- are issues stemming from the use of unsafe code caught by existing tests/tooling,
- what are the consequences if the problems slip into production.
# Manifest Formatting
> **TLDR** You can use the CLI tool [Zepter](https://crates.io/crates/zepter) to format the files: `zepter format
> features`
Rust `Cargo.toml` files need to respect certain formatting rules. All entries need to be alphabetically sorted. This
makes it easier to read them and insert new entries. The exhaustive list of rules is enforced by the CI. The general
format looks like this:
- The feature is written as a single line if it fits within 80 chars:
```toml
[features]
default = ["std"]
```
- Otherwise the feature is broken down into multiple lines with one entry per line. Each line is padded with one tab and
no trailing spaces but a trailing comma.
```toml
[features]
default = [
"loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong",
# Comments go here as well ;)
"std",
]
```
+7
View File
@@ -0,0 +1,7 @@
# Upgrade path for you building on Substrate
## master
- crate rename has been fixed `sp-application-crypto` (was `sc-application-crypto`);
`.maintain/rename-crates-for-2.0.sh` has been updated accordingly, you can use it to upgrade to latest naming
convention
- crates have been renamed, run `bash .maintain/rename-crates-for-2.0.sh`
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

+65
View File
@@ -0,0 +1,65 @@
# Substrate Node Template Release Process
## This release process has to be run in a github checkout Substrate directory with your work committed into
`https://github.com/pezkuwichain/pezkuwi-sdk/`, because the build script will check the existence of your current git commit
ID in the remote repository.
Assume you are in root directory of Substrate. Run:
```bash
cd scripts/ci/ ./node-template-release.sh <output tar.gz file>
```
## Expand the output tar gzipped file and replace files in current Substrate Node Template by running the following
command.
```bash
# This is where the tar.gz file uncompressed cd substrate-node-template # rsync with force copying. Note the
slash at the destination directory is important rsync -avh * <destination node-template directory>/ # For dry-running
add `-n` argument # rsync -avhn * <destination node-template directory>/
```
The above command only copies existing files from the source to the destination, but does not delete files/directories
that are removed from the source. So you need to manually check and remove them in the destination.
## There is a `Cargo.toml` file in the root directory. Inside, dependencies are listed form and linked to a certain git
commit in Substrate remote repository, such as:
```toml
toml sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", rev =
"de80d0107336a9c7a2efdc0199015e4d67fcbdb5", default-features = false }
```
e will update each of them to link to the Rust [crate registry](https://crates.io/). After confirming the versioned
package is published in the crate, the above will become:
```toml
[workspace.dependencies] sp-core = { version = "7.0.0", default-features = false }
```
P.S: This step can be automated if we update `node-template-release` package in `scripts/ci/node-template-release`.
## Once the `Cargo.toml` is updated, compile and confirm that the Node Template builds. Then commit the changes to a new
branch in [Substrate Node Template](https://github.com/substrate-developer-hub/substrate-node-template), and make a PR.
> Note that there is a chance the code in Substrate Node Template works with the linked Substrate git commit but not
with published packages due to the latest (as yet) unpublished features. In this case, rollback that section of the
Node Template to its previous version to ensure the Node Template builds.
## Once the PR is merged, tag the merged commit in master branch with the version number `vX.Y.Z+A` (e.g. `v3.0.0+1`)
The `X`(major), `Y`(minor), and `Z`(patch) version number should follow Substrate release version. The last digit is any
significant fixes made in the Substrate Node Template apart from Substrate. When the Substrate version is updated, this
digit is reset to 0.
## Troubleshooting
- Running the script `./node-template-release.sh <output tar.gz file>`, after all tests passed successfully, seeing the
following error message:
```
thread 'main' panicked at 'Creates output file: Os { code: 2, kind: NotFound, message: "No such file or directory"
}', src/main.rs:250:10 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
This is likely due to that your output path is not a valid `tar.gz` filename or you don't have write permission to the
destination. Try with a simple output path such as `~/node-tpl.tar.gz`.
+20
View File
@@ -0,0 +1,20 @@
# Rustdocs Release Process
There is [a script in place](../.maintain/rustdocs-release.sh) to manage the deployment of Substrate rustdocs at
https://docs.pezkuwichain.io/substrate, which is pushing the rustdocs file in `gh-pages` branch of
https://github.com/paritytech/substrate.
The documentation at the top of the `rustdocs-release.sh` explains most of the mechanics of the script.
Manage the rustdocs deployment with one of the following commands.
```bash
# Deploy rustdocs of `monthly-2021-10` tag
.maintain/rustdocs-release.sh deploy monthly-2021-10
# In addition to the above, the `latest` symlink will point to this version of rustdocs
.maintain/rustdocs-release.sh deploy -l monthly-2021-10
# Remove the rustdocs of `monthly-2021-10` from `gh-pages`.
.maintain/rustdocs-release.sh remove monthly-2021-10
```