Skip to main content

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 demonstrate 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 consensus 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 a dilution counter-measure for CKByte holders. Please pay attention to Common Gotchas which includes common and very important points you should be aware to use Nervos DAO well without losing CKBs.