From d19a9e64cd4fab10e48f317d5e4ebdb85ae0b665 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 8 Feb 2026 12:57:06 -0700 Subject: [PATCH] Adding stack image to README --- README.md | 2 ++ bch-api-dependency-graph.png | Bin 0 -> 25282 bytes 2 files changed, 2 insertions(+) create mode 100644 bch-api-dependency-graph.png diff --git a/README.md b/README.md index 2890158..6ea01e1 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ This is a REST API for communicating with Bitcoin Cash infrastructure. It replaces [bch-api](https://github.com/Permissionless-Software-Foundation/bch-api), and it implements [x402-bch protocol](https://github.com/x402-bch/x402-bch) to handle payments to access the API. +![psf-bch-api software stack](./bch-api-dependency-graph.png) + ## License [MIT](./LICENSE.md) diff --git a/bch-api-dependency-graph.png b/bch-api-dependency-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a48e713f796b33a8b5b74b155d85eca5d254a913 GIT binary patch literal 25282 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