Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 32 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Livepeer Node

Livepeer Node contains services and command-line tools for the Livepeer network.
It includes an orchestrator for Livepeer runners, standalone discovery,
a remote signer for network payments and discovery filtering, and a protocol CLI
for managing wallets, staking, earnings, funding, governance, and local signing.
Livepeer Node provides runner orchestration, discovery, payment signing, and
protocol commands for the Livepeer network.

| Executable | Role |
| --- | --- |
Expand All @@ -13,21 +11,34 @@ for managing wallets, staking, earnings, funding, governance, and local signing.
| `livepeer-signer` | Signs identities and payments, discovers orchestrators, and optionally publishes accounting events. |
| `livepeer-chain` | Inspects accounts and contracts, manages wallets, staking, earnings, funds, and governance, and signs files locally. |

The orchestrator supports persistent and single-shot sessions, HTTP streaming,
server-sent events (SSE), WebSockets, and Trickle channels. It can run locally
without payments or use Ethereum payment tickets. The signer requires chain
configuration.
## Install

## Build

Install the Go version declared in [go.mod](go.mod) or newer, then run from the repository root:
Linux releases include all executables and need no Go installation. This example
uses the GitHub CLI, `tar`, and `sha256sum`; choose a release and architecture:

```sh
make build
bin/livepeer version
bin/livepeer orchestrator --help
set -eu
version=v1.0.5
arch=amd64 # or arm64
release_dir="$HOME/.local/share/livepeer/$version"
(
mkdir -p "$release_dir"
cd "$release_dir"
gh release download "$version" --repo livepeer/node \
--pattern "livepeer-$version-linux-$arch.tar.gz" --pattern SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar -xzf "livepeer-$version-linux-$arch.tar.gz" --strip-components=1
sha256sum --check SHA256SUMS
)
export PATH="$release_dir/bin:$PATH"
livepeer version
```

Keep the executables together: `livepeer` dispatches to its sibling components.
Persist the PATH setting in your shell or use absolute executable paths in your
service configuration. For other platforms or source builds, see
[development](docs/development.md).

## Run a local example

