ZcashFoundation / GrantProposals-2017Q4

Submission site for Zcash Foundation grant proposals
25 stars 3 forks source link

Zcash plug-and-play full node software #27

Open john-light opened 7 years ago

john-light commented 7 years ago

Hello Zcashers! I am the co-founder of Bitseed, a project with a mission to make it easy for anyone to run their own bitcoin full node. In the past we have experimented with altcoins, including Namecoin and Litecoin, and thought this grant would be a good opportunity to fund development support for Zcash. Here is our first-draft grant proposal for this project:

Motivation and overview

Full nodes are an important infrastructure component of any cryptocurrency network. Full nodes strengthen the censorship resistance of a cryptocurrency network by relaying new blocks and transactions to peers and uploading archival blockchain data to new peers on the network.

Additionally, full nodes are important to cryptocurrency end users, including miners, senders and recipients, and researchers. Miners use full nodes to ensure that they are building valid blocks on top of the most difficult valid blockchain. Senders and recipients use full nodes to validate their own transactions and preserve their financial privacy. And researchers use full nodes to analyze blockchain data and gauge the health of the network by measuring connectivity with peers.

The goal of this project is to make it easier for Zcash users to run their own full nodes. We will be adapting the software we have developed for bitcoin to Zcash and releasing it all under open-source licenses (scripts are GPL, UI is MIT). The intended configuration is that users run this software on a machine that is always on and connected to the internet (such as a personal Linux server running in their home or office).

Further reading:

https://bitseed.org/the-different-kinds-bitcoin-full-nodes/

https://medium.com/@lopp/to-node-or-not-to-node-48da1b6d7091

https://medium.com/@lightcoin/aside-from-being-able-to-validate-that-ones-transactions-were-included-in-the-most-difficult-valid-5799f868e946

https://www.coindesk.com/spv-support-billion-bitcoin-users-sizing-scaling-claim/

Technical approach

This project will consist of three main components:

  1. Automation scripts - these are the scripts that a user will install on their Linux machine to automate the deployment and maintenance of a Zcash full node. The scripts will start the Zcash daemon and keep it synced with a full copy of the Zcash blockchain.
  2. Zcash full node UI - provides a web-based user interface that is used to administer the node from within the local network or monitor the node's status from outside the local network.
  3. Update infrastructure - provides software updates to Bitseed node operators.

You can find links to the current versions of these resources, originally developed for bitcoin, here:

Scripts: https://github.com/bitseed-org/bitcoin-box

UI: https://github.com/bitseed-org/bitseed-web-ui

Updates: https://bitseed.org/device/

The risks and unknowns are the timeframe to complete the project. We may run into unanticipated issues with adapting the software to work with Zcash that could introduce delays into our delivery schedule. Given that the Zcash and Bitcoin Core codebases are so similar, we do not anticipate any lengthy delays, but we are giving ourselves a generous delivery deadline to account for such possibilities.

Team background and qualifications

Jay Feldis - Jay has over 25 years of experience leading the development of consumer electronics products in Silicon Valley. As a founding member of Logitech’s webcam product group, Jay helped to create and define webcams and video communication as consumer products. His experience includes key roles leading hardware, software, and program management teams through all stages of development from product conception and system design to manufacturing and retail launch. Jay holds a BSEE of Cornell University.

John Light - John has experience managing operations, marketing, and business development at early-stage startups, serving as a professional advisor to companies building on the blockchain while researching and publishing work on the topics of Bitcoin, digital identity, reputation, and trust. He previously founded the Buttonwood SF Bitcoin Club, co-founded two Bitcoin startups, wrote the book Bitcoin: Be Your Own Bank, and has been a speaker on the topics of Bitcoin, digital identity, and the power of the blockchain at numerous public events.

Konn Danley - Konn has over 25 years of experience in the design and development of a broad range of consumer and space electronics using ASICs, SoCs, Advanced Verification (SystemVerilog/SystemC), FPGAs, PCBs and embedded and application software. Products include satellite and cable set-top boxes, packet routers, image processing subsystems and multifunction peripherals. Konn also contributes to the areas of online marketing and web design and development. He holds a BSEE from the University of Maryland, College Park and a MSEE from CSULB.

