NEO•ONE is a very large project, which is organized into 50+ interdependent packages. Below is a breakdown of what each package is used for, grouped by functionality.
Exports nearly everything from neo-one-client-common
and neo-one-client-core
, plus DeveloperTools
from neo-one-developer-tools
.
One of the core client packages, which provides APIs for cryptography, commonly used client functions, reading binary input, building scripts, and more.
The core client package, which exports the NEO•ONE Client, which is used to construct and send transactions, read accounts, hold keys, read the blockchain, and much more.
Exports nearly everything from neo-one-client
and neo-one-client-full-core
.
Exports common models.
Contains an extension of the Client in neo-one-client-core
which provides extra APIs and functionality, plus the ReadClient, and more.
Provides NEO•ONE Client functionality that switches between NodeJS and browser environments.
Contains the FullNode
class which is used by the NEO•ONE CLI, neo-one-node-bin
, and for testing purposes.
Contains the bin
for staring the NEO•ONE node.
Primarily contains the Blockchain
class which handles nearly every blockchain function for the node.
Creates the full NEO•ONE node used in the browser, especially for the NEO•ONE website courses.
The web worker wrapper for the NEO•ONE node used in the browser.
Handles concensus for the node.
Contains all the objects for Accounts, Blocks, Transactions, Contracts, Headers, etc. used in the node and other packages.
Creates the actual HTTP server used by the node for relaying RPC calls.
Handles the node settings, like creating the genesis block, defining the governing token, and setting other key blockchain constants.
Contains the functionality for relaying information between the NEO•ONE node and other nodes in the network.
Handles offline operations for the node, like dumping and loading chainfile data.
Handles the protocol for connecting to other nodes in the network.
Contains the function which creates the RPC handlers for the node. These handlers are what are called by the node when it receives RPC requests.
Handles storage data caching for the node.
Contains common functions used by node storage.
Creates the storage and the storage APIs used by the node to store and access blockchain data.
Primarily provides the entrypoint for restoring a NEO•ONE node from blockchain data, like in a chainfile.
Contains the NEO•ONE implementation of the NeoVM, used in the NEO•ONE node and used for testing the compiler.
Contains very basic Koa HTTP server utils.
Contains very basic server utils, plus common functions and constants.
This is the main entrypoint for the NEO•ONE CLI code. It handles all NEO•ONE CLI commands.
Handles more CLI functionality, like configuration, setting up wallets, setting up a NEO•ONE Client, etc.
Contains more CLI features, like configuration and network setup.
Exports declaration files that define custom types used in a NEO•ONE smart contract.
Generates helpers for invoking smart contracts, and generates other code for creating dApps around smart contracts.
The largest package in NEO•ONE. Contains the entire smart contract compiler, which creates the actual compiled NeoVM bytecode.
Creates the environment for compiling smart contracts, which is then used in the CLI and other packages.
Defines NEP5 tokens and ICOs.
Creates the environment for testing smart contracts.
Creates the environment for testing smart contracts in the browser.
Runs smart contract unit tests.
Creates a plugin for the NEO•ONE smart contract compiler.
Primarily creates and exports a FromStream
React component for subscribing to Observables
in React.
Creates additional React components that are used by the NEO•ONE website and exports everything from neo-one-react-core
.
Creates all the base React components that are used by the NEO•ONE website and other React components.
Contains the entire NEO•ONE website.
Contains helpers for creating and connecting web workers, especially for the NEO•ONE website.
Handles a lot of the setup and execution of the courses on the NEO•ONE website, like loading files into a browser-implemented DB, compiling smart contracts, deploying contracts, testing contracts, etc.
A web worker wrapper for neo-one-local-browser
.
Contains functions that are used in the browser for the NEO•ONE courses.
Contains the code for the code editor used in the NEO•ONE website.
Contains the code for the code editor server used in the NEO•ONE website.
Common build modules.
Environment setup for running Jest unit and end-to-end tests.
Contains all the build tools for checking, cleaning, formatting, preparing, and building NEO•ONE packages.
Contains all the webpack compilers and build configurations, primarily for the NEO•ONE website.
Handles almost all the logging for NEO•ONE packages.
Handles configuration for neo-one-logger
.
Provides the interface for controlling a private development network.
Creates the developer tools iframe for controlling a private network.
A simple user-friendly package that downloads @neo-one/cli
, @neo-one/client
, @neo-one/smart-contract
,
@neo-one/smart-contract-lib
, @neo-one/smart-contract-test
, @neo-one/smart-contract-typescript-plugin
for easy startup.
Primarily exports TypeScript compiler API helper functions for use in build tools, the compiler, and more.
Handles the concatenation of multiple TypeScript files into one file for the TypeScript compiler.
Contains various helper functions, utilities, and constants that are used throughout NEO•ONE.
Contains various helper functions, utilities, and constants that are used primarily in the node.