• Stars
    star
    173
  • Rank 220,124 (Top 5 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 8 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A SDK for implementing blockchain-based digital currencies

CryptoKernel

CryptoKernel is a C++ library intended to help create blockchain-based digital currencies. It contains modules for key-value storage with JSON, peer-to-peer networking, ECDSA & Schnorr key generation, signing and verifying, big number operations, logging and a blockchain class for handling a Bitcoin-style write-only log. Designed to be object-oriented and easy to use, it provides transaction scripting with Lua 5.3, custom consensus algorithms (e.g Proof of Work, Authorised Verifier Round-Robin) and custom transaction types.

K320

We have used Cryptokernel to implement an experimental digital currency called K320. Its name derives from its monetary policy – Milton Friedman’s K% rule at a rate of 320 basis points or 3.2% growth per year (https://en.wikipedia.org/wiki/Friedman%27s_k-percent_rule). This known rate removes the need for trust in the decisions of a central authority, making monetary supply policy completely transparent. K320 is designed to build up the initial money supply relatively quickly then switch to the K% rule for monetary growth.

In K320, blocks are produced every 2.5 minutes. The block reward starts at 100 coins per block, diminishing for 8 years until the year 2025 at block 1,741,620 and a supply of 68,720,300 coins. At this point the block reward switches to a constant 3.2% per year. At 210,240 blocks per year, that is .0000152% of total supply per block as reward. For example, the first block reward after the switch to the constant reward rate will be ~10.45; (0.000000152*68,720,300). For a more detailed description of this see: https://github.com/mit-dci/CryptoKernel/blob/master/src/client/multicoin.cpp#L80

K320 is currently implemented by default when you run the CryptoKernel software.

Building on Ubuntu 16.04

./installdeps.sh
premake5 gmake2
make

The resulting binary will be in the bin/Static/Debug directory.

It is also possible to compile with other options. See make help and premake5 --help for a list.

Usage

See the source files in src/client/ for example usage. CryptoKernel ships with a Proof of Work coin built-in called K320 that works out of the box. For more information about the API check the documentation.

To launch CryptoKernel as K320 with its default setup, simply write:

./ckd

To get a list of command line RPC commands use:

./ckd help

To make ckd run in daemon mode use:

./ckd -daemon

API Reference

Build the documentation with doxyblocks.

premake5 gmake2 --with-docs
make

Roadmap

(in no particular order)

  • Load external contract code to avoid duplication when propagating contracts
  • Standardised address format (not just public keys)
  • BFT consensus module
  • Raft consensus module
  • Proof of Stake consensus module
  • HD key generation

More Repositories

1

opencbdc-tx

A transaction processor for a hypothetical, general-purpose, central bank digital currency
C++
899
star
2

lit

Lightning Network node software
Go
551
star
3

mas.s62

MAS.S62 Spring 2018 course website
Go
331
star
4

utreexo

accumulator for bitcoin utxo set
Go
317
star
5

opencx

An open-source cryptocurrency exchange toolkit for implementing experimental exchange features
Go
201
star
6

tangled-curl

IOTA's hash function curl is broken
Python
173
star
7

6.892-public

Course information for 6.892 (Spring 2017)
110
star
8

zkledger

Privacy-preserving auditing for distributed ledgers
Go
65
star
9

rustreexo

Utreexo in rust
Rust
43
star
10

resources

Resources for getting started
42
star
11

zksigma

A library for generating non-interactive proofs of knowledge without trusted setup
Go
29
star
12

litpay

Lightning Network Payment Gateway
JavaScript
21
star
13

libutreexo

library for utreexo accumulator in c++
C++
20
star
14

Dictionary

A lisiting of terminology for internal consistent use at the DCI, but published to serve as reference externally. PR's welcome!
17
star
15

dlc-oracle-nodejs

A library for making Discreet Log Contracts oracles in NodeJS
TypeScript
14
star
16

utxohunt

utxohunt assignment for 6.892
Go
12
star
17

CryptoCurrency

Uses the CryptoKernel library to create a modular cryptocurrency.
C++
12
star
18

dlcspec

specification for discreet log contracts
11
star
19

pooldetective

Go
10
star
20

artistry

direct artist payments using blockchain
JavaScript
9
star
21

SmartSolar

Smart contracts to finance and orchestrate energy payments of solar PV systems.
C++
9
star
22

dlcoracle

Go
7
star
23

dlc-oracle-go

Library for making Discreet Log Contract Oracles in Go
Go
7
star
24

terraform-aws-opencbdc-tctl

terraform infrastructure for opencbdc-tctl
HCL
6
star
25

opencbdc-tctl

A large-scale, on-demand test orchestrator for opencbdc-tx
Go
6
star
26

Smart-Property

JavaScript
6
star
27

firmitas

A cryptocurrency market conditions simulator for testing algorithmic interest rate, quantitative easing and block reward changes
C++
5
star
28

cash-disclosure

5
star
29

dlc-oracle-go-samples

Samples of using the Discreet Log Contracts Oracle library
Go
4
star
30

research-guide

3
star
31

go-bverify

B-Verify in Go
Go
3
star
32

ck-wallet

React-native CK wallet
JavaScript
3
star
33

dlc-oracle-nodejs-samples

JavaScript
3
star
34

opencbdc-js

node-js module to interact with opencbdc-tx
JavaScript
2
star
35

lit-rpc-client-dotnet

Client for LIT's RPC server in .NET Core
C#
2
star
36

dlc-oracle-dotnet

Library for making Discreet Log Contract Oracles in .NET Core
C#
2
star
37

TransThunder

music streaming with micropayments
2
star
38

opencbdc-ui

a demo, browser-based wallet for opencbdc
Vue
1
star
39

lit-rpc-client-nodejs-samples

Samples of using the LIT RPC Client for NodeJS
JavaScript
1
star
40

lit-tracker

A node tracker for lit
JavaScript
1
star
41

config-files-archive

Archive of config files used for OpenCBDC instantiation, and tests
1
star
42

poolmonitor

Mining pool monitor
1
star
43

litvending

Making old vending machines Lit compliant
Python
1
star
44

lit-rpc-client-go-samples

Samples of using the LIT RPC Client for Go
Go
1
star
45

lit-rpc-client-nodejs

Client for LIT's RPC server in NodeJS (Typescript)
TypeScript
1
star