The Zenotta Network Protocol (ZNP), the network that supports the Zenotta blockchain

Overview

Zenotta Network Protocol

A repo for the development of the Zenotta Network Protocol (ZNP).

We will regularly be updating links and easter eggs inside the code. Please join us on this link on April 6th, 10h00 CET to discuss the design of a social compute. It has a sustainable mining client which also will provide distributed compute at the infrastructure layer. The protocol layer will introduce a very novel file system, all of which feeds an application layer that can be built using APIs. We believe you've never seen anything quite like this and look forward to engaging with you in our community!

..

Setup

The Zenotta Network Protocol (in fact, almost all of Zenotta's code) runs on Rust, so installing this is the first step before dealing with any code. You can install rustup, Rust's toolchain installer, by running the following:

curl https://sh.rustup.rs -sSf | sh

When asked how to proceed, simply selecting the option 1) Proceed with installation is generally the best. You can then run the following to update the PATH variable and check whether everything installed correctly:

source $HOME/.cargo/env
rustc --version

If the terminal responds with the rustc version you're currently running then everything went well and you're ready to go.

Linux

Linux (Ubuntu 20.04.01 LTS) may require extra package installations depending on what you've developed before. The following package installs assume a completely new machine instance, and should cover everything you need to get going:

sudo apt install build-essential
sudo apt-get install m4
sudo apt-get install llvm
sudo apt-get install libclang-dev

Repo Setup

You can then set up the project on your local machine using the following steps:

  • Clone this repo using one of the options in Gitlab
  • From your terminal, move into the cloned folder on your local machine
  • Run the following:
make

You will also require a local instance of the Zenotta NAOM repo, which is a crate dependency. The dependency is listed in the Cargo.toml as:

naom = { path = "../naom" }

The path can be changed as needed. Once done you can build the project using cargo build and run it using cargo run, as per usual.

..

Running Nodes Locally

You can build everything by running

cargo build --release

This will compile everything into a release state, from which you can then run your nodes locally. The following are example commands for each type to get you up and running quickly:

  • Compute: RUST_LOG=warp target/release/node compute --config=src/bin/node_settings_local_raft_1.toml
  • Storage: RUST_LOG=warp target/release/node storage --config=src/bin/node_settings_local_raft_1.toml
  • Miner: RUST_LOG=warp target/release/node miner --config=src/bin/node_settings_local_raft_1.toml
  • User: RUST_LOG=warp target/release/node user --config=src/bin/node_settings_local_raft_1.toml

You can provide a number of flags to the command depending on the type of node, and you can view information on the available flags for each node type by running the compiled binary with the --help flag (eg. target/release/storage --help). You can also run a full, 1 node system in your local environment by running sh src/bin/node_settings_local_raft_1_run.sh and perusing the generated logs.

If you run into TLS problems on the API routes, you can pass --api_use_tls=0 to the shell script in order to disable TLS. Note that this will create a security concern, so it's best not to use this too frequently or for anything public facing.

..

Git Flow

When working on this repo, please ensure that any branches you may create pull from develop regularly. In doing this you ensure that your local version has the latest code for the project and minimizes the possibility of unnecessary merge conflicts.

Zenotta's Git flow generally involves working on each new task in a new branch, which you should checkout from develop and can be done as in the following example

git checkout -b branch_name

where branch_name would be replaced with your chosen branch name. There is no general branch naming convention aside from two cases:

  • New features: These should be prefixed with feature_ and then the branch name (eg. feature_new_cool_feature)
  • Bugfixes: These should be prefixed with bugfix_ and then the branch name (eg. bugfix_new_damn_bug)

Beyond this, it is only expected that branches have sensible naming that describes what the branch involves or is for.

..

Documentation

Documentation can be built locally with rustdoc by running the following command:

cargo +nightly doc --document-private-items

The resulting documentation can be found in target/doc/system/index.html.

Nightly is required because one of dependencies (gmp-mpfr-sys) uses unstable features.

You might also like...
Selendra is a multichains interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications.

Selendra An interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications. Read

Built on the Substrate-based runtime, this repository develops the Paralink Network, a cross-chain Oracle platform for secure and scalable data integration. Our goal is to create a robust infrastructure that ensures efficient and reliable data transmission across blockchain networks.
Swap token protocol for cryptocurrencies, supported in cosmos network, such as UST, LUNA, LUNI, etc.

Tokenswap This is a Smart Contract built in Rust to run inside Cosmos SDK module on all chains that enable it. To understand the framework better, ple

LayerCake: An insured-in-transit cross-network composability protocol

LayerCake: An insured-in-transit cross-network composability protocol The key features of LayerCake are: Instant transfers as opposed to the delayed t

Privacy-first delay tolerant network protocol

🌟 Liminality 🌟 Liminality is a unique protocol for wireless communication in fluid and dynamic environments. The protocol takes its name from the li

ROT Cipher implementation in rust, supports rot1 to rot25.

rotcipher-rs ROT Cipher implementation in rust, supports rot1 to rot25. Supported ROT ciphers ROT1 up to ROT25, it is also possible to make custom ROT

Cross-chain bridge message delivery network. We are hiring, [email protected]

Introduction Implementation of a https://darwinia.network node in Rust based on the Substrate framework. This repository contains runtimes for the Dar

ARYA Network is a polkadot/substrate based chain for Non-fungible Token platform on which we can own sell and buy the NFT's on polkadot network.

ARYA Network ARYA Network is a polkadot/substrate based chain for Non-fungible Token platform on which we can own sell and buy the NFT's on polkadot n

dWallet Network, a composable modular signature network is the home of dWallets

Welcome to dWallet Network dWallet Network, a composable modular signature network is the home of dWallets. A dWallet is a noncollusive and massively

Releases(SVC_v1.1.2)
Owner
Zenotta AG
Zenotta AG
Quick poc of the rsync wire protocol in Rust. Supports delta transfer.

Rsync wire protocol in Rust This is a quick poc of the rsync wire protocol in Rust. It supports delta transfer. The code is really a mess right now, a

LightQuantum 4 Feb 18, 2023
Rust implementation of the Inter-Blockchain Communication (IBC) protocol.

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project hosts the ibc rust crate which defines the main data str

COSMOS 37 Dec 26, 2022
This monorepository contains the source code for the smart contracts implementing bAsset Protocol on the Terra blockchain.

Crll bAsset Contracts This monorepository contains the source code for the smart contracts implementing bAsset Protocol on the Terra blockchain. You c

null 3 Mar 29, 2024
A multiplexed p2p network framework that supports custom protocols

Tentacle Overview This is a minimal implementation for a multiplexed p2p network based on yamux that supports mounting custom protocols. Architecture

漂流 188 Dec 19, 2022
Retina is a network analysis framework that supports 100+ Gbps traffic analysis on a single server with no specialized hardware.

Retina Retina is a network analysis framework that enables operators and researchers to ask complex questions about high-speed (>100gbE) network links

Stanford Security Research 73 Jun 21, 2023
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 1k Dec 30, 2022
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 314 Jan 6, 2023
A value transfer bridge between the Monero blockchain and the Secret Network.

Secret-Monero-Bridge A value transfer bridge between the Monero blockchain and the Secret Network. Proof-of-Concept Video Demonstration: https://ipfs.

null 28 Dec 7, 2022
xx network Substrate based blockchain node

xx network Substrate based blockchain node Rust Setup First, complete the basic Rust setup instructions. MacOS users: setup to compile for Linux Befor

xx network 11 Dec 20, 2022
A Rust-based CustomVM for the Avalanche blockchain network

A rust-based Custom VM for Avalanche Subnets Curious about how to run Rust-based smart contracts, or just custom VMs for Avalanche blockchain? You're

Archis 11 Dec 29, 2022