Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
ramin committed Apr 27, 2024
1 parent 748a539 commit 14ce541
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 14 deletions.
60 changes: 56 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,72 @@

![EDO](./docs/images/edobtc.png)

The open source toolkit for building enterprise grade, cloud first, bitcoin infrastructure
The open source toolkit for building enterprise grade, cloud first, bitcoin infrastructure.

Building Bitcoin based cloud infrastructure platforms requires an advanced knowledge and experience of both Bitcoin and Cloud infrastructure. This project seeks to bake best practices from both, into an opinionated and delightful set of tools to address undifferentiated problems in a set components we have observed that "everyone" needs, and provide them in a robust enough way to be used as is.

## Problems

Problems we seek to address

- node provisioning
- integration with various cloud and infrastructure projects (eg: AWS, Digital Ocean, Cloudflare...)
- monitoring, reliability
- platform components
- data interchange (streaming, queues, async)
- analytics and storage

## Components

Each of these components is in a variety of readiness states, from "an idea" to "pretty full and working". Please reach out if any of these are relevant to you and you want help adding behavior, or making them work for your use case

[control plane](./cmd/controlplane/)

An overall control plane for orchestration of a Bitcoin platform, ie: node and cloud component provisioning, upgrading, rollout, deploy

[multiplex](./cmd/multiplex/)

A data multiplexer, ie: data from one source (ie: an Eclair node) and be multiplexed to other data providers (ie: an AWS kinesis stream)

[agent](./cmd/agent/)

an instance agent + sidecar for provisioned nodes which supports reliabilty, monitoring and provisioning in addition to supporting integration with other cloudkit components.

[relay](./cmd/relay/)

A event aggregator, where events are streamed/watched and conditions can be established as a ruleset upon which action can be taken

[cli](./cmd/relay/)

A cli toolkit of helpers for interacting with nodes, or cloudkit itself

[gateway](./cmd/gateway/)

A permission control proxy that can sit in front of any type of node, and add a layer regarding authentication, authorization and reliability

## Support

We endeavor to support all parts of the "Bitcoin ecosystem" that developers may be building upon, currently Bitcoin core, and the lightning implementation. If there is something that you think should be supported, or that is new that we don't know about, let us know.

**Warning**

This is alpha/WIP software in active development. Everything subject to change.

This is

## Development


## Setup

### macOS X

install golang (at time of writing `1.19`):
install golang (at time of writing `1.22.1`):

`brew install golang`

### Protocol Buffers / GRPC

We try and generate all types using protobuf and in most cases support these with a GRPC service ( though not always)
We try and generate all types using protobuf and in most cases support these with a GRPC service (though not always)

The goal in defining types with protobuf is to ensure some amount of modularity in building clients, adopting SOME parts of the cloudkit and not others, or cross language/project interoperability.

Expand All @@ -34,3 +81,8 @@ To generate:

`buf mod update`
`buf generate`


#### Testing

verify things are set up and working by running `go test ./...` from the root and if there is a fail, something has gone wrong
5 changes: 2 additions & 3 deletions cmd/relay/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

# About

relay is a event broadcaster tht can take event type a and broadcast to a different transport, eg:
relay is a event watcher that can take a group of requests, and perform sets of action upon them before processing to a downstream service, such as access control, batching, permissions, or withholding until paritcular time or event conditions are met

zmq -> aws sns
websocket -> kafka
(eg: only allow transaction x to be broadcast to y after z on chain condition is observed)
2 changes: 1 addition & 1 deletion cmd/relay/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func init() {

var rootCmd = &cobra.Command{
Use: "cloudkit-relay",
Short: "cloudkit-relay runs a handler for collecting keysend event streams and batch processing them",
Short: "cloudkit-relay runs a handler for collecting events event streams and batch processing them",

Run: func(cmd *cobra.Command, args []string) {
srv := server.NewServer()
Expand Down
3 changes: 1 addition & 2 deletions cmd/sink/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ func init() {

var rootCmd = &cobra.Command{
Use: "cloudkit-event-sink",
Short: "cloudkit-event-sink is a handler for broadcasting events to, which are aggregated and turned into transactions",

Short: "cloudkit-event-sink is a handler for watching events, aggregating them, or reponding to particular event conditions and taking action",
Run: func(cmd *cobra.Command, args []string) {
srv := server.NewServer()

Expand Down
4 changes: 4 additions & 0 deletions gateway/gateway.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package gateway

type Gateway struct {
}
4 changes: 0 additions & 4 deletions gateway/relay.go

This file was deleted.

0 comments on commit 14ce541

Please sign in to comment.