Skip to main content



A block in a Blockchain contains a number of transaction records. Blocks are paired up with the previous block according to the timestamp and the cryptographic hash of the previous block contained in each block header, thereby creating a chain of blocks, or a blockchain.


A wallet is a cryptographic public/private key pair which is used to sign and authenticate database transactions that occur on the Neo network.

Account (Address)#

Similar to your bank account, a blockchain account is used to transfer or receive assets in a transaction. The address is generated by the script hash through some operations, and can be converted back to the script hash. In Neo Legacy, the address starts with A, and in Neo N3, the address starts with N.

Private Key/Public Key#

The private key is a 256-bit random number that is kept by users themselves, without disclosing to others. It is a proof of the user's right to use the account and ownership of assets in the account. Each private key has a public key paired with it.


A Neo transaction is a signed data package with an instruction for the network, for example a user indicating that he wants to transfer assets to another address. Each Neo block in the blockchain ledger contains one or more transactions, making each block a transaction batch.


A script is a piece of code that consists of opcodes and operands. Each account is a contract with a script. A standard account script is composed of the public key and the OpCode that verifies the signature. The format is as follows

PUSHDATA1 03ac765294075da6f7927c96bfe3d3f64ae3680c5eb50f82f55170a9f1bea59dadSYSCALL Neo.Crypto.VerifyWithECDsaSecp256r1

Script Hash#

The script hash is generated from the smart contract script with the RIPEMD-160 algorithm. Each script has a unique script hash. Any change made in the script of the contract will cause the script hash to change. The script hash length is 20 bytes (160 bits). The script hash is generated unidirectionally by the script, and cannot be reversed to the script. The script hash and address can be converted to each other.


Opcodes are similar to instructions in assembly language. For all OpCode, refer to OpCode source.

Cryptographic private key#

Cryptographic private key refers to the encryption of the private key through the wallet password, which is more secure than the plaintext private key. In this way, you can write the cryptographic private key on paper and keep the password in your mind.

Smart Contract#

From the blockchain perspective, a smart contract is a set of promises, specified in digital form, including protocols within which the parties perform on these promises.


The NEP-17 proposal outlines a token standard for the Neo blockchain that will provide systems with a generalized interaction mechanism for tokenized smart contracts.


The system call is a special operation code, through which you can call the interoperable service layer interface. By calling the interoperable service layer interface, NeoVM can access data such as block, transaction , contract, and asset information that are required for running smart contracts. For more information refer to the files in Neo smart contract module starting with ApplicationEngine. , such as ApplicationEngine.Contract.cs, ApplicationEngine.Blockchain.cs.

Dynamic Call#

A special system call that invokes another contract within a contract. It can be wrote as Contract.Call(scriptHash, method, params). For more information refer to Invoking Smart Contracts.


Each smart contract deployed on the Neo blockchain has a private storage area for storing application data. When creating a smart contract or transaction to use this contract, the contract code needs to read and write its storage. Each contract can declare a storage area. For more information refer to Storage.


NEF is short for Neo Executable Format. The smart contract compiler compiles the source code and eventually generate NEF files and Manifest files (see below).

Magic4 bytesMagic header
Compiler32 bytesCompiler used
Version16 bytesCompiler version (Mayor, Minor, Build, Version)
ScriptHash20 bytesScriptHash for the script
Checksum4 bytesSha256 of the header (CRC)
ScriptVar bytesVar bytes for the payload