Livepeer is a decentralized live streaming platform built on the Blockchain. LPT is a platform for decentralized live video broadcast on the internet. By combining a blockchain-based crypto-token protocol with sound economic incentives and an open media server, Livepeer will aim to deliver a broadcasting solution that is cheaper, more scalable, and more decentralized than existing platforms.
Livepeer is a live video streaming network protocol that is fully decentralized, highly scalable, crypto token incentivized, and results in a solution that is cheaper to an app developer or broadcaster than using traditional centralized live video solutions. Users that participate in the Livepeer protocol have one of the following roles;
- Orchestrator: An orchestrator is a protocol-aware, smart, 24/7 process that is responsible to the end-user of the network for transcoding jobs being performed correctly
- Transcoder: A transcoder is a simple process that knows how to take an input segment of a video, and transcode it to the desired outcome
- Broadcaster: A broadcaster is a protocol-aware process that fulfills the demand side of the Livepeer network, it takes input streams from the end-user on its exposed RTMP interface to have them transcoded by the infrastructure providers running on Livepeer.
The Livepeer project aims to deliver a crypto-economically incentivized protocol and open media server for live video broadcasting. To achieve this Livepeer is building peer-to-peer infrastructure that interacts through a marketplace secured by the Ethereum blockchain.
The Livepeer Token (LPT) is the protocol token of the Livepeer network. But it is not the medium of an exchange token. Broadcasters use Ethereum's Ether (ETH) to broadcast video on the network. Nodes who contribute processing and bandwidth earn ETH in the form of fees from broadcasters.
LPT is a staking token that participants who want to perform work on the network stake in order to coordinate how work gets distributed on the network and to provide security that the work will get done honestly and correctly.
LPT has the following purposes:
It serves as a bonding mechanism in a delegated proof of stake system, in which the stake is delegated towards transcoders (or validators) who participate in the protocol to transcode video and validate work. The token, and potential slashing that occurs due to protocol violation, is necessary in order to secure the network against a number of attacks.
It routes work through the network in proportion to the amount of staked and delegated token, essentially serving as a coordination mechanism.
It is a unit of account that is specific to the Livepeer ecosystem, which forms the basis of a SectorCoin concept, applicable to additional functionality to be introduced in the future
The Livepeer Protocol defines how the various actors in a live streaming ecosystem participate in a secure and economically rational way. The two major areas that the protocol needs to address are the actual distribution of live video from the source to a large number of consumers in a performant and scalable way and the economic incentives for encouraging participation in the network in a secure and game-theoretic manner.
A Livepeer node is any computer running the Livepeer software.
|Broadcaster||Livepeer node publishing the original stream|
|Transcoder||Livepeer node performing the job of transcoding the stream into another codec, bitrate, or packaging format.|
|Relay Node||Livepeer node participating in the distribution of live video and passing of protocol messages, but not necessarily performing any transcoding.|
|Consumer||Livepeer node requesting the stream, likely to view it or serve it through a gateway to their app or DApp’s users.|
|Swarm||Content addressed storage platform. Data can be guaranteed to be available there temporarily during the verification process via SWEAR protocol|
|Livepeer Smart Contract||Smart contract running on the Ethereum network|
|Truebit||Blackbox verification protocol that guarantees the correctness of computation placed on chain (at a hefty cost)|
Livepeer has a two-layer consensus system. The LPT ledger and transactions are secured by the underlying blockchain, such as Ethereum. Any transfer of the LPT token or any transaction in the system can be considered to have been confirmed with the same security as the underlying Proof-of-work system or proof of stake blockchain.
The second layer, however, dictates the distribution of newly generated LPT. This is governed by the Livepeer Smart Contract, and participation in the protocol by various actors. While there is no consensus required per say, in terms of acceptance and validation of previous blocks, the protocol defines rules for participation and conditions upon which actors will be penalized (slashed) for failing to fulfill their role. This second level of consensus governing the newly generated token is based upon Delegated Proof of Stake (DPOS), as inspired by systems like Bitshares, Steem, Tendermint, and Casper.
Bonding + Delegation
In Livepeer, in order to indicate a stake in the network, nodes must bond some amount of their LPT. They do this through the Bond() transaction, which will tie up their stake in the smart contract until they Unbond (), at which point they will enter an unbonding state which will last for UnbondingPeriod time. Upon completion of the Unbonding Period they can then withdraw their LPT.
The bonded amount is used to delegate stake towards a Transcoder. The network supports N active transcoders at any one time, which is a moveable network parameter. Any node can indicate that it wishes to be a Transcoder with a Transcoder() transaction, and the protocol will select the N transcoders with the most cumulative stake (their own + delegated from other nodes) at the start of each round, along with one random transcoder from the waitlist.
Newly generated token in Livepeer is distributed to bonded nodes in relative proportion to the amount of work that they have bonded (minus fees), as long as they’ve delegated towards transcoding nodes that behave according to the protocol. Bonds can be slashed (reduced by a certain percentage) if the nodes that they’ve delegated towards do not behave and violate one of the slashing conditions. Nodes who have bonded and delegated towards a Transcoder also receive a portion of the fees that the Transcoder generates through transcoding jobs on the network. In essence, nodes who perform work, earn the fees that broadcasters paid for that work.
Broadcast + Transcoding Job
|Transcode Receipt Field||Description|
|StreamID||Identifies the origin node and stream that this segment belongs to.|
|Sequence Number||The sequential order that this segment belongs in the original stream|
|Input Data hash||The hash of the input segment data payload.|
|Transcoded Data hash||The hash of the output data after transcoding this segment.|
|Broadcaster segment signature||A signature from the broadcaster of Priv(StreamID, Seq#, Dhash) which can be used to attest and verify that the broadcaster claims this to be the true data for this unique segment.|
|Transcoder segment signature||A signature of all of the above fields from the transcoder attesting to the claim that this specific output transcoding was performed on this specific input.|
As a token that represents the ability to participate and perform work in the network through a DPoS staking algorithm, the initial Livepeer token distribution will follow the patterns of other DPoS systems which require a widely distributed genesis state. An initial allocation of the token will be distributed to the community at the genesis and over the early stages of the network. Recipients can use it to stake into the role of Transcoder or Delegator. A portion will be allocated to groups who contributed prior work and money towards the protocol before the genesis, and a portion will be endowed for the long-term development of the core project.
At the launch of the network, token issuance will continue according to an inflationary schedule with the token being generated at InflationRate per round relative to the outstanding float of the token. As the token is issued in proportion to stake of all bonded participants in the protocol, it serves to incentivize active participation. Participants are "protected" from this inflation, due to earning their proportional share. It is only inactive participants who are sitting on token without bonding it for participation, who will see their proportional network ownership diluted by this inflation.
The Livepeer project is concerned with decentralizing one-to-many live video broadcasts (multicast). This is the truest form of media distribution, as it allows a broadcaster to connect directly with their audience in a first-hand manner, free from alterations, after-the-fact interpretation, and spin. It gives everyone a platform to have a voice. Existing centralized solutions can suffer from censorship, third-party control over user data/relationship/monetization, and inefficient cost structures around payment for the service. Here are some of the logical use cases for applications and services to be built on top of Livepeer.
The role of governance within the Livepeer protocol is intended to be three-fold:
Determine the burning or appropriation of common funds which were slashed from misbehaving nodes.
Adjust network parameters to ensure a healthy, thriving network that is valuable to broadcasters.
Invoke proposed protocol updates in a decentralized fashion
Livepeer Protocol Transaction Types
|Bond()||Bond stake towards a transcoder.|
|Unbond()||Enter the unbonding state for the fixed UnbondingPeriod.|
|Transcoder()||Declare your intentions as a transcoder|
|ResignAsTranscoder()||Resign your intentions as a transcoder|
|TranscodeAvailability()||This transcoder is currently open to accepting another job. They’re in the pool to be assigned randomly on new job submissions.|
|Job()||Submit a transcoding job on chain|
|EndJob()||End the job to relinquish transcoding responsibility|
|Deposit()||Submit a deposit on chain that will be used and drawn against to pay for jobs.|
|Withdraw()||Withdraw from deposit and unbonded stake.|
|ClaimWork()||End the transcode job and make the claim of which segments you can prove you’ve transcoded via segment range and merkle root.|
|DistributeFees()||Transcoder claims the fees for a particular claim after verification.|
|Reward()||Does all the verifications on chain to either slash or distribute token allocations. Can only be invoked by a transcoder who is active in the current round, once per round|
|Verify()||Transcoder provides the transcode claims for segments which will be verified along with merkle proofs for comparison with merkle root from ClaimWork(). Explicitly call Truebit to perform verification.|
|InitializeRound()||This transaction needs to be invoked once after the new round's start block to initialize the new active transcoder pool.|
|UpdateDelegatorStake()||This allows a delegator to claim their fees + token allocation from previous rounds. It's invoked automatically through unbonding and bonding, but it serves as a failsafe in case the delegator would like to update without changing state.|
The Livepeer protocol incentivizes nodes to contribute their processing and bandwidth to the network in the service of transcoding and distributing live video. The verification of work is solved by a scalable extension on top of the Truebit protocol which incentivizes nodes to perform transcoding operations correctly in order to earn their fees and token allocations and preserve their value earning a role as a transcoder. The gamification of the network and falsework problem is solved via the economics of the delegated proof of stake block reward accounting. It becomes more economically rational to simply stake one's tokens towards a value-adding node than to pay fees into the network to be distributed to other delegators when performing work that there wasn't actually real demand for.
Did you find this article interesting?