This is a new format for governing funding, which I call funding proposals. The purpose is to first get sufficient community support, discussing deliverables and the value for the community and only move to a funding request or bounties if there is sufficient support. This incorporates some of the feedback on Grin Governance from this discussion. This new format also takes away some of the work for developers to ‘sell themselves’ via Funding requests, which can be a frustrating experience, right @davidtavarez. Note that even if a funding proposal gets sufficient support, the question is if a developer wants to take on the implementation, whether as funding request or a bounty.
Funding proposal: PIBD implementation in Grin++
What: Parallel Initial Block Download (PIBD)
PIBD is a new messaging system that allows you to download blocks simultaneously from many peers, check them, verify them, and rebuild your history. PIBD is truly decentralized, secure and robust! There is some additional overhead in data transferred, so currently PIBD is not a faster way to download the blockchain. However, as anyone knows who ever used Torrents or other decentralized downloading systems, potentially downloading from many peers in parallel can be used to make downloading faster, even with added overhead, since most users have a lower upload speed than download speed. So PIBD might in the future lead to lower initial syncing time.
Why: Currently both grin-wallet and Grin++ download the blockchain up to the horizon as a .zip file.
This is problematic for various reasons. The biggest issue is that the process is unstable and error prone. Your node asks a single peer to download the .zip file. If that peer goes offline or is malicious, he or she can interrupt your download, corrupt your download, or keep you waiting for very long!
Anyone who synced his node or wallet multiple times knows from experience that the experience is highly varying, sometimes the blockchain syncs fast, sometimes incredibly slow, and sometimes it requires manual restarting the wallet or sync process. In other words, the initial sync as .zip file makes a horrible user experience. Secondly, it is not really decentralized to download from a single peer.
PIBD will solve the above problems and is already on test-net and soon on main-net in grin rust . However, the minority of nodes out there run Grin++, meaning grin rust nodes would only be able to use PIBD to download from rust nodes which hampers its effectiveness and hampers decentralization. Even worse, Grin++ would still be stuck with the old and poor way of syncing using a .zip file. Therefore implementing PIBD in Grin++ is essential for the whole network to take full advantage of PIBD.
What we need from you:
We need your opinion, (dis-)likes, questions (also dumb ones) as community members. The purpose is for these requests is to be shared on social media, start a discussion on the value of funding the implementation of features for the community, and hopefully collect sufficient community support before initiating any funding requests. There is no fixed threshold since that would give spammers ultimate power over Grin governance. Your opinion and arguments are counted, and weight based on their validity, sound argumentation and your historical contribution to Grin.
Find here a better explanation of PIBD by @Yeastplume
Or here a more detailed technical explanation by @Yeastplume