/finschia-sdk

A framework for building blockchains based LINE Blockchain Mainnet that is forked from cosmos-sdk(https://github.com/cosmos/cosmos-sdk)

Primary LanguageGoApache License 2.0Apache-2.0

The Finschia SDK is a framework for building blockchain applications in Golang. It is being used to build Finschia, the first implementation of the Finschia Mainnet. This is forked from cosmos-sdk at 2021-03-15.

WARNING: Breaking changes may occur because this repository is still in the pre-release development phase.

Note: Requires Go 1.20+

What is the Finschia SDK?

The Finschia SDK is an open-source framework for building multi-asset public Proof-of-Stake (PoS) blockchains, as well as permissioned Proof-Of-Authority (PoA) blockchains. Blockchains built with the Cosmos SDK are generally referred to as application-specific blockchains.

The purpose of Finschia SDK is to succeed to the objectives of Cosmos sdk while helping develop blockchains that require faster transaction processing to be applied to reality.

Why the Finschia SDK?

Cosmos-sdk, which created the philosophy of application-specific blockchain, established its status as a framework for various application blockchain development. Finschia SDK inherited this cosmos-sdk philosophy, addressing slow transaction processing problem that was difficult for cosmos-sdk to apply in real financial system. Real financial systems require thousands of processing performance per second, with Finschia SDK adding many performance improvements to meet that demand. The following work was carried out to improve performance.

  • Concurrent checkTx, deliverTx
  • Use fastcache for inter block cache and nodedb cache of iavl
  • Lock granularity enhancement

In addition, the following functions were added:

  • Virtual machine using cosmwasm that makes smart contracts possible to be executed
  • Use Ostracon as consensus engine instead of Tendermint

To learn about Cosmos SDK, please refer Cosmos SDK Docs.

Quick Start

Build

make build
make install

# you can see the version!
simd version

 

Configure

zsh init_node.sh sim {N(number of nodes), default=1}

 

Run

# run a node
simd start --home ~/.simapp/simapp0

# If N is larger than 1, run all node.
# simapp0 has other nodes as persistant_peer. 
simd start --home ~/.simapp/simapp0
simd start --home ~/.simapp/simapp1
...

Visit with your browser

 

Follow Guide

You can refer to the sample tx commands here. Test different commands to get a broader understanding of Finschia