بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم
- Decentralized
- Exceptional
- Secure
- Interoperable
- Reliable
- Ethical
- Scalable
Setheum's Blockchain Network node Implementation in Rust, ready for hacking 🚀
NOTE: SETHEUM means
Salam Ethereum, it also meansThe house of giftsfrom the nameSeth/Sheethmeaninggiftin hebrew and the name of the Prophet Sheeth/Seth in Islam, it also stands forSecure, Evergreen, Truthful, Heterogeneous, Economically Unbiased Market.
- Setheum - Powering The New Internet
Founded November 2019,Setheum achieves a high level of equilibrium in the trilemma by leveraging a Directed Acyclic Graph(DAG) to build the blockchain consensus making it a Blockchain via DAG, achieve instant finality, high throughput and very fast blocktime while preserving network security and having a fairly decentralised network,
Setheum is a secure, confidential and interoperable decentralised internet cloud compute and storage blockchain network with EVM and WASM smart contracts, web3 and web 2 Support. The intent of the Setheum Network is to improve upon Web3 and solve the blockchain trilemma with a mixture of approaches and a recipe formed from what we have seen and considered to be some of the best solutions in the field, improving on scalability, security, mass adoption, diversity, and ethics while preserving decentralisation and democratisation.
etheum intends to be the most scalable blockchain network in the world while providing confidentiality for smart contracts, Cloud Computing and Storage Infrastructure for Web3 based Internet Solutions and Interoperability with both Web2 and other Web3 Networks. The AlephBFT Consensus Engine powers the Setheum Chain to have near instant finality, high throughput and high scalability.
Setheum’s consensus system works to achieve high scalability and high security with an ethical and equitably high level of decentralisation.
EthicalDeFi Suite is the DeFi powerhouse of the Setheum Network, providing all kinds of top notch DeFi protocols including a cutting-edge AMM DEX, modules, Decentralised Liquid Staking for Setheum SE and ethical zero-interest halal stablecoins that gives us the properties of both Fiat and Crypto with SlickUSD (USSD) and the Setter (SETR) using an Ethical Collateralized Debt Position (ECDP) mechanism that is over-Collateralized and multi-Collateralised and stable without compromising decentralisation or economic stability, offering zero-interest loans of stable cryptocurrencies that has scalable value and trust, setheum provides just that, backed by crypto assets with efficient zero-interest loans.
This project contains some configuration files to help get started 🛠️
Clone this repository:
git clone --recursive https://github.com/Setheum-Labs/SetheumInstall Rust:
curl https://sh.rustup.rs -sSf | shIf, after installation, running
rustc --versionin the console fails, refer to it to repair.
You can install developer tools on Ubuntu with:
sudo apt-get install -y git make clang curl pkg-config libssl-dev llvm libudev-dev protobuf-compiler build-essentialYou may need additional dependencies, checkout substrate.io for more info.
Make sure you have submodule.recurse set to true to configure submodules.
git config --global submodule.recurse trueYou can install required tools and git hooks:
make initThe make run command will launch a temporary node and its state will be discarded after you terminate the process.
make runUse the following command to build the node without launching it:
make buildThis command will start the single-node development chain with persistent state:
./target/release/setheum-node --devPurge the development chain's state:
./target/release/setheum-node purge-chain --devStart the development chain with detailed logging:
RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/setheum-node -lruntime=debug --devRun type check:
make check-allRun tests:
make testRun in debugger:
make debugPurge old chain data:
make purgePurge old chain data and run:
make restartUpdate Cargo:
make updateUpdate Submodules:
make update-submodulesUpdate ORML:
cd orml && git checkout master && git pull
git add orml
cargo update check-allUpdate Predeploy-Contracts:
cd blockchain/submodules/predeploy-contracts && git checkout master && git pull
git add predeploy-contracts
cargo update check-allNote: All build command from Makefile are designed for local development purposes and hence have SKIP_WASM_BUILD enabled to speed up build time and use --execution native to only run using native execution mode.
For Docs on running nodes, check ./docs/nodes.md
Once the project has been built, the following command can be used to explore all parameters and subcommands:
./target/release/setheum-node -hTo list all available release builds run:
git tagTo create a corresponding production build, first checkout the tag:
git checkout testnet-1Then run this command to install appropriate compiler version and produce a binary.
make releaseBuild the wasm runtime with:
make wasmmake generate-tokensNote: All build commands with SKIP_WASM_BUILD are designed for local development purposes and hence have the SKIP_WASM_BUILD enabled to speed up build time and use --execution native to only run use native execution mode.
Run runtime benchmark tests:
make benchRun module benchmark tests:
cargo test -p module-poc --all-featuresmake benchmarkRun the module benchmarks and generate the weights file:
./target/release/setheum-node benchmark \
--chain=dev \
--steps=50 \
--repeat=20 \
--pallet=module_currencies \
--extrinsic='*' \
--execution=wasm \
--wasm-execution=compiled \
--heap-pages=4096 \
--output=./modules/currencies/src/weights.rsBench bot can take care of syncing branch with master and generating WeightInfos for module or runtime.
Comment on a PR /bench module <module_name> i.e.: /bench module module_prices
Bench bot will do the benchmarking, generate weights.rs file push and changes into your branch.
Comment on a PR /bench runtime module <module_name> i.e.: /bench runtime module module_prices
Bench bot will do the benchmarking, generate weights.rs file and push changes into your branch.
You can create a fork of a live chain (testnet / mainnet) for development purposes.
- Build binary and sync with target chain on localhost defaults. You will need to use unsafe rpc.
- Execute the
Makecommand ensuring to specify chain name (testnet / mainnet).
make chain=testnet fork- Now run a forked chain:
cd fork/data
./binary --chain fork.json --aliceIf you would like to contribute, please fork the repository, introduce your changes and submit a pull request. All pull requests are warmly welcome.
In every interaction and contribution, this project adheres to the Contributor Covenant Code of Conduct.
The code in this repository is licensed under the GNU GPL Version 3 License
Unless you explicitly state otherwise, any contribution that you submit to this repo shall be licensed as above (as defined in the GNU GPL-3 Version 3.0 or later WITH Classpath-exception-2.0, without any additional terms or conditions.
