• Stars
    star
    153
  • Rank 238,388 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 7 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Livepeer protocol

CircleCI Coverage Status

Livepeer Protocol

Ethereum smart contracts used for the Livepeer protocol. These contracts govern the logic for:

  • Livepeer Token (LPT) ownership
  • Bonding and delegating LPT to elect active workers
  • Distributing inflationary rewards and fees to active participants
  • Time progression in the protocol
  • ETH escrow and ticket validation for a probabilistic micropayment protocol used to pay for transcoding work

Documentation

For a general overview of the protocol refer to the wiki resources.

Development

All contributions and bug fixes are welcome as pull requests back into the repo.

A note on branches as of LIP-73: Confluence - Arbitrum One Migration:

  • The confluence branch contains the latest contract code deployed on the Arbitrum One rollup. Since the core protocol is operating on Arbitrum One rollup going forward all contract code changes pertaining to the core protocol should be on this branch.
  • The streamflow branch contains the latest contract code deployed on Ethereum. Since the only operational contracts (not paused) on Ethereum, excluding the Controller, are the LivepeerToken and BridgeMinter the only contract code changes on this branch would be for those contracts.

The Arbitrum bridge contracts can be found in the arbitrum-lpt-bridge repository.

ERC20 Note

The Livepeer token is implemented as an ERC20 token in token/LivepeerToken.sol which inherits from the OpenZeppelin ERC20 token contract and all implemented ERC20 functions will revert if the operation is not successful. However, the ERC20 spec does not require functions to revert and instead requires functions to return true if the operation succeed and false if the operation fails. The contracts bonding/BondingManager.sol and token/Minter.sol do not check the return value of ERC20 functions and instead assume that they will revert if the operation fails. The Livepeer token contract is already deployed on mainnet and its implementation should not change so this is not a problem. However, if for some reason the implementation ever does change, developers should keep in mind that bonding/BondingManager.sol and token/Minter.sol do not check the return value of ERC20 functions.

Install

Make sure Node.js (>=v12.0) is installed.

git clone https://github.com/livepeer/protocol.git
cd protocol
yarn

Build

Compile the contracts and build artifacts used for testing and deployment.

yarn compile

Clean

Remove existing build artifacts.

yarn clean

Lint

The project uses ESLint for Javascript linting and Solium for Solidity linting.

yarn lint

Run Tests

All tests will be executed via hardhat.

Make sure to add relevant API keys inside .env file (by copying provided .env.example) to assist tests and deployments.

To run all tests:

yarn test

To run unit tests only:

yarn test:unit

To run integration tests only:

yarn test:integration

To run gas reporting tests (via hardhat-gas-reporter) only:

yarn test:gas

To run tests with coverage (via solidity-coverage) reporting:

yarn test:coverage

Deployment

Make sure that an ETH node is accessible and that the network being deployed to is supported by the hardhat.config.ts configuration.

export LPT_DEPLOYMENT_EXPORT_PATH=~/Development/lpt_contracts.json
yarn deploy

More Repositories

1

go-livepeer

Official Go implementation of the Livepeer protocol
Go
531
star
2

lpms

Livepeer media server
Go
271
star
3

wiki

Wiki for the Livepeer Project
204
star
4

livepeer-monorepo

JavaScript tools and applications that interact with Livepeer's smart contracts and peer-to-peer network
JavaScript
167
star
5

file-video

TypeScript
79
star
6

ui-kit

Livepeer UI Kit: Video primitives for React
TypeScript
64
star
7

studio

Livepeer Studio is your home for building, broadcasting, and publishing video on the open internet with the Livepeer Network. Effortlessly manage livestreams, video uploads, API keys, network usage, billing, and more.
TypeScript
63
star
8

grants

⚠️ DEPRECATED ⚠️ Please visit the new homepage at https://grants.livepeer.org
43
star
9

livepeer-swarm

POC implementation of Livepeer network node, built on Swarm and Devp2p
Go
39
star
10

docs

Livepeer documentation
MDX
37
star
11

awesome-livepeer

A community curated list of projects, tutorials, demos, and resources within the Livepeer ecosystem
HTML
33
star
12

merkle-mine

Token distribution based on providing Merkle proofs of inclusion in genesis state to generate allocation
JavaScript
29
star
13

stream-tester

Stream tester is a tool to measure performance and stability of Livepeer transcoding network
Go
22
star
14

catalyst

Livepeer's Decentralized Media Server
Go
21
star
15

org

Livepeer.org is the primary online resource for participants and users of the Livepeer network.
TypeScript
18
star
16

go-livepeer-basicnet

Basic p2p video streaming for Livepeer
Go
18
star
17

livepeer-lens-shortvideos

A demo TikTok clone built on top of Livepeer and Lens Protocol
JavaScript
18
star
18

LivepeerDesktop

Desktop Application For Livepeer (Out of date)
JavaScript
16
star
19

verification-truebit

WIP PoC verification system for the Livepeer protocol using Truebit
JavaScript
16
star
20

video-nft

SDK and CLI for minting video NFTs
TypeScript
14
star
21

webrtmp-sdk

SDK for streaming media via RTMP from the web.
TypeScript
12
star
22

arbitrum-lpt-bridge

A bridge to move LPT between Ethereum and Arbitrum
TypeScript
12
star
23

go-PPSPP

Go implementation of the Peer-to-Peer Streaming Peer Protocol (rfc7574)
Go
11
star
24

minecraft

LPT mining dapp
JavaScript
11
star
25

livepeer-demo-react-native

TypeScript
9
star
26

LIPs

Livepeer Improvement Proposals
9
star
27

transcode-cli

CLI transcoding tool
Go
9
star
28

