What is higan
Higan is a public, trustable, and unforgotten database for people who needs to be remembered.
For people who died because of COVID-19.
What does that mean?
Until now, there are 248,811 people who died because of COVID-19. Many people lost their families, friends, and heroes in this disaster. I think we need a place to remember these people.
Public - You can submit some information about people you know. And that information will be public, which means anyone can access it.
Trustable - The project is open source, you can build your own service and synchronize all the data.
Unforgotten - This is a blockchain project where all data is tracked and recorded. When more people are involved, the data is harder to tamper with and less likely to be lost.
In addition to COVID19, you can also record those people you love and respect. You can think of Higan as an Internet tombstone.
Higan
is a Japanese word(Chinese: 彼岸) for another place where the dead are going.
Higan Bana
is a Japanese word(Chinese: 彼岸花). It's a flower that is described in Chinese to guide the dead into the next reincarnation.
How I built it.
There are two separate projects, Higan and Higan-ui.
Higan
daoleno / higan
A public, trustable, and unforgotten database for people who needs to be remembered.
Higan ·
Higan is a blockchain project for building online tombstone for the dead.
Higan-ui - the front end of higan.
Why Higan?
People will forget, higan will not.
For one you love, for the people who died because of the COVID-19.
-
Data can be accessed by anyone.
-
Data can not be changed.
-
Anyone can setup his own higan.
Build
make install
Run local test node
sh init.sh
License
Higan is MIT licensed.
Higan is a blockchain project based on cosmos-sdk.
The Cosmos-SDK is a framework for building blockchain applications in Golang. It's like ruby-on-rails for ruby.
Higan is a cosmos-sdk
application. So as shown in the figure.
-
higancli
(command line tool of higan) will start a rest server that accepts API requests. - The rest server sends a request message to
higand
(ABCI APP developed through cosmos-sdk) viatendermint
. -
higand
will validate the message, handle it, and store the transaction in multistore, which is multiple key-value databases built intocosmos-sdk
. - Status and transactions will be synchronized in the P2P network via
tendermint
.
Here, cosmos-sdk has developed many modules such as auth, bank, etc. that allow you to easily develop a PoS-based blockchain.
Tendermint does the very heavy work of pBFT-based consistency layer, p2p layer, etc. and can easily synchronize the state between nodes
So what I need to do is develop a module called tombstone
.
This module handles my custom messages and writes the record to the multistore.
Eventually, there will be two programs, higand
to run the blockchain and higancli
to send or query transactions to higand
.
Higan-ui
Higan UI ·
The front end of the project higan.
Requirment
Run higan, and ensure rest-server is ok.
Config cors
in Nginx or anything similar.
Install
yarn install
Run project
yarn start
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
License
Higan is MIT licensed.
It is a very simple front end of the higand
server. It can display the records that have been stored on the blockchain, submit a record, show the height of the block, and show the number of records. It also has a very rudimentary search feature.
I use react, react-hooks, and tailwindcss to build it.
I really hate CSS
, thanks tailwindcss and tailwindui. Saved my life. Helped me build my first front-end project.
How I deployed it
Deploy higand and higancli rest-server to aws
I started an EC2 instance on AWS.
I use ansible to manage higan projects. If anyone is interested, I can open source it.
The ansible script performs some initialization work, creating a systemd service for higand and a systemd service for higancli rest-server.
Then there is an nginx that forwards the request to the REST service. Nginx configures some cors
header and turns on https.
I use cerbot to configure let's encrypt. It's very simple.
Deploy higan-ui to netlify
Just let netlify connect to my gitHub, and netlify will perform an automated deployment and provide free let's encrypt based encryption. I applied for my domain on godaddy. Then I switched to netlify's DNS resolution.
Finally
Welcome to contribute.
Top comments (0)