In Progress Rfp-2: Web Wallet Ticket And Stake Pool Support

Discussion in 'Requests for Proposals' started by ay-p, Feb 19, 2016.

  1. 2017/12/15 - Decred v1.1.2 released! → Release Notes  → Downloads
  1. ay-p

    ay-p Full Member
    Developer

    Dec 7, 2015
    148
    106
    Male
    We are pleased to announce our intentions to add stake ticket purchasing to the web wallet. As discussed in the RFP, this work can be split up between frontend and backend work. It is all Node.js (with HTML/CSS for views) based on the Bitpay's Copay stack. We have decided to integrate stake pool multisig address support to give flexibility and security to web wallet voting. In the end, users may use any stake pool of their choosing and should be able to switch which pool they would like to use for any given ticket purchase.

    RFP0002 - Web Wallet Ticket and Stake Pool Support

    Note: This RFP is open to you. You are asked to submit proposals if you are competent in this area and the money will go to you if your application is successful upon completion of the work proposed. Feel free to ask questions here about the proposal. @jcv and I were the main devs responsible for the web wallet forking and bring-up. We should be able to answer most questions and give ample guidance when necessary. Please send all proposals to: rfp2016 <at> decred.org

    Closing Date
    All proposals must be submitted by 06:00 PM UTC March 8th, 2016.

    Description
    The Decred Web Wallet is based on BitPay's Copay, which has no support for handling stake-related transactions. In order to allow users of the web wallet to participate in the proof-of-stake ("PoS") mining process, support for creating and managing these transactions must be added to the existing code.

    To participate in the PoS mining process, users must be able to both purchase tickets, i.e. issue a SSTX transaction, and configure their voting to occur through a stake pool. These additions would correspond to adding 1 or 2 screens to the existing web UI, along with the corresponding backend code changes.

    The UI changes to add ticket purchasing support need to be both consistent with the existing UI and straightforward to merge with future code from BitPay's Copay repository.

    This requires 2 separate deliverable sets that may be supplied by separate individuals or groups: (1) the additions to the existing web wallet UI (frontend), and (2) additions to the Copay stack to import the multisig stake pool address and script, create ticket purchase transactions and to relay them to the network via the existing sendrawtransaction RPC. Proposals may be submitted for deliverable sets (1), (2) or both (1) and (2).

    Requirements
    • UI design (frontend) - Familiarity with HTML, CSS and some Node.js. Experience with references to prior work.
    • Copay development (backend) - Familiarity with Node.js. Experience with references to prior work.
    Scope
    In terms of the frontend, the Decred Copay wallet currently has a start page that has 4 buttons along its bottom edge Home, Receive, Send, History, 1 for each panel. An additional panel must be added to allow users to purchase stake tickets, or the ability to purchase stake tickets must be added to the existing Send panel. The ability to add a stake pool must be added to the Preferences menu (on Home panel) for a given wallet. Adding the stake pool requires entering a multisig address and script (text data) that are supplied by the stake pool. Users attempting to buy tickets must be prevented from buying tickets until they have entered the address and script from the stake pool.

    The backend of Copay will require working with several repositories to add the required features, e.g. insight, insight-api, bitcore-wallet-service (BWS). The ability to import a multisig address and script from a stake pool will need to be added to ensure stake pools can work properly, and this will likely make use of existing multisig handling in Copay. Once a user has added a stake pool address and script, they need to be able to create an SSTX transaction. This SSTX transaction must be relayed from Copay through BWS, Insight and ultimately dcrd. Ultimately the most significant changes will come in BWS where a sstxProposal model will be made along side the existing txProposal model. Much of the existing infrastructure should allow for sstxProposals to be sent through to insight/dcrd with little effort.

    Estimated Work
    1 week FTE or greater (1 FTE = 40 hrs/week).

    Proposal
    Proposals should include:
    1. Description of proposed frontend UI and/or backend changes
    2. References to prior work on web design and/or Node.js projects
    3. Estimated completion time
    Milestones
    Partial payments shall be made at the following milestones:

    Copay UI
    1. The proposed design is prepared on static pages for ticket purchasing and stake pool configuration
    2. The proposed design is integrated into Copay and tested to behave as expected
    3. The changes have been successfully integrated into the Copay master branch
    Backend integration
    1. Importing multisig addresses and scripts and creating and relaying SSTX transactions through the Copay stack are confirmed to work
    2. New backend functions are integrated with the corresponding UI additions
    3. The changes have been successfully integrated into the various repositories' master branches
    Modification of these proposed milestones is acceptable, and must be accompanied by sound reasoning in a proposal. Under no circumstances shall payments be made in advance of work being completed.
     
    LedgerNano, Rune S, Dyrk and 8 others like this.
  2. Dyrk

    Dyrk Sr. Member
    Developer

    Jan 7, 2016
    518
    376
    Male
    Wonderland
    Great! I'm glad to see this RFP ;)
    I will definitely send my proposal today. Just need some time to review BitPay's Copay and rethink what else I don't like or want to see in the Web Wallet. I already saw many posts on the forum, so I think I will analyze them and maybe include to my proposal.
     
  3. Costin

    Costin Member
    Advocate (Twitter)

    Dec 28, 2015
    243
    84
    Male
    JavaScript
    Liverpool
    Glad to see this, will see what can I help with :).
     
  4. sambiohazard

    sambiohazard Sr. Member

    Jan 21, 2016
    844
    372
    So does this mean that we have caught the bug with unconfirmed transactions & double spend warnings? If so i would like to update the thread i posted regarding that issue.
     
  5. BrandonReynolds

    BrandonReynolds Jr. Member

    Dec 28, 2015
    47
    36
    Male
    Software Engineer
    I was going to submit a proposal as well. Interested in performing a team effort on this? Your network stats site you built is done quite well.
     
  6. tacotime

    tacotime Hero Member

    Dec 7, 2015
    410
    1,133
    Thank you to everyone who submitted proposals. Both RFP-2 and RFP-3 received fewer proposals due to the specialised nature and specific requirements of Node.js experience. It is the project's pleasure to announce @Dyrk has been successful with both his proposals for these projects. Contracts will now be prepared and these projects will start as soon as @Dyrk is ready upon receiving them. As always, please do not feel discouraged from putting forward proposals for future RFPs, as the RFP process is continuous and iterative. Every round is a blank slate for you and your contributions are encouraged and valued.
     
    Reynold, koolykg and kaida like this.
  7. koolykg

    koolykg Jr. Member
    Advocate (Facebook)

    Jan 1, 2016
    122
    49
    Female
    Congratulations @Dyrk!!! you really outdid yourself with these proposals by taking the time to to put in the work, and move Decred in its greatness!!!;)
     
  8. Ghoom

    Ghoom New Member
    Translator (Français)

    Jan 28, 2016
    4
    1
    Male
    #8 Ghoom, Mar 27, 2016
    Last edited: Mar 27, 2016
    Hi,

    Do you need help correcting the French translation of the web wallet ?
     
  9. Not to step on any ones toes. Any updates? Thanks.

    Also as Ghoom offered above, I can help with Danish, Swedish and Norwegian.
     

Share This Page