Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Defensive Programming in Substrate Reference Document #2615

Merged
Merged
Show file tree
Hide file tree
Changes from 46 commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
85740c0
Add to new branch
CrackTheCode016 Dec 4, 2023
db5d2d0
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Dec 4, 2023
9f76b7b
add decision chart
CrackTheCode016 Jan 1, 2024
6d232fc
add feedback
CrackTheCode016 Jan 1, 2024
a7a4ee1
few tweaks
CrackTheCode016 Jan 1, 2024
3014e20
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
48d2f16
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
8ac9f44
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
8b20c60
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
3a2c603
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
1962902
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
263f5c7
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
e357c60
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
4341e28
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
36c2258
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
082c30b
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
cd1b330
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
9894d28
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
9d7e1ec
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
94de958
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
9ae0bd3
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
98e1539
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
9b260f8
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
92412d9
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
73b9e5d
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
1738854
Update developer-hub/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 8, 2024
4adb257
Update developer-hub/src/reference_docs/mod.rs
CrackTheCode016 Jan 8, 2024
fdd26df
new branch
CrackTheCode016 Jan 8, 2024
794ef40
Merge branch 'master' of github.com:CrackTheCode016/polkadot-sdk
CrackTheCode016 Jan 8, 2024
dfe74cc
Merge pull request #1 from CrackTheCode016/master
CrackTheCode016 Jan 8, 2024
8b1510f
reapply changes, fix test
CrackTheCode016 Jan 8, 2024
2e4e076
fmt + add license
CrackTheCode016 Jan 11, 2024
702990e
defensive list, clarification
CrackTheCode016 Jan 11, 2024
1451cdd
spruce up tests
CrackTheCode016 Jan 11, 2024
5cf16e3
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
baab755
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
910cb9d
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
5ff3159
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
7d64bb6
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
6920c58
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
570f0cb
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
eec2700
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 12, 2024
2c8c781
address feedback
CrackTheCode016 Jan 12, 2024
a0a631f
added example of valid panic
CrackTheCode016 Jan 15, 2024
bec3672
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Jan 15, 2024
5607328
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Jan 15, 2024
94b32c5
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
fa707bb
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
3cb2f67
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
1421905
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
5ad43f9
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
5a0393f
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
89926c1
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
023fa13
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
f2da603
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
b07facb
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
f832eed
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
2114c71
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
b4b12e1
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
0b25f7c
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
07fe21f
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
d294b6a
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
75ba359
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
f46c4ae
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
d3c4b7c
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
ce75101
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
3b68daa
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
679171b
Update docs/sdk/src/reference_docs/defensive_programming.rs
CrackTheCode016 Feb 13, 2024
171aca0
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Feb 13, 2024
1abe527
Merge branch 'master' into bader-defensive-programming
kianenigma Feb 15, 2024
2a31634
Merge branch 'master' into bader-defensive-programming
kianenigma Feb 23, 2024
8b7fcb9
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Mar 6, 2024
fc45d70
(inital) move things around
CrackTheCode016 Mar 7, 2024
2966925
start moving things around (unfinished)
CrackTheCode016 Mar 8, 2024
83a13d7
polish + grammar
CrackTheCode016 Mar 11, 2024
114b677
fmt + other checks
CrackTheCode016 Mar 11, 2024
81f366f
make perthings more concise
CrackTheCode016 Mar 11, 2024
2a6521e
fmt and clippy
CrackTheCode016 Mar 11, 2024
ba9cd07
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Mar 11, 2024
5987b6d
make sure tests pass
CrackTheCode016 Mar 13, 2024
875444c
Merge branch 'master' into bader-defensive-programming
kianenigma Mar 18, 2024
0be68cc
Merge branch 'master' into bader-defensive-programming
CrackTheCode016 Mar 19, 2024
110c23c
lock update
CrackTheCode016 Mar 19, 2024
bd4c745
attempt to make clippy happy
CrackTheCode016 Mar 19, 2024
5ee7b1a
attempt 2
CrackTheCode016 Mar 19, 2024
562b2b4
more clippy (facepalm)
CrackTheCode016 Mar 19, 2024
75265e3
fmt
CrackTheCode016 Mar 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions docs/mermaid/integer_operation_decision.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
flowchart LR
CH["Checked"]
ST["Saturated"]
CH-->NEED["The user needs to know that the operation failed - and why"]
CH-->DOUBT["Unsure whether this operation could fail/overflow"]
ST-->SILENT["Silently reaching upper/lower bound will not result in any damage"]
ST-->REASON["In all reasonable circumstances, the number will not overflow, but safety is still desired"]
7 changes: 7 additions & 0 deletions docs/sdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ sp-api = { path = "../../substrate/primitives/api" }
sp-core = { path = "../../substrate/primitives/core" }
sp-keyring = { path = "../../substrate/primitives/keyring" }
sp-runtime = { path = "../../substrate/primitives/runtime" }
sp-arithmetic = { path = "../../substrate/primitives/arithmetic" }

# Misc pallet dependencies
pallet-referenda = { path = "../../substrate/frame/referenda" }
pallet-broker = { path = "../../substrate/frame/broker" }
pallet-babe = { path = "../../substrate/frame/babe" }


[dev-dependencies]
parity-scale-codec = "3.6.5"
Expand Down
6 changes: 3 additions & 3 deletions docs/sdk/src/guides/your_first_pallet/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@
//! This macro will call `.into()` under the hood.
#![doc = docify::embed!("./src/guides/your_first_pallet/mod.rs", transfer_better)]
//!
//! Moreover, you will learn in the [Safe Defensive Programming
//! section](crate::reference_docs::safe_defensive_programming) that it is always recommended to use
//! Moreover, you will learn in the [Defensive Programming
//! section](crate::reference_docs::defensive_programming) that it is always recommended to use
//! safe arithmetic operations in your runtime. By using [`frame::traits::CheckedSub`], we can not
//! only take a step in that direction, but also improve the error handing and make it slightly more
//! ergonomic.
Expand Down Expand Up @@ -291,7 +291,7 @@
//! The following topics where used in this guide, but not covered in depth. It is suggested to
//! study them subsequently:
//!
//! - [`crate::reference_docs::safe_defensive_programming`].
//! - [`crate::reference_docs::defensive_programming`].
//! - [`crate::reference_docs::frame_origin`].
//! - [`crate::reference_docs::frame_composite_enums`].
//! - The pallet we wrote in this guide was using `dev_mode`, learn more in
Expand Down
618 changes: 618 additions & 0 deletions docs/sdk/src/reference_docs/defensive_programming.rs

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions docs/sdk/src/reference_docs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ pub mod signed_extensions;
pub mod frame_origin;

/// Learn about how to write safe and defensive code in your FRAME runtime.
// TODO: @CrackTheCode016 https://github.com/paritytech/polkadot-sdk-docs/issues/44
pub mod safe_defensive_programming;
pub mod defensive_programming;

/// Learn about composite enums in FRAME-based runtimes, such as "RuntimeEvent" and "RuntimeCall".
pub mod frame_composite_enums;
Expand Down
1 change: 0 additions & 1 deletion docs/sdk/src/reference_docs/safe_defensive_programming.rs

This file was deleted.

Loading