All Projects → keep-network → keep-core

keep-network / keep-core

Licence: MIT License
The smart contracts and reference client behind the Keep network

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
solidity
1140 projects
typescript
32286 projects
Less
1899 projects
HCL
1544 projects

Projects that are alternatives of or similar to keep-core

datasacks
Tools to make Unity3D UI connections better.
Stars: ✭ 24 (-72.41%)
Mutual labels:  interoperability
Polkadex
An Orderbook-based Decentralized Exchange using the Substrate Blockchain Framework.
Stars: ✭ 223 (+156.32%)
Mutual labels:  interoperability
bnbridge.exchange
https://bnbridge.exchange
Stars: ✭ 43 (-50.57%)
Mutual labels:  interoperability
hashport-validator
Official repository containing the source code of the Hashport validators
Stars: ✭ 19 (-78.16%)
Mutual labels:  interoperability
linkedresearch.org
🌐 linkedresearch.org
Stars: ✭ 32 (-63.22%)
Mutual labels:  interoperability
speckle-qgis
QGIS Connector for Speckle 2.0
Stars: ✭ 17 (-80.46%)
Mutual labels:  interoperability
speckle-sharp
.NET SDK, Schema and Connectors: Revit, Rhino, Grasshopper, Dynamo, ETABS, AutoCAD, Civil3D & more.
Stars: ✭ 214 (+145.98%)
Mutual labels:  interoperability
jni
V wrapper around the C Java Native Interface
Stars: ✭ 15 (-82.76%)
Mutual labels:  interoperability
force-bridge-eth
Decentralized, trustless bridge between Ethereum and Nervos.
Stars: ✭ 32 (-63.22%)
Mutual labels:  interoperability
NetteAdapterForSymfonyBundles
[DEPRECATED due to only 20 downloads per 2 years] Read an article about this idea
Stars: ✭ 15 (-82.76%)
Mutual labels:  interoperability
ethrelay
Ethereum smart contracts that enable the verification of transactions of a "target" blockchain on a different "verifying" blockchain in a trustless and decentralized way
Stars: ✭ 34 (-60.92%)
Mutual labels:  interoperability
opendata
Finland national open data portal (avoindata.fi) source code.
Stars: ✭ 27 (-68.97%)
Mutual labels:  interoperability
SEPA
Get notifications about changes in your SPARQL endpoint.
Stars: ✭ 21 (-75.86%)
Mutual labels:  interoperability
ccn-lite
CCN-lite, a lightweight implementation of the CCNx protocol and its variations
Stars: ✭ 71 (-18.39%)
Mutual labels:  interoperability
hxtsdgen
TypeScript declaration file generator for Haxe JavaScript output target
Stars: ✭ 60 (-31.03%)
Mutual labels:  interoperability
cordage
Cordage: the blockchain interoperability project!
Stars: ✭ 52 (-40.23%)
Mutual labels:  interoperability
speckle-unity
AEC Interoperability for Unity through Speckle
Stars: ✭ 28 (-67.82%)
Mutual labels:  interoperability
speckle-server
The Speckle Server, Frontend, 3D Viewer, & other JS utilities.
Stars: ✭ 224 (+157.47%)
Mutual labels:  interoperability
promise
Common interface for simple asynchronous placeholders.
Stars: ✭ 66 (-24.14%)
Mutual labels:  interoperability
Objective-CPP
C++ compatibility library for Objective-C - Objective-CPP is a library intended to ease software development using Objective-C++. It declares categories on Objective-C classes, to work with the STL C++ types, such as std::string, std::vector, etc.
Stars: ✭ 37 (-57.47%)
Mutual labels:  interoperability

keep-core

Solidity contracts build status Go client build status Chat with us on Discord

The core contracts and reference client implementation behind the Keep network, a privacy, interoperability, and censorship-resistance toolkit for developers on Ethereum.

What’s a keep?

The network offers application developers keeps, small off-chain data containers for private storage and computation that can be opened, closed, and managed by smart contracts autonomously.

Keeps are maintained by stakers, actors who run nodes and have skin in the game, and collect fees for operating the network. When a new keep is opened, the requisite number of stakers are chosen via a BLS-based random beacon to maintain the keep, using a process called sortition.

The first type of keep launching with the network is the BondedECDSAKeep, allowing smart contracts to generate private keys and sign messages without endangering key material. ECDSA keeps mean decentralized signing, cross-chain applications, and new tools for custodial applications — from Solidity. This capability is used heavily by tBTC.

To learn more about ECDSA keeps, check out keep-ecdsa.

Getting Started

A good place to start is the the docs directory.

Running a Node

To run your own node in the Keep network, follow the run Random Beacon doc. Feedback on this process and the documentation is appreciated!

Moving to a new random beacon

The legacy core contracts of the random beacon are moved to the solidity-v1/ directory which can be referred as "v1". The newest "v2" random beacon contracts can be found in solidity/random-beacon directory. The full specification of the "v2" random beacon is written in rfc-19-random-beacon-v2.adoc.

dApp Developers

dApp developers will be most interested in the smart contracts exposing Keep’s on-chain facilities.

The core contracts can be found in the solidity-v1/ directory. They can be used to request miner-resistant random numbers, as well as creating and managing keeps. To generate new ECDSA key material and request signatures, the contracts can be found in keep-ecdsa.

Client Developers

Client developers will be most interested in the reference Keep Go client and CONTRIBUTORS file, as well as the RFCs and repo directory structure 👇

Directory structure

The directory structure used in this repository is very similar to that used in other Go projects:

keep-core/
  Dockerfile
  main.go, *.go
  docs/
  solidity/ (1)
    ecdsa/
    random-beacon/
  solidity-v1/ (2)
  cmd/ (3)
  pkg/ (4)
    net/
      net.go, *.go (5)
      libp2p/
    chain/
      chain.go, *.go (5)
      ethereum/
        gen/
          gen.go (6)
    relay/
      relay.go, *.go
  1. Core contracts of the Keep contracts. Random beacon contracts are stored under /solidity/random-beacon whereas ECDSA under /solidity/ecdsa.

  2. Legacy core contracts of the random beacon (v1). While the Keep network only uses Solidity at the moment, the directory structure allows for other contract languages.

  3. Keep client subcommands are implemented here, though they should be minimal and deal solely with user interaction. The meat of the commands should exist in a package fit for the appropriate purpose.

  4. All additional packages live in pkg/.

  5. The high-level interfaces for a package mypackage live in mypackage.go. net and chain are interface packages that expose a common interface to network and blockchain layers. Their subpackages provide particular implementations of these common interfaces. Only cmd/ and the main package should interact with the implementations directly.

  6. When a package requires generated code, it should have a subpackage named gen/. This subpackage should contain a single file, gen.go, with a // go:generate annotation to trigger appropriate code generation. All code generation is done with a single invocation of go generate at build time.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].