{"id":37187228,"url":"https://github.com/scaling-lightning/scaling-lightning","last_synced_at":"2026-01-14T21:45:16.468Z","repository":{"id":170141525,"uuid":"645308615","full_name":"scaling-lightning/scaling-lightning","owner":"scaling-lightning","description":"A Testing Toolkit for the Lightning Network","archived":false,"fork":false,"pushed_at":"2024-05-22T13:58:19.000Z","size":2713,"stargazers_count":63,"open_issues_count":14,"forks_count":7,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-05-22T15:05:02.344Z","etag":null,"topics":["bitcoin","developer-tools","lightning-network","testing"],"latest_commit_sha":null,"homepage":"https://twitter.com/ScalingLN","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/scaling-lightning.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-25T11:18:56.000Z","updated_at":"2024-06-21T07:11:25.884Z","dependencies_parsed_at":"2023-10-12T00:26:44.170Z","dependency_job_id":"e6e35fe0-a8f2-4c7d-bad8-499ed331f871","html_url":"https://github.com/scaling-lightning/scaling-lightning","commit_stats":null,"previous_names":["ohenrik/scaling-lightning","scaling-lightning/scaling-lightning"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/scaling-lightning/scaling-lightning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaling-lightning%2Fscaling-lightning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaling-lightning%2Fscaling-lightning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaling-lightning%2Fscaling-lightning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaling-lightning%2Fscaling-lightning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scaling-lightning","download_url":"https://codeload.github.com/scaling-lightning/scaling-lightning/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scaling-lightning%2Fscaling-lightning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T21:32:52.117Z","status":"ssl_error","status_checked_at":"2026-01-14T21:32:33.442Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bitcoin","developer-tools","lightning-network","testing"],"created_at":"2026-01-14T21:45:15.775Z","updated_at":"2026-01-14T21:45:16.463Z","avatar_url":"https://github.com/scaling-lightning.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![ScalingLN Twitter Banner](https://github.com/ohenrik/scaling-lightning/assets/647617/8511c586-7549-4e2b-ad6d-bf87419a624c)\n\n# Scaling Lightning - A Testing Toolkit for the Lightning Network\n\nThis initiative aims to build a testing toolkit for the Lightning Network protocol, its implementations, and\napplications that depend on the Lightning Network.\n\n[Project use cases](https://scalinglightning.com/docs/project-use-cases)\n\nThe goal is to collaborate as an industry to help scale the Lightning Network and the applications that depend on it.\n\n[Current Roadmap](https://scalinglightning.com/blog/2023/08/26/roadmap)\n\n[Full Documentation](https://scalinglightning.com/docs/project-use-cases)\n\n## Getting started\n\n\u003e **_The project is still far from complete_**.\n\nThe following is a quick start guide to get something running. Please refer to the [documentation](https://scalinglightning.com/docs/project-use-cases) for more info.\n\n### Prerequisites\n\n#### Kubernetes:\n\n  - If you are developing locally you can use Docker Desktop and enable\n    Kubernetes in the dashboard.\n  - Alternatively minikube works as an alternative to Docker Desktop. Please use `minikube tunnel` to enable traefik to get an \"external\" ip which the library and cli requires to communicate in to the sidecar clients.\n  - SL has also been tested on Digital Ocean's hosted K8s cluster\n  - Please let us know if you have run SL on a different cluster distribution such as Kind, K3s K0s or any other cloud provider\n\n#### Helm 3 and Helmfile:\n\n  Mac OS\n\n      brew install helm helmfile\n\n  Windows\n\n      scoop install helm helmfile\n\n  For Linux check your distros package manager, but you may need to download the binaries for helm and helmfile.\n\n#### Helm Diff:\n\n    helm plugin install https://github.com/databus23/helm-diff\n\n  \u003e **_NOTE:_** On Windows the plugin install does not complete correctly and you need to download the binary manually from https://github.com/databus23/helm-diff/releases . Unzip the diff.exe file and put it in the _helm/plugins/helm-diff/bin_ folder (the _bin_ folder has to be created). You can find the folder by running _\"helm env HELM_DATA_HOME\"_\n\n#### Traefik:\n\n```bash\nhelm repo add traefik https://traefik.github.io/charts\nhelm repo update\nhelm install traefik traefik/traefik -n sl-traefik --create-namespace -f https://raw.githubusercontent.com/scaling-lightning/scaling-lightning/main/charts/traefik-values.yml\n```\n\nCurrent version of Scaling Lightning supports Traefik version 3.0.0. If you have an older version of Traefik installed, you should upgrade it by running (this doesn't affect your existing network and is safe to do):\n\n```bash\nhelm uninstall traefik -n sl-traefik\nhelm repo update\nhelm install traefik traefik/traefik -n sl-traefik --create-namespace -f https://raw.githubusercontent.com/scaling-lightning/scaling-lightning/main/charts/traefik-values.yml\n```\n\n### Installation\n\nDownload binary for your system from [Releases](https://github.com/scaling-lightning/scaling-lightning/releases)\n\n    # untar to get binary\n    tar -xzf scaling-lightning-[version]-[os]-[architecture].tar.gz\n\n    # Mac OS only - mark file as safe so it will run\n    xattr -dr com.apple.quarantine scaling-lightning\n\n    # run - should print CLI help\n    ./scaling-lightning\n\n### Starting a Network\n\nTo spin up an example network with 2 cln nodes and 4 lnd nodes, run:\n\n    # Download example helmfile which defines the nodes you want in your network.\n    wget https://raw.githubusercontent.com/scaling-lightning/scaling-lightning/main/examples/helmfiles/public.yaml\n\n    # Create and start the network. Scaling lightning will use your currently defined default k8s cluster\n    # as specified in kubectl config get-contexts\n    ./scaling-lightning create -f public.yaml\n\nTo destroy the network run:\n\n    ./scaling-lightning destroy\n\n### Example CLI Commands\n\n    # list nodes on the network (names were taken from the helmfile)\n    ./scaling-lightning list\n\n    # get wallet balance of node named bitcoind\n    ./scaling-lightning walletbalance -n bitcoind\n\n    # get wallet balance of node named lnd2\n    ./scaling-lightning walletbalance -n lnd2\n\n    # send on-chain 1 million satoshis from bitcoind to cln1\n    ./scaling-lightning send -f bitcoind -t cln1 -a 1000000\n\n    # get the pubkey of a node named lnd1\n    ./scaling-lightning pubkey -n lnd1\n\n    # peer lnd1 and cln1 from lnd1\n    ./scaling-lightning connectpeer -f lnd1 -t cln1\n\n    # open channel between cln1 and lnd1 with a local balance on cln1 of 70k satoshis\n    ./scaling-lightning openchannel -f cln1 -t lnd1 -a 70000\n\n    # have bitcoind generate some blocks and pay itself the block reward\n    ./scaling-lightning generate -n bitcoind\n\n#### Using different Kubernetes namespaces\n\nBy default, `sl` namespace is used. If you want to use a different namespace, you can specify it in the helmfile.\n\nIf you use multiple namespaces, make sure that the endpoints that are used are not overlapping!\nAlso the release names (specified in the helmfile) should be unique across all namespaces, since traefik is using them name as a hostname!\nIf bitcoind is used with a different release name than the default ('bitcoind'), set that as the values:bitcoind:rpcHost for lightning nodes in the helmfile.\n(See localcustomnamespace.yaml)\n\n    # Download example helmfile that has a custom namespace\n    wget https://raw.githubusercontent.com/scaling-lightning/scaling-lightning/main/examples/helmfiles/local-custom-namespace.yaml\n\n    # Create the nework normally, the namespace is read from the helmfile\n    ./scaling-lightning create -f local-custom-namespace.yaml\n\n    # In the following commands use the --namespace flag to interact with the created namespace (otherwise it will default to sl)\n    ./scaling-lightning --namespace my-other-sl list\n\n### Run the above from code instead of CLI\n\nSee [examples/go/example_test.go](examples/go/example_test.go). This test takes around 3 minutes to pass on an M1 Macbook Pro so you may need to adjust your test runner's default timeout.\n\nExample go test command with extra timeout:\n\n    go test -run ^TestMainExample$ github.com/scaling-lightning/scaling-lightning/examples/go -count=1 -v -timeout=15m\n\n### Helpful Kubernetes commands\n\n    # list pods\n    kubectl -n sl get pods\n\n    # describe cln1 pod in more detail\n    kubectl -n sl describe pod cln1-0\n\n    # view logs of lnd1 node\n    kubectl -n sl logs -f lnd1-0\n\n    # view logs of a crashed bitcoind pod\n    kubectl -n sl logs -previous bitcoind-0\n\n    # view logs of lnd1's scaling lightning sidecar client (it handles our api requests and forwards them to the node)\n    kubectl -n sl logs -f -c lnd-client lnd1-0\n\n    # same for cln and bitcoind\n    kubectl -n sl logs -f -c cln-client cln1-0\n    kubectl -n sl logs -f -c bitcoind-client bitcoind-0\n\n    # get shell into lnd1\n    kubectl -n sl exec -it lnd1-0 -- bash\n\n    # view loadbalancer public ip from traefik\n    kubectl -n sl-traefik get services\n\n    # destroy all scaling lightning nodes in the default namespace\n    kubectl delete namespace sl\n\n    # uninstall traefik\n    kubectl delete namespace sl-traefik\n\n    # uninstall traefik alternative\n    helm uninstall traefik -n sl-traefik\n\nNote that the above commands assume you are using the default kubeconfig and context. You would need to add `--kubeconfig path/to/file.yml` or `--context mycluster` to all of the above commands if you wanted to look at a different cluster.\n\n### Your own configuration\n\nConfiguration is passed to the helm charts via setting values in the helmfile.\n\nPlease take a look in the [configuration](https://scalinglightning.com/docs/configuration) doc for a list of configuration options.\n\n## Why is this important?\n\nCurrently, there are unknowns and untested assumptions about how the Lightning Network and its applications will react\nto shocks in transaction volume, channels, nodes, gossip messages, etc.\n\nHaving a set of tools and a signet Lightning Network will help:\n\n- Developers test their applications.\n- Researchers verify their assumptions.\n- Operators test their infrastructure.\n- Novices learn how the Lightning Network and various applications work in a somewhat realistic environment without\n  risking real coins.\n\n## How will it work?\n\nWe are still in the early stages of planning, but the first tool we are building will be a tool to quickly generate one\nor more Lightning Nodes. These nodes can connect either to a public signet Lightning Network or a private Regtest\nLightning Network for any combination of LN implementations (CLN, LND, LDK, Acinq etc.).\n\nOther tools, made specifically for testing isolated parts of the protocol, are also relevant. These can help developers\nand researchers test their assumptions in an isolated environment. An example of this is\n[The Million Channels Project](https://github.com/rustyrussell/million-channels-project-data) developed by Rusty Russell\nto test gossip.\n\n### How is this different from Polar?\n\nWhile Polar is an excellent project it is fundamentally different from what we want to achieve with the Scaling Lightning initiative. Polar is a desktop application meant to manually build a network through a drag and drop interface, which is great for novices and simple projects. However, it's not something that is suitable for a developer or testing environment at a startup or as a researcher.\n\n## Project milestones\n\nThis is an outline of the project's milestones. We will further detail these milestones using the features of GitHub's milestones and project management tools:\n\n- [x] Create a basic kubernetes setup for running a Lightning Network\n- [x] Define file format to describe initial state of the network\n- [ ] Create a helm chart and sidecar client for each Lightning Network implementation\n  - [x] LND\n  - [x] CLN\n  - [ ] LDK\n  - [ ] Eclair\n- [ ] Create a helm chart and sidecar client for communication with Bitcoin Nodes\n  - [x] Bitcoind\n  - [ ] btcd\n- [ ] Create a library for programmatically interacting with the clients\n  - [x] Go\n  - [ ] Rust\n  - [ ] Python\n  - [ ] JavaScript\n  - [ ] JVM\n- [x] Create a cli version of the library\n- [ ] Create or use a tool for generating or simulating network activity\n  - [ ] Internal tool\n  - [ ] SimLN\n- [ ] Facilitate running a public signet node or network\n- [ ] Facitlitate interoperability and regression testing of the main Lightning Network implementations\n- [ ] Facilitate testing research questions such as new routing algos or channel jamming mitigations\n- [x] Thoroughly document the project and provide instructions for use\n\n## How can you help?\n\n- Please give us feedback on the project and your lightning testing use cases\n- Directly contributing code, issues and feature requests\n- We encourage researchers to help design general tools relevant to them\n- Donate to the project to help fund development and maintain the signet Lightning Network\n\n## How can you reach us?\n\nIf you have any questions or want to join the project you can reach us here:\n\n- Telgram: https://t.me/+AytRsS0QKH5mMzM8\n- Twitter: https://twitter.com/ScalingLN\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscaling-lightning%2Fscaling-lightning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscaling-lightning%2Fscaling-lightning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscaling-lightning%2Fscaling-lightning/lists"}