2018-09-30 19:34:29 +02:00
# LBRY Consensus Algorithm
2018-07-13 20:03:21 +02:00
2018-09-30 19:34:29 +02:00
LBRY uses [proof of work ](https://en.bitcoin.it/wiki/Proof_of_work ) as a consensus mechanism, the same way that Bitcoin does.
2018-07-13 20:03:21 +02:00
2018-09-30 19:34:29 +02:00
LBRY has differences in hash function, block targeting, and difficult adjustment.
### Hash Mechanism
2018-07-13 20:03:21 +02:00
```python
intermediate = sha512(sha256(sha256(data))) # compute the sha512() of the double-sha256() of the data
left = ripemd(intermediate[:len(intermediate)/2]) # separately ripemd160 the left half
right = ripemd(intermediate[len(intermediate)/2:]) # and the right half
proof = sha256(sha256(left + right)) # concatenate the two halves, and double-sha256() it again
```
2019-01-12 20:34:10 +01:00
### Block Targeting & Difficulty Adjustment
2018-07-13 20:03:21 +02:00
2019-01-12 20:34:10 +01:00
The targeted time of each Lbry block is 2.5 mintues (150 seconds). Code used for the difficulty adjustment can be seen [here ](https://github.com/lbryio/lbrycrd/blob/master/src/lbry.cpp ).