nirvanad

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2024 License: ISC Imports: 3 Imported by: 0

README

Nirvanad

Build Status Code Coverage GitHub release GitHub license GitHub downloads Discord users GoDoc

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
  • Open another terminal
$ 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.

Documentation

Overview

Copyright (c) 2023-2024 The Nirvana developers Copyright (c) 2018-2019 The kaspanet developers Copyright (c) 2013-2018 The btcsuite developers Copyright (c) 2015-2016 The Decred developers Copyright (c) 2013-2014 Conformal Systems LLC. Use of this source code is governed by an ISC license that can be found in the LICENSE file.

Nirvanad is a full-node nirvana implementation written in Go.

The default options are sane for most users. This means nirvanad will work 'out of the box' for most users. However, there are also a wide variety of flags that can be used to control it.

Usage:

nirvanad [OPTIONS]

For an up-to-date help message:

nirvanad --help

The long form of all option flags (except -C) can be specified in a configuration file that is automatically parsed when nirvanad starts up. By default, the configuration file is located at ~/.nirvanad/nirvanad.conf on POSIX-style operating systems and %LOCALAPPDATA%\nirvanad\nirvanad.conf on Windows. The -C (--configfile) flag can be used to override this location.

Directories

Path Synopsis
app
appmessage
Package appmessage implements the nirvana appmessage protocol.
Package appmessage implements the nirvana appmessage protocol.
rpc
cmd
nirvanawallet/libnirvanawallet/bip32/base58
Package base58 provides an API for working with modified base58 and Base58Check encodings.
Package base58 provides an API for working with modified base58 and Base58Check encodings.
consensus/utils/txscript
Package txscript implements the nirvana transaction script language.
Package txscript implements the nirvana transaction script language.
dagconfig
Package dagconfig defines DAG configuration parameters.
Package dagconfig defines DAG configuration parameters.
infrastructure
db/database
Package database provides a database for nirvanad.
Package database provides a database for nirvanad.
logger
Package logger defines an interface and default implementation for subsystem logging.
Package logger defines an interface and default implementation for subsystem logging.
network/addressmanager
Package addressmanager implements concurrency safe Nirvana address manager.
Package addressmanager implements concurrency safe Nirvana address manager.
stability-tests
daa
testing
Package util provides nirvana-specific convenience functions and types.
Package util provides nirvana-specific convenience functions and types.
bech32
Package bech32 provides a Go implementation of the bech32 format.
Package bech32 provides a Go implementation of the bech32 format.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL