{"id":23100055,"url":"https://github.com/keep-network/keep-core","last_synced_at":"2025-04-05T03:10:14.429Z","repository":{"id":37091525,"uuid":"100431867","full_name":"keep-network/keep-core","owner":"keep-network","description":"The smart contracts and reference client behind the Keep network","archived":false,"fork":false,"pushed_at":"2024-04-11T12:09:13.000Z","size":79353,"stargazers_count":107,"open_issues_count":295,"forks_count":72,"subscribers_count":18,"default_branch":"main","last_synced_at":"2024-04-13T00:15:12.474Z","etag":null,"topics":["cryptocurrency","interoperability","privacy"],"latest_commit_sha":null,"homepage":"https://keep.network","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keep-network.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.adoc","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-08-16T00:50:35.000Z","updated_at":"2024-04-15T09:45:09.653Z","dependencies_parsed_at":"2023-02-19T08:46:03.072Z","dependency_job_id":"ae7dd14c-6bc9-493c-9f57-425b86c8cb45","html_url":"https://github.com/keep-network/keep-core","commit_stats":{"total_commits":17269,"total_committers":57,"mean_commits":"302.96491228070175","dds":0.8719671086918757,"last_synced_commit":"843f0210d00931f538781eb1b00650e7d794c2b8"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-network%2Fkeep-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-network%2Fkeep-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-network%2Fkeep-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-network%2Fkeep-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keep-network","download_url":"https://codeload.github.com/keep-network/keep-core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247280272,"owners_count":20912967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptocurrency","interoperability","privacy"],"created_at":"2024-12-16T23:29:32.982Z","updated_at":"2025-04-05T03:10:14.413Z","avatar_url":"https://github.com/keep-network.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"= keep-core\n\nhttps://github.com/keep-network/keep-core/actions/workflows/contracts-ecdsa.yml[image:https://img.shields.io/github/actions/workflow/status/keep-network/keep-core/contracts-ecdsa.yml?branch=main\u0026event=push\u0026label=ECDSA%20contracts%20build[ECDSA contracts build status]]\nhttps://github.com/keep-network/keep-core/actions/workflows/contracts-random-beacon.yml[image:https://img.shields.io/github/actions/workflow/status/keep-network/keep-core/contracts-random-beacon.yml?branch=main\u0026event=push\u0026label=Random%20Beacon%20contracts%20build[Random Beacon contracts build status]]\nhttps://github.com/keep-network/keep-core/actions/workflows/client.yml[image:https://img.shields.io/github/actions/workflow/status/keep-network/keep-core/client.yml?branch=main\u0026event=push\u0026label=Client build[Go client build status]]\nhttps://docs.threshold.network[image:https://img.shields.io/badge/docs-website-green.svg[Docs]]\nhttps://discord.gg/threshold[image:https://img.shields.io/badge/chat-Discord-5865f2.svg[Chat with us on Discord]]\n\nThe core contracts and reference client implementation behind the Keep network,\na privacy, interoperability, and censorship-resistance toolkit for developers on\nEthereum.\n\n== What's a keep?\n\nThe network offers application developers **keeps**, small off-chain data\ncontainers for private storage and computation that can be opened, closed, and\nmanaged by smart contracts autonomously.\n\nKeeps are maintained by stakers, actors who run nodes and have skin in the game,\nand collect fees for operating the network. When a new keep is opened, the\nrequisite number of stakers are chosen via a\nlink:https://blog.keep.network/whats-in-a-beacon-12c34b0bc078[BLS-based random\nbeacon] to maintain the keep, using a process called\nlink:https://en.wikipedia.org/wiki/Sortition[sortition].\n\nThe first type of keep launching with the network is the `BondedECDSAKeep`,\nallowing smart contracts to generate private keys and sign messages without\nendangering key material. ECDSA keeps mean decentralized signing, cross-chain\napplications, and new tools for custodial applications — from Solidity. This\ncapability is used heavily by https://tbtc.network/[tBTC].\n\nTo learn more about ECDSA keeps, check out\nhttps://github.com/keep-network/keep-ecdsa[keep-ecdsa].\n\n== Getting Started\n\nA good place to start is link:docs/[the docs directory].\n\n=== Running a Node\n\nTo run your own node in the Keep Network, follow the\nlink:https://docs.keep.network/run-keep-node.html[Run Keep Node] doc. Feedback\non this process and the documentation\nhttps://github.com/keep-network/keep-core/issues[is appreciated!]\n\n=== Moving to a new random beacon\n\nThe legacy core contracts of the random beacon are moved to the\nlink:solidity-v1/[`solidity-v1/`] directory which can be referred as \"v1\". The\nnewest \"v2\" random beacon contracts can be found in\nlink:solidity/random-beacon/[`solidity/random-beacon`] directory. The full\nspecification of the \"v2\" random beacon is written in\nlink:/docs/rfc/rfc-19-random-beacon-v2.adoc[`rfc-19-random-beacon-v2.adoc`].\n\n=== dApp Developers\n\ndApp developers will be most interested in the smart contracts exposing Keep's\non-chain facilities.\n\nThe core contracts can be found in the link:solidity-v1/[`solidity-v1/`]\ndirectory. They can be used to request\nlink:solidity-v1/contracts/IRandomBeacon.sol[miner-resistant random numbers], as\nwell as creating and managing keeps. To generate new ECDSA key material and\nrequest signatures, the contracts can be found in\nlink:https://github.com/keep-network/keep-ecdsa/blob/main/solidity/contracts/api/IBondedECDSAKeep.sol[`keep-ecdsa`].\n\n=== Client Developers\n\nClient developers will be most interested in the link:./main.go[reference Keep\nGo client] and link:./CONTRIBUTING.adoc[CONTRIBUTORS file], as well as the\nlink:docs/rfc/[RFCs] and repo directory structure 👇\n\n==== Directory structure\n\nThe directory structure used in this repository is very similar to that used in\nother Go projects:\n\n```\nkeep-core/\n  Dockerfile\n  main.go, *.go\n  docs/\n  solidity/ \u003c1\u003e\n    ecdsa/\n    random-beacon/\n  solidity-v1/ \u003c2\u003e\n  cmd/ \u003c3\u003e\n  pkg/ \u003c4\u003e\n    net/\n      net.go, *.go \u003c5\u003e\n      libp2p/\n    chain/\n      chain.go, *.go \u003c5\u003e\n      ethereum/\n        gen/\n          gen.go \u003c6\u003e\n    relay/\n      relay.go, *.go\n```\n\u003c1\u003e Core contracts of the Keep contracts. Random beacon contracts are stored\n    under `/solidity/random-beacon` whereas ECDSA under `/solidity/ecdsa`.\n\u003c2\u003e Legacy core contracts of the random beacon (v1). While the Keep network only\n    uses Solidity at the moment, the directory structure allows for other\n    contract languages.\n\u003c3\u003e Keep client subcommands are implemented here, though they should be minimal\n    and deal solely with user interaction. The meat of the commands should exist\n    in a package fit for the appropriate purpose.\n\u003c4\u003e All additional packages live in `pkg/`.\n\u003c5\u003e The high-level interfaces for a package `mypackage` live in `mypackage.go`.\n    `net` and `chain` are interface packages that expose a common interface to\n    network and blockchain layers. Their subpackages provide particular\n    implementations of these common interfaces. Only `cmd/` and the main package\n    should interact with the implementations directly.\n\u003c6\u003e When a package requires generated code, it should have a subpackage named\n    `gen/`. This subpackage should contain a single file, `gen.go`, with a `//\n    go:generate` annotation to trigger appropriate code generation. All code\n    generation is done with a single invocation of `go generate` at build time.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-network%2Fkeep-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeep-network%2Fkeep-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-network%2Fkeep-core/lists"}