NEAR Protocol is a new smart-contract platform that delivers scalability and usability.
Through sharding it will linearly scale with number of validation nodes on the network.
Leveraging WebAssembly, TypeScript, more sane contract management, ephemeral accounts and many other advancements, NEAR finally makes using a blockchain protocol easy for both developers and consumers.
Check out quick start documentation, specifically:
Develop and deploy contracts without any setup required using NEARStudio:
This project is currently under heavy development. Please see Issues and Milestones to checkout the current progress and work items.
High level milestones:
- DevNet: a tool with fully working State Transition + WebAssembly.
- AlphaNet: Multi-node smart-contract platform.
- BetaNet: Added economics and enchanced security.
- TestNet: added governance module, ready to launch as MVB
- MainNet: Launched as Minimum Viable Blockchain.
- Shard chains: Support for scalable sharding.
This repo contains the core NEAR Protocol node client. It is written using the Rust language and contains a Python-based wrapper for interfacing to it.
$ curl https://sh.rustup.rs -sSf | sh
$ rustup component add clippy-preview
You may need to activate the environment via . ~/.cargo/env
to use cargo
.
Mac OS:
brew install protobuf
Ubuntu:
apt-get install protobuf-compiler
# Download NEAR Core code.
git clone https://github.com/nearprotocol/nearcore
cd nearcore
It will build the first time and then run:
cargo run
or
cargo run --package=devnet
In order to run tests currently, you must setup pynear
:
cd pynear
# sudo may be required if you are not testing with a python virtual environment
python setup.py develop
For runnable apps (devnet, nearcore, etc.), you can use
the --log-level
option to configure the log level across all internal crates.
You can also use the RUST_LOG
environment variable, with env_logger
semantics
to override the log level for specific targets. RUST_LOG
can also be used in
integration tests which spawn runnable apps.
Example:
$ RUST_LOG=runtime=debug cargo run -- --log-level warn
To add new target (e.g. info!(target: "my target", "hello")
),
add the desired target to the list in node/cli/src/service.rs
in configure_logging
function.
If you are planning to contribute, there are few more things to setup
./scripts/setup_hooks.sh
Installation instructions here
We currently use clippy to enforce certain standards.
This check is run automatically during CI builds, and in a pre-commit
hook. You can run do a clippy check with ./scripts/run_clippy.sh
.