From 14ce5410e5f35e6ec6e95e8e8a0e300f80b100f9 Mon Sep 17 00:00:00 2001 From: ramin Date: Sat, 27 Apr 2024 14:08:23 +0100 Subject: [PATCH] update README --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++--- cmd/relay/README.md | 5 ++-- cmd/relay/main.go | 2 +- cmd/sink/main.go | 3 +-- gateway/gateway.go | 4 +++ gateway/relay.go | 4 --- 6 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 gateway/gateway.go delete mode 100644 gateway/relay.go diff --git a/README.md b/README.md index 6d8073a..48ab407 100644 --- a/README.md +++ b/README.md @@ -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. @@ -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 diff --git a/cmd/relay/README.md b/cmd/relay/README.md index 82b0eef..8eb69dc 100644 --- a/cmd/relay/README.md +++ b/cmd/relay/README.md @@ -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) diff --git a/cmd/relay/main.go b/cmd/relay/main.go index c3a4fda..fc952f6 100644 --- a/cmd/relay/main.go +++ b/cmd/relay/main.go @@ -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() diff --git a/cmd/sink/main.go b/cmd/sink/main.go index 13bef1b..8dd979b 100644 --- a/cmd/sink/main.go +++ b/cmd/sink/main.go @@ -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() diff --git a/gateway/gateway.go b/gateway/gateway.go new file mode 100644 index 0000000..144fe99 --- /dev/null +++ b/gateway/gateway.go @@ -0,0 +1,4 @@ +package gateway + +type Gateway struct { +} diff --git a/gateway/relay.go b/gateway/relay.go deleted file mode 100644 index 20146fa..0000000 --- a/gateway/relay.go +++ /dev/null @@ -1,4 +0,0 @@ -package relay - -type Relay struct { -}