GithubHelp home page GithubHelp logo

dougvk / keep-core Goto Github PK

View Code? Open in Web Editor NEW

This project forked from keep-network/keep-core

0.0 1.0 0.0 36.8 MB

The smart contracts and reference client behind the Keep network

Home Page: https://keep.network

License: MIT License

JavaScript 28.91% Go 55.96% Shell 0.74% Makefile 0.06% CSS 0.04% Dockerfile 0.15% HTML 0.05% HCL 1.20% Solidity 11.08% Less 1.79%

keep-core's Introduction

keep-core

CircleCI 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!

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/ 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)
  cmd/ (2)
  pkg/ (3)
    net/
      net.go, *.go (4)
      libp2p/
    chain/
      chain.go, *.go (4)
      ethereum/
        gen/
          gen.go (5)
    relay/
      relay.go, *.go
  1. While the Keep network only uses Solidity at the moment, the directory structure allows for other contract languages.

  2. 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.

  3. All additional packages live in pkg/.

  4. 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.

  5. 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.

keep-core's People

Contributors

afmsavage avatar alphastorm avatar battenfield avatar daramir avatar decanus avatar dependabot[bot] avatar dimpar avatar elderorb avatar eth-r avatar k0kk0k avatar kb0rg avatar l3x avatar liamzebedee avatar lispmeister avatar ljk662 avatar lukasz-zimnoch avatar mhluongo avatar michalinacienciala avatar michalsmiarowski avatar navneetlakra avatar ngrinkevich avatar nicholasdotsol avatar nkuba avatar pdyraga avatar pschlump avatar r-czajkowski avatar rargulati avatar shadowfiend avatar

Watchers

 avatar

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.