language/diem-framework/README.md
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.
Each of the main components of the Diem Framework and contributing guidelines are documented separately. Particularly:
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).
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