GithubHelp home page GithubHelp logo

livepeer / livepeer-monorepo Goto Github PK

View Code? Open in Web Editor NEW
167.0 10.0 71.0 91.18 MB

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

Home Page: https://livepeer.org

License: MIT License

JavaScript 69.29% HTML 2.99% CSS 0.11% TypeScript 27.40% Dockerfile 0.22%
peer-to-peer livestreaming ethereum dapp graphql react apollo p2p

livepeer-monorepo's Introduction

LivepeerJS


Discord CircleCI Code Climate license code style: prettier Commitizen friendly lerna Contributions welcome

The Livepeer project aims to deliver a live video streaming network protocol that is fully decentralized, highly scalable, crypto token incentivized, and results in a solution which can serve as the live media layer in the decentralized development (web3) stack. You can learn more about the protocol and economic incentives by reading our whitepaper.

This monorepo contains JavaScript tools and applications that interact with Livepeer's smart contracts and peer-to-peer network.

Table of Contents

Requirements

This project requires node >=10.0.0 and yarn >=1.0.0. A unix shell is also required.

Getting Started

To get started, clone the repo and install its dependencies:

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

For development purposes there's a top-level dev script that will watch and continuously compile all packages concurrently:

yarn dev

For next steps, take a look at documentation for the individual package(s) you want to run and/or develop.

Contributing

Thanks for your interest in LivepeerJS. There are many ways you can contribute. To start, take a few minutes to look over the official guide:

Read the "Contributing to LivepeerJS" Guide »

We happily await your pull requests and/or involvement in our issues page and hope to see your username on our list of contributors 🎉🎉🎉

Packages

Published

Name                                         Version             Description
@livepeer/chroma npm A component library that contains some UI building blocks for livestreaming video applications.
@livepeer/lpx npm A command line protocol explorer. It has a console mode that allows you to interactively use the sdk.
@livepeer/sdk npm A module for interacting with Livepeer's smart contracts. A core dependency of most LivepeerJS projects.

Private

Name Description
@livepeer/player A video player for the web. Lets you see what's live streaming on the network. Our hosted media player runs off of this project. See it live at media.livepeer.org
@livepeer/subgraph Subgraph manifest for The Graph

Resources

To get a full idea of what Livepeer is about, be sure to take a look at these other resources:

livepeer-monorepo's People

Contributors

adamsoffer avatar blake41 avatar darkdarkdragon avatar davekaj avatar dependabot[bot] avatar dob avatar ericxtang avatar eswarasai avatar hugomarisco avatar iameli avatar iamonuwa avatar j0sh avatar jakeburden avatar jozanza avatar kyriediculous avatar mariano-aguero avatar mkpdev avatar palevoo avatar pblvrt avatar pumpkingwok avatar randy1burrell avatar s1nus avatar samparsky avatar subramanianv avatar wohlner avatar ya7ya avatar yondonfu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

livepeer-monorepo's Issues

README

Just tracking an issue for us to update the README with usage instructions.

Add link to report issues to the Livepeer media player DApp

Suggestion from @chrishobcroft: Direct users to forum.livepeer.org if they need help while using the player. This could be a note at the bottom that says, "Need help or experiencing issues? Visit forum.livepeer.org"

It would be good to start building up content around tech support so that we can always point folks to the repeated issues that occur without having to rewrite answers each time.

Running YARN in Ubuntu 16.04.3 fails for livepeerjs

New Issue Checklist

Expected Behavior

...

Current Behavior

Running yarn should install all of the dependencies I will need to run the Livepeer Player locally.
The YARN command is failing.

Possible Solution

...

Steps to Reproduce (for bugs)

Build Media Player Locally

It is recommended on a fresh and updated version of Ubuntu 16.04.3 Server perform the following procedures. Note these procedures may or may not apply to other Ubuntu versions.

Install nodejs v8:

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs

$ node –v
 	  V8.9.4

$ npm –v
 	  5.6.0

Install YARN

With Yarn, developers still have access to the npm registry, but can install packages more quickly and manage dependencies consistently across machines or in secure offline environments.

$ sudo npm i -g yarn

