# pezkuwi_sdk_docs::reference_docs - Rust
Reference documents covering in-depth topics across the Pezkuwi SDK. It is suggested to read these on-demand, while you are going through the `guides` or other content.

## Module reference_docs

Source
Expand description

Reference documents covering in-depth topics across the Pezkuwi SDK. It is suggested to read these on-demand, while you are going through the `guides` or other content.

## §Pezkuwi SDK Reference Docs.

This is the entry point for all reference documents that enhance one’s learning experience in the Pezkuwi SDK.

Note that this module also contains the glossary.

### §What is a “reference document”?

First, see why we use rust-docs for everything and our documentation principles. We acknowledge that as much of the crucial information should be embedded in the low level rust-docs. Then, high level scenarios should be covered in `crate::guides`. Finally, we acknowledge that there is a category of information that is:

1. Crucial to know.
2. Is too high level to be in the rust-doc of any one `type`, `trait` or `fn`.
3. Is too low level to be encompassed in a `crate::guides`.

We call this class of documents “reference documents”. Our goal should be to minimize the number of “reference” docs, as they incur maintenance burden.

## Modules§

blockchain_state_machines
  Learn about the way Bizinikiwi and FRAME view their blockchains as state machines.
chain_spec_genesis
  Learn about chain specification file and the genesis state of the blockchain.
cli
  Learn about Bizinikiwi’s CLI, and how it can be extended.
custom_host_functions
  Learn about how to add custom host functions to the node.
custom_runtime_api_rpc
  Learn about how to create custom RPC endpoints and runtime APIs.
defensive_programming
  Learn about how to write safe and defensive code in your FRAME runtime. Defensive programming is a design paradigm that enables a program to continue running despite unexpected behavior, input, or events that may arise in runtime. Usually, unforeseen circumstances may cause the program to stop or, in the Rust context, `panic!`. Defensive practices allow for these circumstances to be accounted for ahead of time and for them to be handled gracefully, which is in line with the intended fault-tolerant and deterministic nature of blockchains.
development_environment_advice
  Advice for configuring your development environment for Bizinikiwi development.
extrinsic_encoding
  Learn about how extrinsics are encoded to be transmitted to a node and stored in blocks.
fee_less_runtime
  Learn about how to make a pezpallet/runtime that is fee-less and instead uses another mechanism to control usage and sybil attacks.
frame_logging
  Learn about how to do logging in FRAME-based runtimes.
frame_offchain_workers
  Learn about the offchain workers, how they function, and how to use them, as provided by the `crate::pezkuwi_sdk::frame_runtime` APIs.
frame_origin
  Learn about Origins, a topic in FRAME that enables complex account abstractions to be built.
frame_pallet_coupling
  Learn about the different ways through which multiple `crate::pezkuwi_sdk::frame_runtime` pallets can be combined to work together.
frame_runtime_types
  Learn about composite enums and other runtime level types, such as `RuntimeEvent` and `RuntimeCall`.
frame_runtime_upgrades_and_migrations
  Learn about Runtime Upgrades and best practices for writing Migrations.
frame_storage_derives
  Learn about the details of what derives are needed for a type to be store-able in `frame` storage.
frame_tokens
  Learn about the token-related logic in FRAME and how to apply it to your use case.
glossary
  The glossary.
metadata
  Learn about metadata, the main means through which an upgradeable runtime communicates its properties to the outside world.
omni_node
  The `pezkuwi-omni-node` and its related binaries.
pezframe_benchmarking_weight
  Learn about benchmarking and weight.
pezframe_system_accounts
  Learn about how pezframe-system handles `account-ids`, nonces, consumers and providers.
runtime_vs_smart_contract
  Learn about the differences between smart contracts and a FRAME-based runtime. They are both “code stored onchain”, but how do they differ?
signed_extensions
  Deprecated in favor of transaction extensions. `SignedExtension`s are deprecated in favor of `TransactionExtension`s.
state
  Learn about the state in Bizinikiwi.
trait_based_programming
  Learn how Bizinikiwi and FRAME use traits and associated types to make modules generic in a type-safe manner.
transaction_extensions
  Learn about the transaction extensions that form a part of extrinsics. Transaction extensions are, briefly, a means for different chains to extend the “basic” extrinsic format with custom data that can be checked by the runtime.
umbrella_crate
  Learn about the Pezkuwi Umbrella crate that re-exports all other crates.
wasm_meta_protocol
  Learn about the WASM meta-protocol of all Bizinikiwi-based chains.