Nirvanad
Nirvanad is the reference full node Nirvana implementation written in
Go (golang). It is a blockDAG
as a proof-of-work cryptocurrency with instant confirmations and
sub-second block times with a work-in-progress (WIP) attempt to
implement smart contracts as a side-chain. It is based on
the PHANTOM protocol, a
generalization of Nakamoto consensus.
Overview
Nirvana is a fork of Kaspa
introducing a GPU-centric fork as a solution to the dominance of ASIC
mining farms, aiming to empower small-scale miners and enhance
decentralization. We focus on bridging the gap between blockchain
technology, decentralized finance and the real world of payment systems
and traditional finance.
With Kaspa, our approach is one of friendly cohabitation. We operate
under the same protocol, enjoy similar advantages, and face
unidentified issues. Any significant improvements that need to be made
in the primary codebase will be shared back.
Small Scale Miners
The Nirvana Network team believes in decentralization and small-scale
miners. We will ensure long-term GPU-friendly mining.
Hashing Function
We initially started with kHeavyHash
and blake3
modifications
on-top. This algorithm is called NirvanaHashv1
. However kHeavyHash
and blake3
are not future proof in ASIC resistence. Therefore we've
launched already our testnet-1
with FishHash.
It is the worlds first implementation of FishHash with Golang in a
1bps blockchain.
NirvanaHashv1
is currently used in mainnet
and can be mined using the following miners maintained by the Nirvana
developers:
- Built-in CPU miner from
nirvanad
- Nirvana GPU miner as reference implementation of
kHeavyHash
with blake3
.
The following third-party miners are available and have added
NirvanaHashv1
:
NirvanaHashv2
is currently being investigated and tested in testnet-1
and can be mined using the following miners maintained by the Nirvana
developers:
- Built-in CPU miner from
nirvanad
- Nirvana GPU miner as bleeding edge and unoptimized reference implementation of FishHash.
There are no third-party miners available as of now.
Smart Contracts
The Nirvana Network team is launching an R&D project to connect the
Nirvana blockchain with other blockchain ecosystems using a smart
contract layer based on the Cosmos SDK.
This initiative aims to enhance interoperability, efficiency, and
innovation in the blockchain space. By leveraging the Cosmos SDK's
advanced features, we'll facilitate seamless transactions across
different networks, offering new opportunities for users and
developers.
Cosmos Hub
Cosmos is a highly attractive ecosystem due
to its innovative approach to blockchain interoperability, scalability,
and usability. By enabling different blockchains to seamlessly
communicate and exchange value, Cosmos opens up vast opportunities for
businesses and developers to build and deploy decentralized
applications that can operate across multiple blockchain environments.
This interoperability fosters a more connected and efficient digital
economy, potentially driving adoption and usage across various sectors,
including finance, supply chain, and beyond.
By connecting to Cosmos, we will open the door of a web3 ecosystem
connected to a complete network of other blockchain project, making
Nirvana Network more competitive and adaptable in the rapidly evolving
landscape of decentralized technologies.
Nirvana Sidechain
The creation of the Nirvana sidechain
with fast transaction times, smart contract capabilities, and a dual
coin model, designed to integrate seamlessly with the Cosmos ecosystem
and utilize the Nirvana (KLS) across all interconnected platforms,
signifies a strategic advancement in Nirvana Network.
This sidechain will not only enable quick and efficient
inter-blockchain transactions but also support complex decentralized
applications through its smart contract functionality.
The ability to use Nirvana (KLS) across the entire ecosystem will
ensure a unified and streamlined user experience, promoting greater
adoption and utility within the Cosmos network. This sidechain aims
to enhance scalability, foster innovation, and provide a flexible and
user-centric blockchain solution that meets the diverse needs of
developers, users, and investors within the Cosmos ecosystem.
Installation
Install from Binaries
Pre-compiled binaries for Linux x86_64
and aarch64
, Windows x64
and macOS x64
as universal binary can be downloaded at: https://github.com/Nirvana-Chain/nirvanad/releases
Build from Source
Go 1.19 or later is required. Install Go according to the installation
instructions at http://golang.org/doc/install.
Ensure Go was installed properly and is a supported version:
go version
Run the following commands to obtain and install nirvanad including
all dependencies:
git clone https://github.com/Nirvana-Chain/nirvanad
cd nirvanad
go install . ./cmd/...
Nirvanad (and utilities) should now be installed in
$(go env GOPATH)/bin
. If you did not already add the bin
directory
to your system path during Go installation, you are encouraged to do
so now.
Getting Started
Nirvanad has several configuration options available to tweak how it
runs, but all of the basic operations work with zero configuration.
- Add the following line to the end of the file:
export PATH=$PATH:$(go env GOPATH)/bin
Getting Started
Nirvanad has several configuration options available to tweak how it runs, but all
of the basic operations work with zero configuration.
Creating a wallet
- To create a wallet, you need to run nirvanad with utxoindex
$ nirvanad --utxoindex
$ nirvanawallet create
- You will be asked to choose a password for the wallet (a password must be at least 8 characters long, and it won't be shown on the screen you as you entering it). After that you should run this command in order to start the wallet daemon:
$ nirvanawallet start-daemon
- Do not close the first 2 terminals and open a new terminal and then run this in order to request an address from the wallet:
$ nirvanawallet new-address
- Your screen will show you something like this:
The wallet address is:
nirvana:qpff4xzlzfqertcuvztp0r8qlk59sd6y2asamplepm7nmryckumfy07nhwfur
- To see your secret seed phrase :
$ nirvanawallet dump-unencrypted-data
Note: Every time you ask nirvanawallet for an address you will get a different address. This is perfectly fine. Every secret key is associated with many different public addresses and there is no reason not to use a fresh one for each transaction.
At this point your can close the wallet daemon, though you should keep it running of you want to be able to check your balance and make transactions
Discord
Join our discord server using the following link: https://discord.gg/
Issue Tracker
The integrated github issue tracker
is used for this project.
Documentation
The documentation is a
work-in-progress.
License
Nirvanad is licensed under the copyfree ISC License.