verification-classifier

Metrics-based Verification Classifier
Jupyter Notebook
8
star
29

project-management

Livepeer open source ideas, dapps, and improvement proposals.
8
star
30

studio-sample-app

JavaScript
8
star
31

streamingviz

Network visualization server and client that allows livepeer to track popular events and visualize the network
Go
8
star
32

explorer

TypeScript
8
star
33

research

Organization of the current open research tracks within the Livepeer Project
7
star
34

ai-worker

Python
7
star
35

livepeer-nft-gate-example

TypeScript
6
star
36

design-system

Design system for Livepeer Inc Products
TypeScript
6
star
37

Broadcaster-Chat-App

an end to end tutorial on how to build a dapp on top of livepeer
JavaScript
5
star
38

interactive-video

For storing research results
JavaScript
5
star
39

subgraph

This repository contains the code for the Livepeer Protocol subgraph
TypeScript
5
star
40

livepeer-wowza

Livepeer + Wowza Integration Plugin
Java
5
star
41

task-runner

Background service that executes tasks from the Livepeer API. Mainly used for VOD.
Go
4
star
42

catalyst-api

Go
4
star
43

loki-client

GO client library for Grafana's Loki
Go
4
star
44

Aptos-NFT-Dapp

Sample app for creating video NFTs with Livepeer SDK on the Aptos blockchain
TypeScript
4
star
45

go-ethereum-p2p-test

testing ground for creating a p2p network on top of devp2p
Go
4
star
46

sorted-doubly-ll

ZeppelinOS EVM Package for a Sorted Doubly Linked List
JavaScript
4
star
47

player

Embeddable HLS player, optimized for Livepeer streams and assets.
TypeScript
4
star
48

test-harness

JavaScript
3
star
49

ethdenver

EthDenver Hackathon on 2/16-2/18 in Denver, Colorado
JavaScript
3
star
50

livepeer-monitoring

JavaScript
3
star
51

merkle-earnings-cli

CLI tool to generate, verify and claim snapshot earnings
TypeScript
3
star
52

livepeer-studio-docs

Livepeer Studio Documentation
JavaScript
3
star
53

video-nft-sample

JavaScript
3
star
54

chat

TypeScript
2
star
55

create-livepeer-app

JavaScript
2
star
56

livepeer-tv

Open source decentralised event app built with Next.js, and Livepeer Studio
TypeScript
2
star
57

polygon-video-nft

2
star
58

livepeer-truebit-bigchaindb

Prototyping collaboration between Livepeer, Truebit, and Bigchaindb
2
star
59

livepeer-gateway

Web Gateway To Livepeer's Video Stream Network
JavaScript
2
star
60

TranscodingVerification

Metrics-Based Transcoding Verification
C
2
star
61

community-governance

Community governance project management
2
star
62

testnet-services

Extra deployable services for running an internal test network
Go
2
star
63

tokenholders.livepeer.org

Livepeer tokenholder web site.
TypeScript
2
star
64

livepeer-ai-sdks

Auto-generated SDKs for interacting with the Livepeer AI Subnet.
Python
2
star
65

ai-video-frontend-playground

TypeScript
2
star
66

livepeer-js

JavaScript library for the Livepeer API.
TypeScript
2
star
67

go-livepeer-bitexact-verifier

Verification code based on bitexact comparison of video transcoding
Go
2
star
68

storj-livepeer-nodejs-example

Example nodejs code for uploading videos to Storj and transcoding with Livepeer
JavaScript
1
star
69

go-api-client

Implementation of a client for the Livepeer API written in Go
Go
1
star
70

action-gh-checksum-and-gpg-sign

Generate gpg signatures and checksums for release artifacts
Shell
1
star
71

discord-message-bot

Simple discord bot to capture discord engagement through messages.
JavaScript
1
star
72

livepeer-go

Go library for the Livepeer API.
Go
1
star
73

ethberlin

Livepeer collaboration with ETHBerlin Hackathon
1
star
74

web3storage-livepeer-nodejs-example

JavaScript
1
star
75

livepeer-charts

Livepeer Helm chart for Kubernetes
Smarty
1
star
76

production-success

Assisting developers building with Livepeer Studio
1
star
77

verification-computation-archive

Docker application for transcoding verification
JavaScript
1
star
78

livepeer-data

Data service from Livepeer platform.
Go
1
star
79

ffmpeg-plus-bunny

FFMpeg plus a copy of Big Buck Bunny in a Docker container
Dockerfile
1
star
80

streamer

Ruby
1
star
81

docker-livepeer

Base Livepeer Docker image
Shell
1
star
82

livepeer-ml

Python
1
star
83

action-gh-codesign-apple

GitHub action to generate codesigned binaries
Shell
1
star
84

livepeer-metrics

Simple Metrics Daemon
JavaScript
1
star
85

go-livepeer-ppspp

The VideoNetwork implementation using go-PPSPP
Go
1
star
86

devenv

Setting up a local test environment
Shell
1
star
87

product-discovery-playground

TypeScript
1
star
88

catalyst-uploader

Livepeer cloud storage upload utility. Called by Mist to upload video segments. Has CLI interface.
Go
1
star
89

action-gh-release-tags

Github Action to automatically grab tags about the current build for tagging assets (e.g. Docker images)
Shell
1
star
90

pagerduty-to-discord

Cloudflare worker that eats PagerDuty webhooks and spits Discord webhooks
JavaScript
1
star
91

poll-stats

Simple protocol app to display detailed information about votes on Governance polls
TypeScript
1
star
92

orchestrator-price-api

A tool for enhancing the price visibility in Livepeer ecosystem.
Go
1
star