A Tour of RFCs
The Nervos Network is made up of a number of protocols and innovations. It's important to have clear documentation and technical specifications on key protocol design and implementations - for which we utilize an RFC (request for comment) process which is intended to provide an open and community driven path for new protocols, improvements and best practices.
This tour provides short introduction on our RFCs and links, hope it will be helpful for you to round out your journey to Nervos Network. There are two categories of RFCs:
Informational - Anything related to Nervos network.
Standards Track - RFC that is intended to be standard followed by protocols, clients and applications in Nervos Network.
Informational
The Nervos Network Positioning Paper
This document provides a high-level walkthrough of all parts of the Nervos Network, with a focus on how they work together to support the overall vision of the network.
Nervos CKB: A Common Knowledge Base for Crypto-Economy
This is Nervos CKB whitepaper, provides an overview of the Nervos Common Knowledge Base (CKB), a public permissionless blockchain and layer 1 of Nervos.
CKB-VM
This RFC introduces CKB-VM (CKB-Virtual Machine) which is a RISC-V instruction set based VM for executing smart contracts on Nervos CKB, written in Rust. There is a user defined token(UDT) issuing process used as an example to demenstrate the implementation of CKB-VM.
Privileged architecture support for CKB VM
This RFC introduces privileged architecture support for CKB VM. While CKB VM doesn't require a privileged model since it only runs one contract at a time, privileged model can help bring MMU support.
Crypto-Economics of the Nervos Common Knowledge Base
This RFC introduces the crypto-economics of Nervos CKB. Nervos CKB is the base layer of the overall Nervos Network which is a preservation focused, "Store of Assets" blockchain. Economically, it's designed to provide sustainable security and decentralization.
Data Structures
This RFC explains all the basic data structures used in CKB, includes Cell, Script, Transaction and Block.
CKB Consensus Protocol
This is Nervos CKB consensue paper. The CKB consensus protocol is a variant of NC that raises its performance limit and selfish mining resistance while keeping its merits.
CKB Transaction Structure
This RFC is about an essential data structure in CKB, the transaction, contains two parts, the first one covers the core transaction features and the second one introduces some extensions.
Standards Track
CKB Block Synchronization Protocol
Block synchronization must be performed in stages with Bitcoin Headers First style. Block is downloaded in parts in each stage and is validated using the obtained parts.
Merkle Tree for Static Data
CKB uses Complete Binary Merkle Tree(CBMT) to generate Merkle Root and Merkle Proof for a static list of items.
P2P Scoring System And Network Security
This RFC describes the scoring system of CKB P2P Networking layer and several networking security strategies based on it.
Serialization
This RFC introduces two major serialization formats, Molecule and JSON, used in CKB.
VM Syscalls
This RFC describes all the RISC-V VM syscalls implemented in CKB so far.CKB VM syscalls are used to implement communications between the RISC-V based CKB VM, and the main CKB process, allowing scripts running in the VM to read current transaction information as well as general blockchain information from CKB.
Eaglesong (Proof-of-Work Function for Nervos CKB)
This RFC specifies the Eaglesong hash function as it is to be used in the context of Nervos CKB proof-of-work.
Transaction Filter
Transaction filter protocol allows peers to reduce the amount of transaction data they send which is to allow low-capacity peers to maintain a high-security assurance about the up to date state of some particular transactions of the chain or verify the execution of transactions.
Node Discovery
This RFC introduces the CKB Node Discovery.It mainly refers to Satoshi Client Node Discovery. The differences between them are summarized below:
- The node version number is included in the
GetNodes
message. - The
Nodes
message is used to periodically broadcast all nodes currently connected. - We use
multiaddr
as the format of node addresses (It MUST NOT include/p2p/
segment otherwise it's considered as misbehavior and a low score SHOULD be given.)
Block Template
This RFC describes the decentralized CKB mining protocol which is to improve the security of the CKB network by making blocks decentralized.
VM Cycle Limits
This RFC describes cycle limits used to regulate VM scripts.CKB VM is a flexible VM that is free to implement many control flow constructs. We need to enforce certain rules in CKB VM to prevent malicious scripts, such as a script with infinite loops.
Transaction valid since
This RFC introduces a new consensus rule to prevent a cell to be spent before a certain block timestamp or a block number by adding a new u64
type field: since
in the transaction input.
CKB Address Format
This RFC introduces how to implement CKB Address Format which is an application level cell lock script display recommendation.CKB address packages lock script into a single line, verifiable, and human read friendly format.
Deposit and Withdraw in Nervos DAO
This RFC describes deposit and withdraw transaction in Nervos DAO. Nervos DAO is a smart contract and one function of Nervos DAO is to provide an dilution counter-measure for CKByte holders. Please pay attention to Common Gotchas which including common and very important points you should be aware to use Nervos DAO well without losing CKBs.