Open RaffiSapire opened 6 years ago
Grantee: Adam Soffer
https://github.com/adamsoffer/livepeerjs/projects/1?card_filter_query=no%3Alabel
https://github.com/adamsoffer/livepeerjs/milestones?direction=asc&sort=due_date&state=open
~10 hours of work per week over the course of 7 weeks for a total of 70 hours. This is subject to change pending the results of user interviews.
Great, thanks @adamsoffer. We are pleased to grant you 2,100 LPT to complete this application as you have laid forth. We can allocate it by milestone as you have laid forth in the engineering milestone link, and it will be paid bi-weekly as it has been. Thank you Adam for this amazing preparation and proposal that has been thought out and clearly you put in a lot of work already.
Please let me know if and when you'd like to check in for feedback in Jan.
🎉thank you! This is going to be a great feature and I'm excited to start building it. I'll reach out with a check in date for feedback.
NOTE: I understand that this RFP has already been granted, nevertheless I consider that if the budget allows it, it would be useful for the community to have a new contributor and two dApps with similar but not equal features and different approaches (this dApp is independent of the existing livepeer explorer dApp and also adds a Telegram bot). We will understand if it doesn't make sense to grant this RFP twice. We'll keep working on other RFP anyways.
The motivation behind the proposal is to deliver a positive change to the experience of token holders engaged in the Livepeer network.
The first objective is to contribute to the Livepeer ecosystem an open-source implementation for a pro-active alert notification experience that will help LPT token holders to be updated and understand how the transcoders they are delegating the tokens to are performing in near real time. The second goal is to proactively engage LPT holders on how much they’ve earned from inflation during the last days. The third goal is to proactively re-engage LPT holders who are not delegating yet or stopped delegation, so that we can positively impact target participation rate.
The service will enable token holders to sign up to receive notifications using their e-mails and/or telegram user and their Ethereum addresses . All the process will prioritize the user experience (UX).
Currently, token holders have no easy way of knowing if the transcoder they bond to fails to call reward, and therefore one may miss out an inflationary token as a token holder without ever knowing it. Furthemore, token holders want to know how their LPT tokens are performing by having insight information on earnings.
I like to receive an alert notification every day that tells me whether my transcoder called reward or not, and how much token I earned from inflation. I would like to receive this as an email and/or telegram notification.
Note: In a later release, a user will also be able to choose to get notified about other metrics, including network status and behaviour (e.g., total bonded, total supply, bounded transcoder performance, top 10 transcoders, inflation rate, etc.).
The platform will be open-source under the MIT license. https://github.com/livepeer/livepeerjs/blob/master/LICENSE
The application will be built using React and other libraries from the ecosystem, such as Redux, Immutable, etc.
Apart from coding best practices (unit tests, end-to-end tests, test coverage, code analysis coverage, etc.), the project will be configured to run in continuous integration and continuous deployment pipelines.
Back end will be implemented as a RESTful API that will store the alert information and monitor the changes in the Livepeer smart contacts to notify token holders.
The application will be built using Node.js, MongoDB, a e-mail service, a Telegram Bot and Livepeer.js. The application will be initially hosted on Heroku for high availability and security.
Phase | Scope | Deliverables | Estimated time |
---|---|---|---|
1 | 1) Superior UX/UI. 2) Focus on regular users. 3) Token holder access to summary page (livepeer account data) | 1) UX/UI designs. 2) Repositories and tooling setup (CI/CD, testing, coverage, etc.). 3) UI Implementation. 4) Token holder account summary page | 1.5 weeks |
2 | 1) Back end and e-mail notifications. 2) Deployment automation. 3) QA engineering. Stabilization, bug fixing small changes/improvements. | 1) Back-end development to interact with smart contracts leveraging Livepeer.js libraries. 2) E-mail notifications implementation. 3) Website hosted by Protofire for Livepeer to test | 1.5 weeks |
3 | 1) Telegram subscription and notifications. | 1) Telegram bot development using the developed software | 1/2 week |
Estimated delivery date: January 18th, 2019
We have developed a very similar solution for MakerDAO collateralized debt position (CDP) holders. It allows a CDP holder to monitor his/her CDPs and be notified when they go out of a collateralization ratio range and run the risk of being liquidated and incurring a penalty fee of 13% of an outstanding debt. The dApp is accessible here: http://cdpalert.org
$10k worth of LPT, split into chunks paid out over achieved deliverables.
Role | Member | Availability | Github/LinkedIn |
---|---|---|---|
Full-stack DApp developer | Mariano Aguero | Full-time | https://github.com/mariano-aguero |
Full-stack DApp developer | Franco Victorio | Part-time | https://github.com/fvictorio |
UX/UI designer | Gabriel Rodriguez | Part-time | https://github.com/gabitoesmiapodo |
Team Lead | Manuel Garcia | Part-time | https://linkedin.com/in/mgarciap |
Agile & Scrum with 1-week sprints. Every task published and tracked in github using waffle.io. Each sprint will finish with the publicly available demo or report.
Given that we are new to the Livepeer development community (Livepeer protocol, libraries and tools), our team has already started researching and implementing the application's main components (i.e.: backend integration with Livepeer through Livepeer.js, DB storage, frontend setup). The main tasks to come are related to UX/UI and the Telegram bot.
The project development status and plan is publicly accessible in this waffle board.
Development progress up to this date (12/28/2018): 40%
We are all part of ProtoFire.io. We are a team of engineers which helps token-based protocols and developer platforms accelerate growth of their ecosystems. By providing hands-on coding and contributions, Protofire specializes in supercharging developer adoption and network usage.
Our team has extensive experience developing DApps, from PoCs and prototypes to MVPs and more, just to mention a few:
App Description | Repo |
---|---|
AragonDAO - Payroll dApp for Aragon | https://github.com/aragon/aragon-apps/tree/master/future-apps/payroll |
FlightDelay - the first decentralized Flight Delay insurance on the Ethereum Blockchain. https://fdd.etherisc.com | https://github.com/etherisc/flightDelay |
Monitoring and alerting system for MakerDAO DAI Stablecoin CDPs (Collateralized Debt Position) | https://github.com/protofire/cdp-alert |
A dashboard that displays information about the 0x Protocol network traffic, including trades, addresses and statistics about transfers. | https://github.com/protofire/0x-dashboard |
Smart contracts and libraries for bzx.network, a protocol for next generation margin lending on 0x-standard relays | https://github.com/bZxNetwork/bZx-monorepo |
Easy MakerDAO DAI stablecoin borrowing for consumers | https://github.com/protofire/open-cdp |
A GitHub App built with Probot that finds duplicate links on newly opened issues for Aragon weekly. | https://github.com/protofire/aragon-links-bot |
DApp for proof of bank account (PoBA) attestation | https://github.com/poanetwork/poa-poba |
DApp for proof of physical address (PoPA) attestation for validators of POA Network | https://github.com/poanetwork/poa-popa |
A DApp to create token and crowdsale campaigns (ICO, TGE) on Ethereum compatible networks using open source Wizard. No coding skills required. Decentralized, open source, free | https://github.com/poanetwork/token-wizard |
POA Bridge in NodeJS, an interoperability solution between Ethereum networks for native to ERC20 and ERC20 to ERC20 cross chain transfers | https://github.com/poanetwork/bridge-nodejs |
A DApp for POA Bridge, a cross chain bridge between POA and Ethereum networks | https://github.com/poanetwork/bridge-ui |
ProtoFire.io maintains and contributes to open source projects like Solhint (Security and Style Guide validations for Smart Contract development) and eth-cli (a collection of CLI tools to help with ethereum learning and development)
@adamsoffer Thanks for taking this on, and for the organization around the development process and milestones. I was unable to access the invision mockups - do you have any screenshots you could share here or elsewhere?
How "explorer integrated" is this feature? I think it will be interesting to try to thread the needle between a good in-flow UX for users onboarding to this service after they delegate, but also not introducing another infrastructure dependency on the explorer itself. Looking forward to the progress!
@mgarciap Thanks for the great proposal. I agree that an independent implementation that can cater to the user requests with value add features will be great for the ecosystem. The CDP-alert app is a great example of a single-purpose tool with clear user value.
One related idea is that I know transcoders themselves are looking for a reliable 3rd party alerting system to signal to them that reward was not called in the current round automatically. Let's say 1-2 hours after the round begins, if their node hasn't called reward yet, they would get a telegram message. Not sure if this fits in with your vision, but I'm sure you'd have some eager (possibly paying) users pretty quickly for this.
@dob Sorry about that - I didn't realize those invision links weren't public. You should be able to view them now without having to sign in to invision.
Note that one of these mockups was designed under an assumption that a decent number of delegators are bonded to multiple transcoders from multiple accounts and want to receive a single daily digest email with earning totals across multiple bonded accounts. If we find out through user interviews that in reality this is not a common use case, or that delegators prefer to receive individual daily email alerts for each bonded account (akin to what makerscan's alert system does for cdp alerts) then we can scratch that mockup or introduce it later on.
With regards to how "explorer integrated" this feature is, the only direct integration inside the explorer codebase would be the email sign up form as well as a call to action to it. However, even the form can live inside a standalone app if that's more desirable. The two major infrastructure dependencies would be a Node server + Redis database for scheduling/persisting email jobs (using this redis-based queue package), and a Sendgrid account for storing email addresses and delivering emails. Here's a flowchart on how I envision this working.
@dob Thank you for your feedback.
Regarding your comment
... transcoders themselves are looking for a reliable 3rd party alerting system to signal to them that reward was not called in the current round automatically. Let's say 1-2 hours after the round begins, if their node hasn't called reward yet, they would get a telegram message. Not sure if this fits in with your vision, but I'm sure you'd have some eager (possibly paying) users pretty quickly for this.
It fits the vision quite well. The application architecture was thought to be completely flexible so that other features such as Event triggered notifications
can also be sent besides of the initial scheduled notifications. These are based on the Events emitted by the contracts such as:
NewRound
in RoundsManager.sol. TranscoderUpdate
in IBondingManager.sol to let delegator know if the transcoder they are delegating to has changed their business rules and they might not be in favour of the delegator anymore (i.e.: lowered the Reward Cut and/or the Fee Share)TranscoderSlashed
Each notification alarm will include the the right calls to action given its context (i.e.: direct link to call the reward).
So, we can definitively add a new actor to this app: the transcoder. We thought about proposing these features after the MVP. The dApp will automatically identify and prepare a personalized UX/UIs depending on the connected wallet address:
There might be features overlapping the Streamflow Staking DApp so we need to think it carefully.
Please let me know if you have any other question or suggestion. @RaffiSapire @dob do you consider this second dApp to be valuable for the ecosystem and worth granting?
Have a Happy New Year!
PS: One step further on the proactive monitoring path is to act on behalf of the user (we are currently developing a similar solution targeting MakerDAO CDP holders). The user will grant permissions to a wrapper contract (only for very specific functions) that this 3rd party solution will use to perform certain automatic tasks. This way the transcoders won't even need to follow up the alarmas and perform the Call reward
manually, they count on an 'assistant' bot :)
HI @mgarciap, The proposal is well written, and in theory we'd be excited to fund this with the same grant amount (2,100 LPT) as allocated to Adam. However, many of the DApps you link to as examples of other work do not function. When you go to the links, they say application error, or its a demo with dummy data, etc. It is important that the grant for the application funds both the creation but that any team or individual is interested in being a long term maintainer incentivized by the initial grant amount. Could you explain why applications like the CDP Alert, the 0x Dashboard, MakerDAO DAI app are not maintained?
Hi @RaffiSapire,
The list that I've provided contains some developments related to DApps, PoCs and prototypes, as it was described. Replying to your questions:
Most of the prototypes and PoCs are not maintained. They are not meant to be for us. It's OSS free to use and continue development by anyone.
The list was used when we won a Grant from AragonDAO and it got outdated. Thank you for your feedback. I'll updated it next time.
We choose projects we believe in to build a long term commitment. Livepeer is one of them.
Please let me know if you have any additional question. I would be glad to jump into a call or provide more information here.
Hi @RaffiSapire @dob any updates?
Hey Manuel. Eric and I will circle back and be back soon with a response.
Hi @mgarciap,
Its important that independent grant recipients intend to maintain the alert application over time, fixing bugs, updating and making it valuable. We're looking for partners who will be incentivized not by future payment (we wouldn't have continuous grants to keep up maintenance) but instead by the existing token they earned and will continue to earn inflation on. You would have many users depending on you to maintain and fix. From what I can tell from the above applications and explanations, we're not completely aligned in that way and so we are declining to grant you for this proposal.
Thank you very much for the time and attention here. If there are other opportunities that you feel are more aligned with your business we're happy to discuss.
Hi @RaffiSapire @dob ,
I would like to introduce you to the Livepeer Alerts MVP (alpha): https://livepeer.tools
As described in the proposal https://github.com/Livepeer-Community-Node/Grant-Program/issues/1#issuecomment-450402219, we've developed the following features:
MVP alpha. It might have bugs. Wording should be revised. Branding can also be replaced.
@RaffiSapire , getting back to your last comment, I would like to address your concerns.
Its important that independent grant recipients intend to maintain the alert application over time, fixing bugs, updating and making it valuable.
I totally agree and we are willing to do so, mainly the 'adding value' and many more tools.
We're looking for partners who will be incentivized not by future payment (we wouldn't have continuous grants to keep up maintenance) but instead by the existing token they earned and will continue to earn inflation on. You would have many users depending on you to maintain and fix.
The grants always help to finance the initial development. When the solution is ready there are a few options such as 1) Hand it over to Livepeer to host it and maintain it (we can ofcourse help), 2) Find an incentive for us to host it and keep developing it. It will depend on the case and we are open to both. Regarding the incentive, if we receive tokens, we are willing to use them to add value to the network. We can even go for a vesting period greater than 6 months.
From what I can tell from the above applications and explanations, we're not completely aligned in that way and so we are declining to grant you for this proposal.
It is hard to explain case by case from the list of prototypes, proof of concepts and dApps we've shared in a Github comment. Sorry for that. We can chat about it.
We are very excited with the Livepeer project. We've developed this MVP at our complete risk without knowing if we would get the grant or not. It helped us to learn a lot (and also contribute to the existing tools: https://github.com/livepeer/livepeerjs/pull/305).
I find this MVP to be the first step. We are ready to move on towards the Streamflow Staking dApp design and development where most of the code produced in the MVP can be used :)
Hi @mgarciap thank you for sharing this! Seems like you're on to something the community will enjoy using. Thank you again for your participation and perseverance. We are happy to award you with a grant for 2,100 LPT, which will be disbursed in increments over the next 6 months.
M1 - 500 LPT - granted today M2 - 500 LPT - granted at the completion of app (finishing inbox of issues listed in waffle.io) M3 - 183.33 LPT awarded monthly for maintenance and improvements made to the app over the following 6 months.
Please let me know the ETH address to send the 500 LPT. Please do follow up when M2 is completed.
Thanks and have a nice weekend.
Hi @RaffiSapire,
Thank you! We are glad to contribute something useful for the ecosystem.
Besides the initially proposed scope of work we have added an Epic Story suggested by @dob :
The disbursement plan looks good to us.
Thank you.
@RaffiSapire . We've received the LPT. Thank you.
And .... staked
Hi @RaffiSapire , we have finished M2 (there is only one issue, https://github.com/protofire/livepeer-alerts-backend/issues/18, which was out of the scope. It is a contribution to the livepeer JS library and it is pending to be integrated. We can't do anything about it).
As for February 19th we can consider the maintenance and improvements phase to be started. Given that the agreement is already here, would you like me to remind it via email so we don't make this issue thread unnecessary longer?
Best.
PS: our LPT address is 0xABC04058E20c9CBA4f360244648FEDF30CeBc3B4
Hey thank you @mgarciap we'll take a look this week! And yes I can schedule reminders for myself to send.
@adamsoffer hiya! how are we lookin?
@RaffiSapire We're lookin good! The MVP is feature complete. I was actually planning on sharing a link this week, but The Graph api endpoint I published which I'm relying on to look up past earnings is down. The Graph team is looking into this, and as soon as that's resolved (hopefully within the next few days) I'll throw up a link in here 🙂
In the mean time, here's the repo if you or anyone is interested in digging into the code. https://github.com/adamsoffer/token-alert
Hiya @RaffiSapire!
I'm still waiting on a fix for that Subgraph API, but I wanted to share a link in the meantime. The staking alerts application, as laid out in the above spec, can be found here as a standalone application: https://livepeer.studio/staking-alerts.
I plan on testing the application on this domain with the community, implementing any feedback and ironing out any potential bugs before integrating with the Explorer itself (if that's still desirable). Also, FYI I'm thinking about using that livepeer.studio domain as a hub for sharing all future Livepeer ecosystem experiments, products, and tools I build with the community :)
A couple notes:
I will follow up as soon as the API is back up and running.
Cheers!
Hey @RaffiSapire & @dob - the subgraph is back up and synced so I've resumed the email notification system 😃
If you signed up for the weekly alert you'll receive an email on Friday morning (3/8) detailing rewards and fees earned between 3/1 & 3/8.
Great work @adamsoffer Adam! What are the next steps to complete this grant?
Thanks @RaffiSapire! The next steps to complete this grant would be to onboard users to the service from within the Explorer. I included a mock-up of a signup form integrated directly inside the explorer. Alternatively, we can simply link off to the standalone application. Thoughts here?
Form integration:
Alternative link to standalone application:
I think it would be good to onboard within the app
@mgarciap thank you! I've processed M2 to 0xABC04058E20c9CBA4f360244648FEDF30CeBc3B4 . https://etherscan.io/tx/0xd47b1e98f887fa9da2f013216ecc87401cdb8e9b4b7b4a38efa1e39172a8b7aa
In terms of maintenance for the M3, we would like to understand whether it makes sense to continue to maintain the app and continue the grant. How are you all doing for usage, and what KPIs would you like to work towards each month in terms of # active users, open rate, or other stats you feel represent this being a product that is continuing to benefit the community?
Hey there, I just discovered this thread and wanted to share my Telegram Transcoder Watcher bot (https://t.me/TranscoderWatcher_bot) since it seems to cover a lot of the requested features. The bot has been running without any problems since ~round 1275. Some screenshots can be found here: https://forum.livepeer.org/t/telegram-bot-transcoder-watcher/609
Initially, I've developed the bot as a notification service for my Transcoder. But as a long time staker, I was getting tired of checking daily if the transcoder claimed the rewards or decided to increase the reward cut - so it was my goal to create a tool that everyone can use to get notified about transcoder events.
If you subscribe to a transcoder (or multiple, there is no limit), you will get notified about the following events:
Whenever possible, I include the transaction link so you can be sure that no incorrect information is sent. The bot is not relying on the livepeer explorer, it reads the events directly from the smart contracts (using web3 subscriptions)
I took a slightly different approach then the other two solutions: There is no need to enter your wallet address In order to use my Telegram bot. My reasoning for this was privacy. I can imagine that especially the large holders do not want their email or any other information linked to their wallet address.
Of course this means that the bot can't provide details about the amount of LPT the subscriber has earned, but I tried to mitigate this by including the total LPT earned and the total stake. So by knowing how much you're staking, you can calculate/estimate the amount of LPT earned during the round. The notification currently looks like this: Rewards claimed for round 1296 -> Transcoder 0x525419... received 114.2 LPT for a total stake of 33117 LPT (keeping 0.23 LPT due to its 0.2% reward cut).
Now I've never asked for a grant (I didn't even know this grant existed) and developed the bot purely as a free tool for the community. But of course I wouldn't mind a small LPT tip if the bot is deemed a worthy contribution :)
Hi @RaffiSapire , Thanks for M2 payment. Already staked :)
About the M3, the goal was maintenance and improvements efforts
. We keep paying for the hosting fees and try to get feedback from the community on bugs and improvements. Unfortunately not that many.
I agree that part of the M3 are improvements by adding more value to the community.
I like your KPIs:
Another feature that we were considering are:
@RaffiSapire given your relationship with the community, do you see any pain, need, etc that would bring more value?
Hi @RaffiSapire,
I´m Cristian Malfesi. I am leading Protofire's contributions to Livepeer.
I'm glad to update you about the progress of the Livepeer.tools app. We made several changes, fixed a few bugs and we are currently working on some improvements.
There are other ideas to improve Livepeer.tools that I will share soon.
I will keep you updated about the progress.
Hi @RaffiSapire,
We are glad to announce a new major release: Livepeer.tools 2.0.
The features and improvements introduced add new benefits for LPT token holders and Delegates alike, enabling greater visibility and control over staking.
We noted that LPT token holders have certain limitations for tracking bonded Delegates:
Brief list of new features:
This picture shows the messages sent subscribers on the Delegate status changes per each round.
In addition, several bugs were fixed, as well as website and e-mail layouts were overhauled, improving the user experience.
You can check the complete change list on the changelog file.
For details on the Livepeer.tool v2.0, check out the project’s GitHub repo, completely open source.
We’ve also improved analytics to track key KPIs such as # active users, subscription rates and messages sent. On the livepeer explorer it would be interesting to know about the traffic coming from livepeer.tools.
Along with this launch we’ll be publishing a blog post similar to Protofire launches Livepeer.tools and promote it as well in social networks and Livepeer community channels such as Discord and the forum. We’ll keep publishing updates and KPIs on a monthly basis.
We hope that by maintaining the tool on-line since we went live, and delivering many improvements it makes sense to continue this grant and get back to the M3 schedule.
Hey @cristianmalfesi. Excited to check out these new alerts. Are they deployed to the new Livepeer.tools? When I connected a metamask account I still just saw loading spinners for awhile, so haven't successfully gotten through the setup yet.
Hi @dob! Yes, it is deployed. I have checked it with 3 different accounts and it looks working good. Can you try it again refreshing the browser cache? In case you have old stuff into it.
At the first time you can see the Delegator rewards empty. The system will process the data with every round. Here I send you a screenshot of my account right now:
@cristianmalfesi I just checked out the changelog. Awesome job on all the updates and fixes. I like how you now display a breakdown of rewards per round in the weekly email; out of curiosity, how do you look up past rewards for a given round without an indexer? If a delegator claimed tokens during the week before an email is sent out, its pendingStake gets reset to 0 and it no longer becomes possible to calculate this using the pendingStake function. The way I got around this for the livepeer.studio alerts was by using a subgraph to store “Share” entities upon every reward call -> https://thegraph.livepeer.studio/subgraphs/name/livepeer (I'm aiming to add this to the "official" Livepeer subgraph as well)
Looking forward to checking out the ROI ranking when it’s launched!
Hi @adamsoffer! Thanks for your feedback. Regarding your question, we are saving the rewards per round for every subscribed user, so we are not losing data. The statistic information is just about the last 7 and 30 days and they serve as a quick look of the rewards trend. The idea is doesn´t to have big statistics at the moment (I think that is for the Livepeer subgraph). If the user unsubscribes or unbonds the Delegate, our system will delete all saved data. About your subgraph, yes, I am waiting that the Livepeer subgraph can store "shares", that would be a good improvement.
ROI ranking will come if we get a little help ;)
@cristianmalfesi Cool. Makes sense.
re: the subgraph updates, I'm just waiting for this merged PR to make its way into The Graph's hosted explorer. It will allow me to get around a timeout error I'm encountering. Once that's in I'll deploy the updated subgraph to the hosted explorer 🙂
@adamsoffer Thanks for the update! I'm looking forward to seeing that. 💪
Hey @cristianmalfesi thank you for the re-energized interest in the project. However, this grant has been abandoned for months, and we ended up building much of the requisite tooling necessary and are launching a new app in October with intuitive UI for alerts and and more information. I have not seen enough evidence that there have been consistent improvements month over month as well as increasing engagement metrics and usage from users who we aim to serve. I'm not convinced putting capital into maintaining this product is the best way for us to spend further grant spending.
@cristianmalfesi it would be great to speak sometime about other ways you might be able to contribute through a new or separate initiative. Maybe once we launch the new site and app, we can follow up to see how you might fill a gap in terms of developer tooling.
Currently, token holders have no way of knowing if their transcoder they bond to fails to call reward, and therefore you may miss out on inflationary token as a token holder without ever knowing it. In addition to knowing whether a transcoder calls reward or not, I want to know how much LPT I earned from inflation in yesterday’s round. I want to know this information every day.
I’d like to receive an alert notification every day that tells me whether my transcoder called reward or not, and how much token I earned from inflation. I would like to receive this as an email notification.
This is a broad request for a proposal, and creating a spec is the first step of the process.
To apply, comment on the issue.