Hello Transcoders,
This is to inform you of some upcoming changes to the transcoder networking model and the action that will be required on your part.
The networking protocol between the broadcaster and transcoder is in the process of being replaced. Under the new protocol, transcoders will now be required to be publicly accessible, meaning if a transcoder is behind a NAT or firewall that blocks incoming connections, you’ll need to take steps to allow incoming traffic to the Livepeer RPC port. Those steps will be specific to your local configuration.
Additionally, to facilitate discovery, transcoders will be required to set a Service URI on the blockchain. This is the public IP (or host name) and port that the transcoder will be available on. The smart-contract protocol has not been upgraded yet to support the service URI; this will be done before the new networking protocol is released.
We have tried to make the ServiceURI process as painless as possible by auto-discovering your transcoder’s IP and setting a default port of 4433. This information is stored on the blockchain, associated with their node’s Ethereum address, and will be an additional transaction to submit when configuring a transcoder.
The Service URI will be set via livepeer_cli
option 14 (running in -transcoder
mode) as follows:
What would you like to do? (default = stats)
...
14. Set transcoder config
...
> 14
Current token balance: 9999999751067517588
Enter block reward cut percentage (default: 10) - >
Enter fee share percentage (default: 5) - >
Enter price per segment (default: 1) - >
Enter the public host:port of node (default: 192.168.1.125:4433)>
To accept the defaults, leave the field blank. Otherwise, set the value as appropriate.
With the service URI in place, setting the -publicIP
flag on transcoder startup will no longer be necessary. However, there will also be an additional option: the -publicAddr
flag , which must match the IP or host of the Service URI in case the local IP differs from what’s stored on the blockchain. There are a few reasons one would want to set -publicAddr
:
- Transcoder traffic is proxied
- Running a private Livepeer network
- ServiceURI is a host name
Once the smart contract protocol has been upgraded, we highly encourage all transcoders to set their ServiceURI as soon as possible. While there will be a transition period where the Livepeer node will print a warning if the Service URI is unset or mis-matched, a future upgrade will make this mandatory. If the Service URI does not match the public IP or the -publicAddr
name, then the node will refuse to start.
These changes are part of our ongoing effort to address stability on the Livepeer network by facilitating direct connections between the broadcaster and transcoder using battle-tested networking protocols such as HTTP/2. This also further decentralizes the network, since traffic between broadcasters and transcoders no longer have to be meditated by boot nodes, whether owned by Livepeer or otherwise. Fewer intermediate hops also decrease latency and cost, while increasing performance.
For more information on the new networking system and the changes involved:
The extant documentation (readme, wiki, readthedocs, etc) will also be updated to reflect this information as we roll out these changes.
A reminder to keep opsec in mind when running a public service. Disable root logins, authenticate users via SSH keys only, block unneeded ports, set appropriate service users and permissions, keep packages patched, monitor for odd behavior, and above all protect your Ethereum keys. This is by no means an exhaustive list; please stay on top of your node’s security.
Upwards and onwards!