-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a basic README.md file describing the installation process as well as the basic usage for `glcli`. Signed-off-by: Peter Neuroth <[email protected]>
- Loading branch information
Showing
1 changed file
with
143 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
# glcli | ||
|
||
`glcli` is a command-line interface for running a __Greenlight signer__ and | ||
operating a __Greenlight_node__. It is built on top of the `gl-client` library. | ||
|
||
## Features | ||
|
||
`glcli` is not yet feature-complete but already provides a basic set of | ||
commands necessary for everyday node operations. Planned future enhancements | ||
include additional commands and broader integration. | ||
|
||
* __Scheduler__: Interact with Greenlight's scheduler to provision and start nodes. | ||
* __Signer__: Run and interact with a local signer. | ||
* __Node__: Operate and control a lightning node hosted on Greenlight. | ||
|
||
## Installation | ||
|
||
Since `glcli` is not yet published on __crates.io__, you can install it locally | ||
using | ||
```bash | ||
cargo install --path=. | ||
``` | ||
Run this command from the `glcli` directory. | ||
|
||
### Prerequisites | ||
|
||
Ensure __Rust__ is installed on your system. If it is not installed, you can set | ||
it up using [Rustup]("https://rustup.rs/"): | ||
```bash | ||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | ||
``` | ||
|
||
### Build and Install Locally | ||
|
||
Navigate to the `glcli` directory and use __Cargo__ to install `glcli` into | ||
your `CARGO_HOME` (which defaults to `$HOME/.cargo/`): | ||
```bash | ||
cargo install --path=. | ||
``` | ||
Ensure that `CARGO_HOME/bin` is in your `PATH`. | ||
|
||
## Usage | ||
|
||
After installation, run: | ||
```bash | ||
glcli --help | ||
``` | ||
This will display an overview of the available commands. | ||
|
||
By default, `glcli` stores application data in the system's default data | ||
directory: | ||
* __Linux__: `$XDG_DATA_HOME` or `$HOME/.local/share` | ||
* __macOS__: `$HOME`/Library/Application Support | ||
|
||
To specify a custom data directory, use the `--data-dir` or `-d` option. For | ||
example: | ||
```bash | ||
glcli -d "${HOME}/.greenlight_node_1" node getinfo | ||
``` | ||
|
||
### Register a Node | ||
|
||
Before you can operate a Greenlight node you have to register one. Currently, | ||
you need an _invite code_ or a | ||
[developer certificate]("https://blockstream.github.io/greenlight/getting-started/certs/") | ||
to register a new node. `glcli` currently supports registration via an | ||
_invite code_ using the `--invite-code` option: | ||
```bash | ||
glcli scheduler register --invite-code=<YOUR_INVITE_CODE> | ||
``` | ||
|
||
### Run a Local Signer | ||
|
||
To operate your node, you need to attach a local signer to your Greenlight node. | ||
The signer is responsible for handling cryptographic signing operations, | ||
ensuring transaction security and validating requests before granting | ||
signatures locally. | ||
|
||
Start a local signer and attach it to Greenlight by running: | ||
```bash | ||
glcli signer run | ||
``` | ||
|
||
The signer now listens for incomming requests. | ||
|
||
### Operate a Greenlight Node | ||
|
||
_(Optional scheduling)_: When executing a `node` command, `glcli` will | ||
automatically start the node by calling Greenlight's scheduler if necessary. | ||
However, you can manually schedule your node in advance by running: | ||
```bash | ||
glcli scheduler schedule | ||
``` | ||
|
||
Once provisioned, you can interact with your node using `node` subcommands. For | ||
example to check the node's operational state: | ||
```bash | ||
glcli node getinfo | ||
``` | ||
|
||
## Advanced Bitcoin Network Configuration | ||
|
||
Greenlight supports running nodes on the `bitcoin` and `signet` networks, | ||
defaulting to `bitcoin`. To register a Greenlight node on `signet`, use the | ||
`--network` option: | ||
```bash | ||
glcli --network="signet" scheduler register | ||
``` | ||
Include the `--network` option in all susequent commands for this node. For | ||
example: | ||
```bash | ||
glcli --network="signet" signer run | ||
``` | ||
```bash | ||
glcli --network="signet" node getinfo | ||
``` | ||
|
||
_Please note that we __do not__ support `testnet` at the moment. Please open an | ||
issue describing your use case if you need support for other networks._ | ||
|
||
## Development | ||
### Build `glcli` | ||
```bash | ||
cargo build | ||
``` | ||
### Run Tests | ||
```bash | ||
cargo test | ||
``` | ||
|
||
## Contributing | ||
`glcli` is under active development and currently lacks many major commands from | ||
[Core-Lightning]("https://github.com/ElementsProject/lightning") such as | ||
`listinvoices`, `fundchannel`, `close` and `sendpay`. Contributions to | ||
add these and other missing commands are welcome. If you need a command | ||
that is not yet available, feel free to submit a pull request or open an issue | ||
describing your use case. | ||
|
||
If you encounter any bugs, please report them via an issue or contribute a fix | ||
through a pull request. | ||
|
||
## License | ||
`glcli` is licensed under the __MIT License__ |