Coder Social home page Coder Social logo

codingpeasant / blocace Goto Github PK

View Code? Open in Web Editor NEW
15.0 1.0 27.0 4.9 MB

Blocace is a distributed document database powered by the blockchain technology.

Home Page: https://www.blocace.com

License: Apache License 2.0

Go 99.49% Shell 0.51%
blockchain distrubuted-ledger-technology database search-engine cryptography golang

blocace's Introduction

blocace Logo

Build Status GoDoc Go Report Card License

Blocace is a distributed document database powered by the blockchain technology.

Note to Developers

  • This is a prototype.
  • The APIs are constantly evolving and designed to demonstrate types of functionality. Expect substantial changes before the release.

Install

Compile on Linux/macOS/Windows

Prerequisite: Go version: 1.12 or later; GCC 5.1 or later.

Windows may need to install GCC if missing before installing the dependencies. Linux may also need to install gcc using the corresponding package management tool, like yum install gcc on RedHat or alike. macOS may need to install Xcode Command Line Tools.

Build and run with Go Modules

git clone https://github.com/codingpeasant/blocace.git
cd blocace
export GO111MODULE=on # Go 1.12 and earlier
go get
go build -ldflags="-s -w -X main.version=0.0.6"
./blocace server

Download for Linux/macOS/Windows

If you'd like to try Blocace directly, please navigate to Releases and get the right binary for your OS/ARCH.

Docs

Checkout Blocace In 10 Minutes and Blocace APIs Reference

License

Blocace is licensed as Apache 2.0.

blocace's People

Contributors

codingpeasant avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

blocace's Issues

Use cache to temporarily store Account.ChallengeWord

The Account.ChallengeWord is persisted to DB right now and this doesn't support concurrent user authentication as the ChallengeWord can be overwritten by another client that tries to use the same account to authenticate.

A cache in memory should be introduced to store ChallengeWord for each account so that

  • all the ChallengeWord can be kept for multiple clients
  • /jwt requested ChallengeWord (whether success or failure) can be removed
  • expired ChallengeWord can be automatically removed from the cache (TTL: 60 seconds)

Create a data access layer interface

Now Blocace primarily uses BoltDB for persisting blockchain information. We need to:

  • Create an interface of the data access layer
  • Create a data access layer implementation for BoltDB to get rid of the repetitive DB API calls

It's beneficial when we want to add middle-wares like compression and encryption.

Increase test coverage

As this repo is growing, more quality controls needs to kick in. Now the code coverage is almost 0. We need to add necessary unit test and integration test cases. Any tests cases contributions are welcome!

This issue will remain open before we can achieve a satisfying coverage.

Implement p2p cluster

Now Blocace only supports single node mode. We need to utilize libp2p and a consensus algorithm to support clustering.

Proposing blockchain forest structure to maximize transaction per second and minimizing network volumes instead of maintaining a single blockchain containing all the transactions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.