Running a Transcoder

A lot of people have asked about participating as a transcoder in the testnet.

Transcoders dedicate computation resources to the network by running transcoding nodes. This means transcoders are doing work for the network by transcoding videos from broadcasters. In exchange, transcoders earn a fee from the broadcasters.

Transcoders also get to “claim rewards” from the network. This is similar to the miners getting “block reward” in Bitcoin. In its current implementation, the rewards will decline over time, similar to the Bitcoin network.

In order to get work, transcoders have to bond Livepeer token to themselves, or get other delegators to bond toward them. A good way to get delegators is by sharing a percentage of the fee and rewards. Top n transcoders will be active and eligible for doing work and claiming rewards.

Transcoders are responsible for invoking all Ethereum transactions involved in participating in the Livepeer protocol. This includes “initializing rounds”, “claiming work”, “verifying work”, and “claiming reward”. If a transcoder does NOT fulfill its duties, it will be slashed by the protocol.

The Livepeer node includes all of the above logic. To run a transcoder node, follow Becoming a Transcoder. Make sure it’s running on a stable machine with constant internet connection.

For now, there can be 5 active transcoders in the testnet. That number may change in the testing period.

The “Becoming a Transcoder” instructions listed above are good if you’re already gone through the pre-reqs of running a non-transcoder node. To summarize them here:

  1. Follow the “full node” instructions on the “Connect Yourself” tab here: http://eth-testnet.livepeer.org/ (this will initialize and start an ethereum node on our testnet.

  2. Use livepeer_cli to get test ETH.

  3. Use the livepeer_cli to get test Livepeer Token (LPT).

Now you should be able to follow the Becoming a Transcoder instructions above.

Depending on what geth version you’re running, some users have seen this error when initializing their ethereum network:

Fatal: invalid genesis file: json: cannot unmarshal string into Go struct field Genesis.number of type uint64

If you see this, open up the lpgenesis.json file in your editor, search for the field called “number”, and delete it (shown in this gif: https://cl.ly/3g3y0v2s0q1E)

Save the file with the number field deleted, and retry. It should work now.