This example forwards a request to a small HTTP service. It runs off-chain.
Expand All @@ -41,10 +52,10 @@ while true; do
done
```

In a second terminal, from the repository root, start the orchestrator:
In a second terminal, from the repository root with `livepeer` on PATH, run:

```sh
bin/livepeer orchestrator --config configs/orchestrator/local.example.toml
livepeer orchestrator --config configs/orchestrator/local.example.toml
```

In a third terminal, check readiness, discovery, and forwarding. Allow up to
Expand All @@ -62,28 +73,11 @@ runner and orchestrator with Ctrl-C in their terminals.

## Configure a deployment

Use [configuration and secrets](docs/configuration.md) for credentials, encrypted
Ethereum keystores and password files, and probe addresses. Then follow the
component guides:

- [Orchestrator](docs/orchestrator.md): dynamic/static runners, networking, TLS,
proxy URLs, limits, and payments.
- [Discovery](docs/discovery.md): standalone inventory collection, caching, and peer advertising.
- [Signer](docs/signer.md): chain access, price limits, authorization, and Kafka
accounting.
- [Chain commands](docs/chain.md): inspecting accounts, previewing and submitting
transactions, and signing files locally.
- [Payment recovery](docs/payment-recovery.md): backups, restart, and uncertain
transaction recovery.

Chain state changes perform a dry run by default. Add `--submit` to broadcast
and wait for successful inclusion. Use `--no-wait` for a single transaction
without replacements. Trickle retains five segments per channel, with a 10 MB
limit per segment and no global byte cap.

For tests, SDK fixtures, and packaging, see [development](docs/development.md).
The [documentation index](docs/README.md) links the operating guides and protocol
references.
Start with [configuration and secrets](docs/configuration.md), then choose a
component guide from the [documentation index](docs/README.md). Use
[payment recovery](docs/payment-recovery.md) for backups, upgrades, rollback, and
transaction reconciliation; [development](docs/development.md) covers tests,
SDK fixtures, and release packaging.

Imported or adapted code retains its original MIT notice in
[MIT notice](LICENSE).
6 changes: 3 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Documentation

Start with the [local example](../README.md#run-a-local-example) to build the
executables and send a request through an orchestrator.
Start with [installation](../README.md#install) and the
[local example](../README.md#run-a-local-example).

## Operating a node

Expand All @@ -12,7 +12,7 @@ executables and send a request through an orchestrator.
| [Discovery](discovery.md) | Collect and advertise orchestrator inventories without local runners or payments. |
| [Signer](signer.md) | Configure price limits, authorization, discovery, and Kafka accounting. |
| [Chain commands](chain.md) | Inspect accounts, manage stake and funds, and submit transactions. |
| [Payment recovery](payment-recovery.md) | Back up state, recover accounting events, and reconcile ticket redemptions. |
| [Payment recovery](payment-recovery.md) | Back up state, upgrade or roll back, and recover accounting/redemption work. |

## Developing and integrating

Expand Down
49 changes: 19 additions & 30 deletions docs/chain.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,25 @@
# Chain commands

The `chain` command manages stake, earnings, deposits, and other on-chain state
related to the Livepeer protocol. Use it to check balances, stake LPT, register
an orchestrator, withdraw funds, or vote on protocol proposals.

Run it as `bin/livepeer chain` or `bin/livepeer-chain`. Configure the blockchain
connection (RPC endpoint) using a
Run `livepeer chain` or `livepeer-chain` to inspect protocol state, manage funds
and stake, register orchestrators, and vote. Set RPC access in a
[chain config](../configs/chain/config.example.toml) or environment variables.
Accounts can be inferred from the shared keystore. Use `--account` or
`LIVEPEER_CHAIN_ACCOUNT` to select one; see [configuration and secrets](configuration.md).
Accounts are inferred from the keystore; use `--account` or
`LIVEPEER_CHAIN_ACCOUNT` to select one. See [configuration](configuration.md).

```sh
bin/livepeer chain --config /etc/livepeer/chain.toml account get
bin/livepeer chain --config /etc/livepeer/chain.toml stake bond ADDRESS --amount 10
livepeer chain --config /etc/livepeer/chain.toml account get
livepeer chain --config /etc/livepeer/chain.toml stake bond ADDRESS --amount 10
```

Transaction commands perform a dry run by default. Add `--submit` to sign and broadcast transactions and wait for
inclusion in a block. Submissions require a keystore matching the selected
account; reads and dry runs need no password.
Transactions dry-run by default. Add `--submit` to sign, broadcast, and wait for
block inclusion. Submissions need a keystore matching the selected account;
reads and dry runs need no password.

Prefix all commands below by `bin/livepeer chain`. Add `--config FILE` to load a configuration file, or `--help` to see a command's flags and defaults.
Prefix commands below with `livepeer chain`; add `--config FILE` or `--help` as needed.

## Accounts and protocol state

`account create --keystore-password-file /path/to/password` creates an encrypted
account in the shared keystore and prints its address. See
[keystore setup](configuration.md#prepare-a-keystore) for password preparation
and file overrides.
See [keystore setup](configuration.md#prepare-a-keystore) for account creation.

| Command | Purpose |
| --- | --- |
Expand Down Expand Up @@ -66,12 +59,11 @@ stake withdraw --lock-id ID

Use `stake get` to inspect stake, pending earnings, and the current orchestrator.

Bonding deposits liquid LPT from the wallet and includes any required ERC20 approval transaction. Redelegation
Bonding deposits wallet LPT, including any required ERC20 approval. Redelegation
moves existing stake; choose one mode. Unbonding creates a withdrawal lock.

Cancel-unbond restores the locked LPT to stake. If the account is still staked,
`ADDRESS` is optional: the LPT returns to the current orchestrator. If fully unbonded, `ADDRESS` is
required to choose an orchestrator.
Cancel-unbond restores locked LPT to the current orchestrator if still staked;
otherwise `ADDRESS` is required to choose one.

List outstanding locks with `stake locks`, filtering by either `--withdrawable`
or `--locked`. Paginate with `--from-id` and `--limit` (default 100, maximum 1000).
Expand All @@ -90,14 +82,11 @@ orchestrator reward-caller set ADDRESS
orchestrator reward-caller unset
```

Use `orchestrator get` for registration status and settings, and `orchestrator list`
for pool members.

`register` registers the configured account as an orchestrator. Unless the account is already
self-bonded, choose one staking source: wallet LPT, existing stake, or an unbonding
lock. Omitting the optional service URI preserves its current value; supply one
when none is configured. Supplied URIs
must be absolute HTTP/HTTPS URLs without credentials, query strings, or fragments.
`get` shows registration/settings; `list` shows pool members. To `register` the
configured account, choose one staking source unless already self-bonded:
wallet LPT, existing stake, or an unbonding lock. An omitted service URI preserves
the current value; supply one if unset. URIs must be absolute HTTP/HTTPS without
credentials, queries, or fragments.

`set-config` preserves omitted values; unchanged settings need no transaction.
Commission changes require an unlocked round. Calling `reward-caller set` authorizes another account to call
Expand Down
Loading
Loading