Back to Diem

Diem Framework

language/diem-framework/README.md

latest3.3 KB
Original Source

The Diem Framework

The Diem Framework defines the standard actions that can be performed on-chain both by the Diem VM---through the various prologue/epilogue functions---and by users of the blockchain---through the allowed set of transactions. This directory contains different directories that hold the source Move modules and transaction scripts, along with a framework for generation of documentation, ABIs, and error information from the Move source files. See the Layout section for a more detailed overview of the structure.

Documentation

Each of the main components of the Diem Framework and contributing guidelines are documented separately. Particularly:

Compilation and Generation

Recompilation of the Diem Framework and the regeneration of the documents, ABIs, and error information can be performed by running cargo run from this directory. There are a number of different options available and these are explained in the help for this command by running cargo run -- --help in this directory. Compilation and generation will be much faster if run in release mode (cargo run --release).

Layout

The overall structure of the Diem Framework is as follows:

├── compiled                                # Generated files and public rust interface to the Diem Framework
│   ├── error_descriptions/*.errmap         # Generated error descriptions for use by the Move Explain tool
│   ├── src                                 # External Rust interface/library to use the Diem Framework
│   ├── stdlib                              # The compiled Move bytecode of the Diem Framework source modules
│   ├── script_abis                         # Generated ABIs for script function transactions, and all new transactions
│   └── legacy/transaction_scripts          # Legacy generated ABIs and bytecode for each transaction script in the allowlist
│       ├── abi/*.abi                       # Directory containing generated ABIs for legacy transaction scripts
│       └── *.mv
├── modules                                 # Diem Framework source modules, script modules, and generated documentation
│   ├── *.move
│   └── doc/*.md                            # Generated documentation for the Diem Framework modules
├── nursery/*.move                          # Move modules that are not published on-chain, but are used for testing and debugging locally
├── src                                     # Compilation and generation of information from Move source files in the Diem Framework. Not designed to be used as a Rust library
├── tests
└── script_documentation/*.md               # Generated documentation for allowed transaction scripts