$ yarn –v
  1.3.2

Per Josiah, I ran the following two commands:
$ sudo apt-get install libssl-dev)
$ sudo apt-get install build-essential)

Install livepeerjs

$ git clone https://github.com/livepeer/livepeerjs.git 
$ cd livepeerjs 

Run YARN to install all of the dependencies

$ yarn 

Context

I am trying to build the Livepeer player locally so I can then customize the webpage to fit the needs of prospective broadcasters. Executing the YARN command is failing. See console output below.

Your Environment

  • Environment name and version (e.g. Chrome 39, node.js 5.4):
  • Operating System and version (desktop or mobile):

I am running Ubuntu 16.04.3 server.

Console Output

ray@LivepeerPlayer:~/livepeerjs$ yarn
yarn install v1.3.2
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/chroma > [email protected]" has incorrect peer dependency "react@^15.0.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/chroma > [email protected]" has incorrect peer dependency "react-dom@^15.0.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/chroma > [email protected]" has unmet peer dependency "babel-runtime@^6.23.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/chroma > [email protected]" has incorrect peer dependency "react-dom@^15.4.2".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/explorer > [email protected]" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/explorer > [email protected]" has unmet peer dependency "redux@^2.0.0 || ^3.0.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/player > [email protected]" has unmet peer dependency "react@^0.14.0 || ^15.0.0 || ^16.0.0".
warning "workspace-aggregator-ef6ed143-7973-4d0a-89df-70cc643bd594 > @livepeer/chroma > jest > jest-cli > jest-runtime > [email protected]" has unmet peer dependency "babel-core@^6.0.0 || ^7.0.0-alpha || ^7.0.0-beta || ^7.0.0".
[4/4] Building fresh packages...
success Saved lockfile.
$ yarn build
yarn run v1.3.2
$ ./bin/build.sh
./bin/build.sh: 1: ./bin/build.sh: Syntax error: "(" unexpected
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Player - Local stream support

A very common workflow when trying to run a Livepeer node is to try to broadcast a stream, and then view it played back. Right now the docs point the user to play it back in the web player hosted at media.livepeer.org/player.html. This player will attempt to pull the stream from the local node if it's running, and if not, fall back to the CDN. It makes for a very nice first experience, even if the user hasn't sync'ed the entire blockchain and is just running in offchain mode, or trying to set up a private network.

We need to be able to maintain this experience, whether it's through the new hosted web player, or the new, upcoming explorer, or even just a separate local web player dapp that is distributed with Livepeer.

Stream is taking too long to load on iPhone 5S on 3G

When I load the stream

Can we make something in the player which checks:

  • the resolution of the viewer's screen

and then use Livepeer to transcode to the right frame size to fit the device.

Also, can we measure:

  • the power of the viewer's GPU
  • the download bandwidth available from the gateway

and use it to change the bitrate accordingly?

New player auto-start

Currently, when you load a channel in the new player, it requires the viewer to press the play button as well.

It should just start streaming automatically.

Explorer Transcoding View: Block reward cut and pending block reward cut should be given in %, not LPT

The following issues reference the transcoder view for an address in the explorer:
https://explorer.livepeer.org/accounts/0xFeBF35b94e16E018Ab5cA9aA1f66aaC1a1AB29E0/transcoding

Viewable in this screenshot:
https://cl.ly/3C320Y2z1c2P (note that the address in the screenshot is different than above because it was using my local metamask address reported in issue #25)

Expected Behavior

I expect the reward cuts to be given in %'s, not in LPT. I expect them to be 20%, as per the CLI.

Current Behavior

They are listed as 0 LPT.

Possible Solution

It's possible the explorer is pulling the wrong field to display that data. The CLI pulls it and displays it correctly.

Steps to Reproduce (for bugs)

  1. Visit https://explorer.livepeer.org/accounts/0xFeBF35b94e16E018Ab5cA9aA1f66aaC1a1AB29E0/transcoding
  2. View the current and pending reward cuts. Note that they're listed as LPT and are incorrect.

Context

Your Environment

  • Chrome on OS X, with Metamask running as the transcoder account.

Explorer - Transcoder View (transactions)