Mike Doty - Mike has over 25 years of experience in mechanical engineering and design, including manufacturing, design, analysis, testing, and systems integration. He has designed machinery, small mechanisms, space craft structures, printed circuit boards, wiring harnesses, and electronic packaging, utilizing hands-on CAD and machine shop experience fabricating prototypes, along with the use of rapid prototyping (3D printer) equipment and technologies. Mike has a BS Degree in Engineering and Applied Science from the California Institute of Technology. He is a Certified Quality Engineer (CQE) and Certified Reliability Engineer (CRE).

Evaluation plan

The end result if this project is successful will be a suite of tools for Zcash that provide identical functionality offered by our bitcoin full node tools: automate the deployment and upkeep of a Zcash full node, provide users a web UI to administrate and monitor the status of the Zcash full node, and offer regular Bitseed software updates for one calendar year after final delivery of the first official release of the Bitseed Zcash full node software suite.

Security considerations

Benefits: as mentioned earlier in this document, full nodes provide benefits to both individual Zcash users and to the network as a whole. Full nodes help provide better security and privacy to individual users by enabling them to validate that their transactions have been confirmed on the blockchain, and by eliminating the need to share their wallet information with third party servers. Full nodes help increase the censorship-resistance of the network by adding redundancy to the propagation of new transactions and blocks and increasing the number of peers that are uploading archival blockchain data to new peers that have joined the network.

Risks: Bitseed is a third party providing critical infrastructure software to users of the Zcash network. Some of these users may rely on this software to ensure the security and privacy of their transactions. As such, we are one more party that users may need to trust in addition to the original developers of the Zcash software that Bitseed software is built to support. We work to mitigate this risk by releasing all of our software open-source, delivering our software over connections secured by HTTPS, and providing users with the option of building our software from source rather than install via binaries.

User education: Our software is designed to be "plug and play", and the instructions we provide for using and updating the software are written in such a way that the user is always using the software in the most secure way available.

Schedule

November 2017: Development begins

January 2017: Scripts adapted to Zcash

March 2017: UI adapted to Zcash

April 2017: Update infrastructure in place for Zcash-related software updates

May 2017: Final delivery of the first official Bitseed Zcash full node software release

Budget and justification

$15,000

Final note

Although not within the scope of this specific project and proposal, I thought it would be worth pointing out that this project will lay the groundwork for future potential projects that will enable Zcash users to "pair" their light mobile or desktop wallets with their own trusted Zcash full node, eliminating the dependency that such wallets typically have on trusted third party servers.

cc @jfeldis

tromer commented 7 years ago

Can you elaborate on the motivation? It seems to me that installing, starting, stopping and updating a Zcash node take just a few command lines (or a trivial shell script) each.The status of the node is reported in metrics screen (say, with screen/tmux over SSH). What extra needs justify $15K worth of development?

jfeldis commented 7 years ago

The idea is to make the node extremely easy to setup and monitor. Once running, only a web browser is necessary to monitor performance - no need to know how to use SSH. This can make it possible for a less technical user to operate a node. The biggest efforts will be GIU, integrating an automatic update process, testing, and responding to the inevitable support requests. We can probably sale the effort to meet a cost target or do it in phases if desired.

acityinohio commented 7 years ago

Every informal proposal has multiple reviews by the review committee. The reviews are being collected and discussed in a private google doc (the 5 reviewers all have edit access to it, no one else can view it). By way of early, informal feedback, the reviewers would like to inform you that your proposal is not a leading candidate for funding in this round.

You may still choose to submit a full proposal by October 6th, and it will be evaluated. But if it’s substantially the same as discussion so far reflects, then we suspect it is unlikely to be chosen for funding; and if it isn't, then we encourage you to post a draft as early as possible, to allow for community feedback. Regardless of your choice we thank you for participation thus far.