Skip to content

Commit

Permalink
Merge pull request #25 from livepeer/dp/roundlock
Browse files Browse the repository at this point in the history
Round lock period price adjustment updates to Whitepaper and SPEC
  • Loading branch information
dob committed Apr 6, 2018
2 parents 1021be6 + 779f059 commit 90cdca3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
6 changes: 3 additions & 3 deletions SPEC.md
Expand Up @@ -423,7 +423,7 @@ in the transcoder pool with the least delegated stake, the user successfully reg

#### *Requirements*

A transcoder can change its rates during a round. A transcoder cannot change its rates during the lock period of a round.
A transcoder can change its rates during a round. A transcoder cannot change its rates upwards during the lock period of a round, but it can adjust its price/segment downwards towards the lowest candidate offered price/segment during the lock period of a round.

#### *Initial State*

Expand All @@ -436,7 +436,7 @@ A transcoder can change its rates during a round. A transcoder cannot change its
#### *Algorithm*

1. `T` calls `bondingManager.transcoder()` with percentage values for `rewardCut`, `feeShare` and `pricePerSegment`.
2. If the protocol is in the lock period of the round, abort.
2. If the protocol is in the lock period of the round, and the transcoder is attempting any change other than downwardly adjusting price/segment, abort.
3. Set the rates for `T` as a transcoder.

---
Expand Down Expand Up @@ -823,7 +823,7 @@ Each of the parameters are defined in the manager that they are the most relevan
| Parameter | Description | Default Value |
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| `roundLength` | Number of blocks in a round. | 5760 |
| `roundLockAmount` | Percentage of blocks in a round that are a part of the lock period during which transcoders cannot change their rates or enter/leave the transcoder pool. | 10 |
| `roundLockAmount` | Percentage of blocks in a round that are a part of the lock period during which transcoders cannot change their rates upwards, or enter/leave the transcoder pool. | 10 |

### BondingManager

Expand Down
6 changes: 4 additions & 2 deletions WHITEPAPER.md
Expand Up @@ -175,7 +175,9 @@ A node indicates their willingness to be a transcoder by submitting a `Transcode
- `BlockRewardCut`: The % of the block reward that bonded nodes will pay them for the service of transcoding. (Example 2%. If a bonded node were to receive 100 LPT in block reward, they would pay 2 LPT to the transcoder).
- `FeeShare`: The % of the fees from broadcasting jobs that the transcoder is willing to share with the bonded nodes who delegate towards it. (Example 25%. If a transcoder were to receive 100 LPT in fees, they would pay 25 LPT to the bonded nodes).

The Transcoder can update their availability and information up until `RateLockDeadline` time before the next transcoding round (Example 2 hours. They can change this information until 2 hours before the next transcoding round which lasts for `RoundLength` 1 day). This gives bonded nodes the chance to review the fee splits and token reward splits relative to other transcoders, as well as anticipated fees based upon the rate they're charging and network demand, and move their delegated stake if they wish. At the start of a transcoding round (triggered by a call to the `InitializeRound()` transaction), the active transcoders for that round are determined based upon the total stake delegated towards each transcoder, and stakes and rates are locked in for the duration of that round.
The Transcoder can update their availability and information up until `RoundLockAmount` time before the next transcoding round. This is offered as a % of the round. (Example 10% == 2.4 hours. They can change this information until 2.4 hours before the next transcoding round which lasts for `RoundLength` 1 day). This gives bonded nodes the chance to review the fee splits and token reward splits relative to other transcoders, as well as anticipated fees based upon the rate they're charging and network demand, and move their delegated stake if they wish. At the start of a transcoding round (triggered by a call to the `InitializeRound()` transaction), the active transcoders for that round are determined based upon the total stake delegated towards each transcoder, and stakes and rates are locked in for the duration of that round.

There is one change that is allowed during the `RoundLockPeriod`: The lowest offered price/segment for any of the candidate transcoders is locked in and can't be moved, but other transcoder candidates can adjust their price/segment downwards. This allows them to match the lowest offered price on the network if they wish in order to guarantee their stake-weighted share of work on the network. They are not allowed to move their offered price upwards during this period.

Here is an example state of Transcoder options that a delegator can review when deciding whom to delegate towards.

Expand Down Expand Up @@ -433,7 +435,7 @@ The end result is a scalable, pay-as-you-go network for decentralized live video
| `RoundLength` | Length of time between election of a new round of transcoders | 1 day |
| `InflationRate` | The current target inflation rate per round of LPT. (Moves algorithmically). | .04% (equivalent to 15%/year) |
| `ParticipationRate` | The target percent of token bonded vs liquid. | 50% |
| `RateLockDeadline` | Transcoders rates lock in this amount of time prior to the next round start time so that delegators can review and delegate accordingly. | 6 hours |
| `RoundLockAmount` | Transcoders rates lock in for this percentage of a round at the end of a round so that delegators can review and delegate accordingly without worrying about last minute rate changes. | 10% == 2.4 hours |
| `UnbondingPeriod` | Time between entering unbonding state, and ability to withdraw the funds. | 1 month |
| `VerificationPeriod` | The deadline for verifying a job claim after submission of the job claim. This also serves as the minimum period that a receipt of data persistence must be provided in the decentralized storage solution. | 6 hours |
| `VerificationRate` | The % of segments that will be verified. | 1/500 |
Expand Down

0 comments on commit 90cdca3

Please sign in to comment.