Issue #13 defines a view for transcoder data. This should be actionable to let users actually bond and elect transcoders.

  • Show token balance and bonding status for the user's web3 enabled account (Metamask, Parity, web3 to local node, etc).
  • Add a bond button that lets them specify how much LPT they'd like to bond.
  • Add a button next to each transcoder that allows them to delegate towards that transcoder.

These steps could potentially be combined into one step. Purely show them who they're delegating to, and if they choose to delegate button there's a request that asks them how much total LPT they'd like to deposit/bond/delegate in total. This could generate all the necessary transactions under the hood.

Player Does't Use Latest Stream

(Correct me if I'm wrong) I think the current player implementation takes the first available video for an Eth address and makes that the stream for the channel.

Because of the way our p2p network works, there is a problem with that - a new video stream will not be on the gateway node (exit node hooked up to the CDN), and therefore initially appear like it's not available. So if someone stops an old stream and immediately starts a new one, the old stream will appear to be still available in the CDN, and the new stream will appear to be unavailable.

One possible work-around is to always try and show the video with the highest JobID.

p.s - The stream usually becomes available after 5-15 seconds.

Explorer Transcoding View: Fee shares are off

The following issues reference the transcoder view for an address in the explorer:
https://explorer.livepeer.org/accounts/0xFeBF35b94e16E018Ab5cA9aA1f66aaC1a1AB29E0/transcoding

Viewable in this screenshot:
https://cl.ly/3C320Y2z1c2P (note that the address in the screenshot is different than above because it was using my local metamask address reported in issue #25)

Expected Behavior

I expect the fee shares to be listed as a % less than 100.

Current Behavior

They are listed as 100000%.

Possible Solution

They are supposed to be listed as 10%. The protocol stores these values as a numerator which gets divided by the protocols percent-divisor of 1,000,000. The solution is likely to divide this value by % divisor to get the resulting .10 == 10%.

Steps to Reproduce (for bugs)

  1. Visit https://explorer.livepeer.org/accounts/0xFeBF35b94e16E018Ab5cA9aA1f66aaC1a1AB29E0/transcoding
  2. View the current and fee shares. Note that they are listed as 100000%

Context

Your Environment

  • Chrome on OS X, with Metamask running as the transcoder account.

Buffer stalled error on player

When I request my stream in the player for the first time I often see a buffer stalled error and frag loop loading error as shown below, and the stream will not start. A refresh sometimes fixes it.

This is in Chrome on OS X.

screen shot 2018-01-17 at 11 42 23 am

Chroma: Streams freeze in fullscreen mode

Expected Behavior

In fullscreen mode the stream should advance after buffering, or start playing again when a new stream is discovered.
...

Current Behavior

Currently when the stream "freezes" in fullscreen mode, it never advances, even if the stream is working fine in other browsers. If you exit fullscreen mode and refresh the page, then the stream resumes fine. I also have a suspicion that when in fullscreen mode it is not discovering and playing new stream.

Possible Solution

I'm not sure. I would have to investigate what the semantics of the fullscreen UI are.

Steps to Reproduce (for bugs)

  1. View a stream at media.livepeer.org that is in progress.
  2. Fullscreen it
  3. Stop the stream, and restart the stream from the broadcast node.
  4. It should discover the new stream and start it, but it will likely just stay frozen.

Your Environment

  • Chrome on OS X.
  • Specifically it is running on the livepeertv account on the office extra laptop.

Explorer - Address View

Since all users are identified by their Ethereum address, the explorer should probably have an /address/<address> view. This view will likely be broken into different sections for broadcasting data, delegation data, transcoding data, and watcher data. Some of these sections may be empty if the user has never done a watcher transaction or never been an active transcoder.

General account section

  • Eth balance
  • Liquid LPT balance

Delegator section

  • Bonded amount
  • Delegated Amount
  • Transcoder delegated towards
  • Bonded status
  • Start round
  • Withdraw round
  • lastClaimTokenPoolSharesRound

(potential history of claiming token pool shares, but potentially an enhancement tracked separately)

Transcoding section

  • Current and pending fees/shares like on the all transcoders view.
  • I'm thinking there may be so much historical data to dig through for an individual transcoder in terms of all the jobs they've been assigned/claims they've made, verifications invoked/failed, etc that we probably want this on a /transcoder/ view.

Watcher section

  • History of watcher functions invoked and finders fees gained, linking to specific claims.

Bonding to an arbitrary address

We should allow token holders to bond to an arbitrary address (an address not in the transcoders list). This is useful when a brand new transcoder is campaigning to replace one of the current transcoders when the transcoder set is full.

Video Player Deployment - HTTPS & Redirection Policy

We need to make 2 updates to get the video player in a usable production state:

  • Secure access to our testnet geth node. Browser mixed-content policy means we need to run everything over the same protocol, and https > http if we want users to trust our apps. Here's one approach with nginx.
  • All 404s should return index.html. Right now, this works in bucket-land, but not once we get to Route 53. We can probably address this with a Cloudfront distro.

Let me know if I can help speed this along in any way.

Explorer -- profiles outside job box

Expected Behavior

The content stays inside the job box

Current Behavior

Many profiles overflow the job box.

image

Context

No functional impact, just styling

Possible Solution

Lazy fix is to set overflow:scroll on the flexbox

🐞Steps to Reproduce

Configure a broadcaster with many profiles, and start broadcasting. Check the broadcaster's jobs in the explorer.

🐞Your Environment

Happens on macOS Safari, Chrome, Firefox

🐞Console Output

N/A

New channel player not loading on mobile

On mobile the channel based player hangs on loading the stream, and never actually makes a request to get any segments for the stream. Tested in Safari and Brave browser.

Livepeer Academy - Intro To The Livepeer Protocol Explorer: Thursday, Mar 8. 8AM PST, 11AM EST, 5PM CET

Intro To The Livepeer Protocol Explorer

📆 Thursday, Mar 8. 8AM PST, 11AM EST, 5PM CET

The Livepeer Protocol Explorer is a dApp that helps users interact with and see what's going on inside of the protocol. In this ~1h call, I'll give an overview of project, show how to run it, and how you can contribute :octocat:.

If you're interested in building apps with Web3/EthJS, React, and GraphQL, then this is a call you might want to join.

Agenda

  • What is the protocol explorer?
  • Tech stack & project structure
  • Running the explorer
  • Contributing
  • Questions

Join the Community Call »

(This is an open community call open to all participants)

Intelligently Skip "Approve" during "Bond"

Expected Behavior

Bond should skip the approve step if the amount of token in question has already been approved.

Current Behavior

Bond submits the approve call every time we click Bond.

Context

Sometimes the approve transaction gets included in the blockchain, but for some reason the bond step does happen (for example, if approve takes a long time, we may time out in the middle of this action)

Possible Solution

Check and see if the bonding amount has already been approved.

Changing signing module to make sure there is replay protection

Expected Behavior

There should be replay protection for signed transactions so that they cannot be replayed on different networks once they are submitted on one network.

Current Behavior

Seems like ethjs-signer is used as the package for signing transactions in the SDK, but according to its README it currently DOES NOT have replay protection so it should not be used in a production setting.

Possible Solution

Another candidate package to use for signing transactions is ethereumjs-tx which does have replay protection.

Explorer can't bond with leading whitespace in LPT amount

Expected Behavior

Would like to bond token

Current Behavior

UI shows nothing/ no feedback after attempting to submit. JS console shows a regex error.

Context

Can't bond token as smoothly as I'd like; had to hunt around before figuring out there was a whitespace in there.

Possible Solution

Trim whitespace from the input

🐞Steps to Reproduce

  1. Take an amount of LPT and try to bond (eg, copy-paste from the bond UI)
  2. Ensure there is whitespace prefixed to bond amount
  3. Submit.

🐞Your Environment

  • Environment name and version (e.g. Chrome 39, node.js 5.4):
  • Operating System and version (desktop or mobile):

🐞Console Output

Uncaught Error: while converting number to string, invalid number value ' 0.588480889565364451', should be a number matching (^-?[0-9.]+).

Network and address status indicators in explorer

This is a small feature request. Not highest priority.

I think that if the explorer is using some state about the user derived from an extension like Metamask, the UI should give them some sense of this. For example it should display what network they're connected to (Livepeer Testnet), and what their current address is. The address should perhaps be clickable to take them to their account address page (/me).

Update sdk to support new pay with ETH and supported functions

See this PR in protocol which updated some methods in bondingManager and jobsManager to support paying fees in ETH: https://github.com/livepeer/protocol/pull/136/files

  • Two separate methods for withdrawing: withdraw() -> withdrawFees() and withdrawStake()
  • New functions named pendingStake() and pendingFees()
  • deposit() is now payable and accepts ETH instead of using approve() and then transferFrom()

If you have any questions @yondonfu can definitely point you in the right direction. Now broadcast from the web or mobile could easily be metamask or status enabled without requiring Livepeer token.

Channel Player Buffering?

It seems that when a broadcast is concluded, the player goes into a buffering mode, meaning the rotating graphic stays active like forever?

image

You can see the rotating circle in the center of the video.

Explorer: Add transcoder to the job history view in the broadcasting tab of a user account?

When people are broadcasting/testing/debugging they often have the question as to which transcoder was assigned to a specific broadcast. I believe we have enough information on chain to make the determination offchain and add it as a clickable link in the UI - in the job history area of the broadcasting tab of the account view.

Totally open to other options of exposing this data if we don't think it fits well in this specific spot however. It could also just be logged out on the node output.

Explorer delegate view delegate address display issue

The issue references this view: https://explorer.livepeer.org/accounts/0x5A4a992c26CbA8459Ec0d77f4c66216D2a8Fd18F/delegating

Expected Behavior

Delegate address should be displayed within the box and should be clickable, linking to the delegate's transcoder view.

Current Behavior

It overflows the box and is not clickable.

Possible Solution

Smaller font?
One long box that overflows two columns instead of two small boxes side by side?

Steps to Reproduce (for bugs)

  1. Visit https://explorer.livepeer.org/accounts/0x5A4a992c26CbA8459Ec0d77f4c66216D2a8Fd18F/delegating
  2. Observe the overflow in the delegate address box

Your Environment

Chrome on OS X

Player - StreamID Support

If a Livepeer broadcaster or developer knows the streamID for their specific stream, they should be able to make it available via the player. The easiest way I can think of to support this is to handle the url pattern

/stream/<streamID>

Currently the player accepts the channelID, and uses it to parse through the blockchain logs to determine the streamID so that it can make a request to the CDN for the .m3u8 file based on the streamID. In the case of the streamID being provided directly, it can avoid all the searching and just make the request directly.

Player - StreamID gets truncated

Right now we display the streamID on the player, but it's too long and gets truncated. When people end up wanting to share a specific streamID, we'll need to display the full version. We could either wrap, or use a smaller font for it.

https://cl.ly/3N0G2N1x2F1C

statistics

Is there any statistics regarding how many people access https://media.livepeer.org?

I think of something like Google Analytics (GA) that could be used to monitor basic metrics such as :

  • how many people connect to https://media.livepeer.org
  • how long do they watch videos
  • how many "not found" type of event users see on average

Ideally, the access to the statistics could be open for anyone to follow the growth of the network

Note: I'm just citing GA but I'm not sure this would be the right tool. Some decentralized solution could be a better fit if any exists. Interestingly, ethereum.org use GA.

Player - Fallback CDN Support

Just like the existing web player, we need fallback support to a gateway node + CDN combo so that non-Livepeer users can consume streams.

I know it may not be trivial out of the box with the current channel based player. But at least the fallback should work as it does currently if the streamID is provided directly. Perhaps different URL patterns/routes for invoking the player?

Another option is to extend the gateway server to actually be able to handle a channelID request and serve up a stream.

Marking stream as dead after 4 segments is leading to disrupted streams

I was watching the Livepeer tv replay, and the stream was playing fine. However the player kept killing it after seeing the same end segment 4 times. A refresh would have it immediately playing fine again for awhile.

I'm not sure the best algorithmic fix, but it feels like it's either polling too quickly, or that it would be better off trying more than 4 times. Either way the experience was disrupted when it didn't need to be, and it didn't detect good new content coming in, so there's probably a better heuristic to use.

Buffering isn't ideal...but even if the segments were slow to arrive, buffering then resuming would be better than marking permanently dead.

Explorer - Transcoders View (readonly)

Accessible at /transcoders, the transcoders view should list the active and candidate transcoder sets, with indication for who is active. In addition, it should include each transcoder's

  • Address (extended in future with ENS names)
  • Delegated Stake
  • Price/segment (current/pending)
  • BlockRewardCut (current/pending)
  • FeeShare (current/pending)
  • Last round it called reward

There is lots of additional metadata we could include such as a link to their transcode campaign post, and slashing/job statistics. Can file those enhancements separately.

Ethereum network name

If you metamask is not set to Rinkeby, the app will still work but most of the info will be empty.

Either showing the network name provided by Metamask/web3js, or showing a warning if it's not on Rinkeby could be useful to the user.

Explorer - Unbond fails if rewards aren't claimed

New Issue Checklist

Expected Behavior

I click "unbond" in the transcoder view of the protocol explorer on the transcoder that I am currently delegated to. I expect to be unbonded.
...

Current Behavior

I receive an error pop up with the failed transaction receipt metadata, indicating that all my gas was used and the transaction failed.
...

Possible Solution

I likely am not up to date on my fee claiming with this metamask based account. Perhaps the unbond transaction needs to kick off the round-by-round fee claiming under the hood before it can invoke the unbond() transaction.

Steps to Reproduce (for bugs)

  1. Visit the transcoder view of the explorer.
  2. Bond towards an active transcoder.
  3. Wait 24 hours (perhaps this could be as short as wait 100+ rounds or ~8 hours).
  4. Refresh the transcoder view.
  5. Unbond from the transcoder.
  6. Sign the transaction with metamask. Wait for the failure window to pop up.

Context

...

Your Environment

Chrome on OS X

Console Output

GraphQL error: {
  "receipt": {
    "blockHash": "0xef23d6b32a43d2246a0542fbc3e5b0ad1237c0af4199eb36135bfb5a70223953",
    "blockNumber": "f3df6",
    "contractAddress": null,
    "cumulativeGasUsed": "911a",
    "from": "0x5a4a992c26cba8459ec0d77f4c66216d2a8fd18f",
    "gasUsed": "911a",
    "logs": [],
    "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000",
    "status": "0x0",
    "to": "0x4bb510aaf8acaa7879a0a4650cf21731bb8b072c",
    "transactionHash": "0x96214299cb9c9b6f93903c1af32d5aed08f257f7c689b0354033666d5faa8fd5",
    "transactionIndex": "0"
  },
  "transaction": {
...

Player sometimes displays non-live segments

See: livepeer/go-livepeer#228

I know this may be tricky to fix because it's tied to the CDN caching policy, but often the player shows a single segment that is non live instead of showing that the broadcaster is offline. I'd imagine there's some frontend UX tests we can do to try and determine, such as count the # of segments included in the m3u8 playlist and using heuristics to guess if the broadcast is actually live or not.

Update SDK to Rinkeby protocol

New Issue Checklist

  • Re-generate protocol SDK according to the latest version (deployed on Rinkeby)

Let's deploy this after EthDenver and after we deploy the same version onto our own testnet.

Explorer delegate view missing data for last claim round, start round, withdraw round

This issue references: https://explorer.livepeer.org/accounts/0x5A4a992c26CbA8459Ec0d77f4c66216D2a8Fd18F/delegating

Expected Behavior

I expect to see 12736 as last claim round, and 12737 as start round.

Current Behavior

I see both as 0. It's unclear to me whether withdraw round is being pulled correctly, as it displays 0 as well, however that's also the correct value.

Possible Solution

It may not be reading the data correctly from the blockchain.

Steps to Reproduce (for bugs)

  1. Visit https://explorer.livepeer.org/accounts/0x5A4a992c26CbA8459Ec0d77f4c66216D2a8Fd18F/delegating
  2. Observe 0 in start round and last claim round

Your Environment

Chrome on OS X

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.