Grant Update On-Chain Voting Protocol Grant

Status
Not open for further replies.

Alex

Factoshi
Secured
#1
Grantee name: Factomatic, MyFactomWallet, Luciap, and The Factoid Authority
Grant Sponsor: Factoshi Ltd
LTD Grant number: FACTOM-INITIAL-GRANT-TFA-LUCIAP-FACTOMATIC-MFW-001
Grant name: On-Chain Voting Protocol
Grant awarded date (YYYY/MM/DD): 2018-06-09
Grant paid date (YYYY/MM/DD): 2018-08-13
Grant amount: 26,374 FCT ($117891 at above date)
Grant vote: https://cdn.discordapp.com/attachments/454716946286641172/455148306092523521/Selection_067.png
Grant Application Discussion: https://factomize.com/forums/threads/initial-grant-on-chain-voting-protocol.355/
 

Alex

Factoshi
Secured
#2
Grant Summary

Objectives

The grant has three primary objectives:
  1. Design and implement an on-chain voting protocol. The protocol can be applied to any situation that requires a reliable, neutral and trustless polling solution. However, the primary motivation is to create a community tool for voting on items such as governance and grant proposals, ANO selections, Guide elections, and the promotion/demotion of authority servers.
  2. Create an online (client-side) Factom wallet. The wallet, known as MyFactomWallet, takes inspiration from the well known Ethereum client MyEtherWallet, but has been designed from the ground up to be Factom-specific. It will provide a front-end for the voting protocol, and will let users manage both FCT and EC without needing to download any desktop software.
  3. Create and publish a Factom Ledger Nano S application. The Ledger application will allow users to store both FCT and EC. Moreover, users will be able to manage their Factom identity from the Ledger, which will allow them to cast votes using the on-chain voting protocol. The Ledger application will be integrated with MyFactomWallet.

Timeline and milestones

There are seven milestones for the grant. The team has a clearly defined schedule for when each milestone will be met. All dates listed here indicate the first day of the week, with the milestone to be met during that week.

Milestone 1 - September 3rd: Release draft voting specification to community | COMPLETE

A draft of the voting specification will be released to allow the community to review the specification and give feedback to ensure the final version meets the community’s needs.

MIlestone 2 - September 17th: Submit Factom Ledger application to Ledger | COMPLETE

The grantees will release the Factom Ledger application to Ledger in preparation for inclusion in the Ledger store. Once the application has been released to Ledger the timeline for publication to the store is at Ledger’s discretion, and cannot be controlled by the grantees. The hope is that release can be timed with the launch of MyFactomWallet.

Milestone 3 - September 17th: Finalise voting specification | COMPLETE

The voting specification to be finalised ready for full implementation into the voting daemon.

Milestone 4 - October 8th: MyFactomWallet voting application to be released to testnet | DELAYED

The community will be able to test and provide feedback on the voting protocol delivered via the MyFactomWallet front-end.

Milestone 5 - October 15th: MyFactomWallet wallet released to testnet | COMPLETE

Similar to milestone 4, this will allow the community to test and provide feedback on MyFactomWallet’s wallet.

NB: this milestone will be delivered one week later than initially defined in the grant proposal. The intention is to stagger the wallet release with the voting protocol so that community feedback/review does not conflate the two separate features.

Milestone 6 - October 22nd: Acceptance testing for MyFactomWallet | DELAYED

Rigorous testing of MyFactomWallet to iron-out bugs and prepare for launch.

MIlestone 7 - November 12th: Final report and publication of zk-SNARKs review

A final report will be delivered to the community. This will include a review of the grant to ensure all milestones have been reached and all deliverables have been met. Furthermore, this milestone will include a review of the whether the inclusion of zk-SNARKs (cryptography to provide anonymity) can feasibly be integrated into the voting protocol.


Sponsor

The community should expect Alex of Factoshi Ltd (me) to produce a report at each project milestone. Reports will typically include:
  1. My opinion of whether the milestone has been achieved in line with the original intent of the grant.
  2. My impression of the overall state of the project up to that point, including whether I believe the project to be on time and whether the quality of the work meets the standard expected for a grant of this value.
  3. My impression of whether project funds are being used responsibly and for their intended purpose.
Additionally, I will be the primary community liaison for the project. Questions can be directed to me first. If I am unable to answer a question I will seek clarification from the grantees.
 
Last edited:

Alex

Factoshi
Secured
#3
Sponsor’s Report - Milestone 1

Voting Protocol

At the time of writing this report, the draft voting specification is on track to be released for community review during the week commencing September 3rd. I have read the voting specification, and I am confident that it is sufficiently robust that it could be implemented in its current form.

The grantees are currently reliant on Factom Inc in order to implement the final voting protocol as it was outlined in the initial grant. Specifically, Factom Inc needs to release tools for creating the identity of a standing party, and for determining the standing of that identity. The grantees can produce a viable voting tool without Factom Inc producing a standing API, however the identity API is integral to the voting tool.

Factom Inc is not part of this grant, and neither I nor the grantees have much visibility into their progress on this front. Nevertheless, communication has been established and the grantees have been assured that Factom Inc is aware of the dependency and that work is ongoing.

If Factom Inc does not produce at minimum an API for creating an identity, the team can implement a temporary solution, but all temporary solutions would be suboptimal and are outside of the scope of this grant.


MyFactomWallet

I have been given a guided tour of the MyFactomWallet voting UI. My overall impression of the UI is that it is very clean and easy to navigate. There were comprehensive options for creating, managing, and voting in polls. There were a number of mock polls live on the site that demonstrate the power of the UI/voting protocol combination.

There remains some work to be done on the UI. This includes integration with the voting API, client-side wallet functionality and integration with the Ledger Nano S.

I am optimistic that the grantees will be able to achieve milestones 4 and 5, which is to release basic functionality for both the voting protocol and wallet onto testnet in early- to mid-October. I will be able to review this position at the next milestone update to see how work has progressed during that time.


Factom Application for the Ledger Nano S

The grantees are currently working to finalise the firmware for the Factom Ledger application. Factoids can be sent and received from the Ledger. The grantees are already in communication with Ledger regarding the submission of the application for Ledger’s approval.

Entry Credits still need to be added to the application, which is a prerequisite for the application’s submission to Ledger. Furthermore, the grantees need to determine how Factom identities can be integrated into the Ledger application so that they are generated deterministically from the Ledger’s seed. This latter feature is a feasibility study only - implementation is not within the scope of the current grant.

The submission of the Factom application to Ledger is milestone 2 and is due in two weeks. There are therefore no official sponsor reports between now and then. Nevertheless, I will stay in close communication with the grantees during the next couple of weeks to make sure they are on track to hit that deadline.


Costs

The grantees are currently working within a much reduced budget due to significant depreciation in the price of FCT since the grant was accepted.

Even so, I have seen a breakdown of costs for the majority of the grantees, and I have seen a tally of hours spent on the project from every grantee. I believe that the work they have done so far justifies the costs they have outlined.


General Impression

Overall, I am happy with the current state of the project. I believe the grantees to be keeping faithfully to the intent of the initial grant application, and I have seen evidence that work is steadily progressing towards the three final goals.

My primary concern right now is the completion of the identity and standing APIs from Factom Inc. I have no reason to believe those APIs are not on track to be completed, but I also have no visibility into the state of that project. From my perspective as sponsor, it is an unknown variable.

That issue notwithstanding, I believe the project is on track to be completed on schedule and to a high standard.
 
Last edited:
Secured
#5
Sponsor’s Report - Milestones 2 & 3

Milestones 2 and 3 are due this week. These are:

2. Submit the Factom application to Ledger.
3. Finalise the voting specification.


Ledger Nano S

The Factom Ledger Nano S application is now complete. The includes both the firmware (1) and the JS needed to drive the application (2).

However, though the software is complete, Milestone 2 is only fulfilled when the application has been submitted to Ledger for review. The grantees are concerned that Ledger will not accept the application for formal review until there is a working client (e.g. MyFactomWallet). If that is the case, then that could put the fulfilment of Milestone 2 back by several weeks. The grantees may be able to work around that requirement by building a barebones UI. If Ledger accepts that for review purposes, the delay to Milestone 2 would only be very short.

The team is in touch with Ledger to seek clarity on this issue. I will be able to provide an update when they hear back.

The community will be able to download the application for use on testnet later this week. I will post a link to instructions at that time.


Voting Protocol

The grantees have completed the voting specification. The final version will be published for the community shortly. This fulfils Milestone 3.

The implementation of the voting specification in JS is well underway (3). The JS implementation will be used by MyFactomWallet to create polls. The 'write' arm of the JS implementation is complete. There is also a 'read' arm that has a lot of work left to be done.


MyFactomWallet

Work continues to progress on the MFW voting UI. The grantees are currently working to simplify the user experience. It will be ready for internal testing very soon.

Milestone 4, which is due in the week commencing October 8th, is to release the voting UI to the community for testing. Having seen the work completed on the UI so far, I am confident that this milestone will be met comfortably.

There has been no further work done on the wallet UI since the last update. A draft version of the wallet UI is to be released for Milestone 5 in the week commencing October 15th. Despite the lack of further work on the wallet UI, the basic design for the wallet is already there. Moreover, given the state of the voting UI, I am confident there is ample time to complete the wallet in time for Milestone 5.


Costs

I have seen a breakdown of costs for time spent working on the grant, which is currently on course to come in within budget.

Whilst I can keep an eye on costs, the reality is that the grant is made with the understanding that it is a payment for work completed. The largest expense is for labour, and the employees are the grantees themselves. So even in the event that they were over-budget, I would still expect the project to be delivered as outlined in the grant application. As such, it is difficult to glean any meaningful insight from a knowledge of costs, as it is unlikely to ultimately influence delivery of the project.


General Impression

The primary sticking point in this report is the likely delay of Milestone 2 - the submission of the Factom application to Ledger. It should be emphasised that the application itself is complete and ready to go. Nevertheless, if Ledger does require a fully working client, that could delay submission by up to 4 weeks, or perhaps more.

Ledger releases applications in batches on the first Tuesday of each month. In the event that submission is pushed back to mid-October, it would be a very tight timeline for the application to be released in the November batch. We might not see the application live in the Ledger store until early December.

I am sure the community shares the frustration of both myself and the grantees upon hearing of this possible delay. From my perspective as the sponsor, this is not a symptom of any larger problem, but rather represents a normal delay that can arise in any project. I will keep in close contact with the grantees as they try to solve this problem, and will update the community as things change. Expect more information soon.

Apart from that possible delay, there are no other areas of potential concern that require my comment. The voting protocol and the UI are progressing in line with expectations. I will remain in contact with the grantees over the coming weeks to ensure that this remains so.


References

(1) https://github.com/MyFactomWallet/ledger-app-factom
(2) https://github.com/MyFactomWallet/ledger-factomjs
(3) https://github.com/PaulBernier/factom-vote
 
Last edited:
Secured
#6
Milestone 2 - Update on the Ledger

In the previous update I outlined some roadblocks the team was facing with the submission of the Factom application to Ledger.

The team has now heard back from Ledger. The bad news is that they do indeed require that a client (e.g. MyFactomWallet) is ready at the time the application is submitted for review.

The good news is that the grantees are still likely to be able to deliver the client in time for Ledger to release the application in the 6th of November batch. Ledger requires a minimum of 2 to 3 weeks to allow them to review the app prior to launch. Currently, Milestone 5 - the launch of the MyFactomWallet wallet to testnet - falls 3 weeks prior to that date.

In order to give themselves some breathing room, the grantees have decided to switch Milestones 4 and 5. That means the MFW wallet will be released to testnet in early October, with the voting UI following a week later. That should allow them to submit around 4 weeks prior to the November 6th release. As highlighted in my previous post, I have been tracking the progress of the UI closely, and I think the team is well on track to deliver in time.
 

Alex

Factoshi
Secured
#8
Sponsor’s Report - Milestones 4 & 5

Milestones 4 and 5 are both due within the next couple of weeks. These are:

4. Release the wallet UI to testnet.
5. Release the voting application to testnet.


Additionally, the delayed completion of Milestone 2, the submission of the Factom application to Ledger, is also due within the next couple of weeks.

MyFactomWallet

I have just completed another tour of the MyFactomWallet UI. I am pleased to report that a lot of progress has been made, and I am expecting the wallet to be released to testnet by the end of this week.

Currently, users are able to send and receive FCT, create EC, and get balances for address held in their wallet. Work to create and import a seed is currently under way, and is expected to be completed within the week. Additionally, the Ledger Nano S will also be integrated at that time. There are also plans to let users select whether they would like to use the courtesy node or a custom node when transacting.

The wallet UI is clean and intuitive, and I am confident that the community will be pleased with the initial release.

The voting UI has also received some more attention, though it has not been the primary focus due to the effort to get the UI done so that Ledger can review Factom's Ledger application. Nevertheless, most of the core functionality is there.

The community should note that there may still be some auxiliary items that need to be completed after these milestones are due.

Ledger Nano S application

The delayed submission of the Factom Ledger Nano S to Ledger will likely coincide with the launch of MyFactomWallet on testnet. Again, that should happen within a week or so.

Given the delay, the team has been able to add identity management features to the Ledger Nano S app. However, there are still some outstanding concerns and nuances with regards to how the identity management features work. In order to not risk rejection by Ledger, the team has decided to not commit these features for the current review, as failure for the identity management section might result in rejection of the application.

Pending the resolution of those outstanding concerns surrounding identity management, we will hopefully see the addition of identity management into the Ledger Application in the medium-term.

Voting Protocol

The voting protocol has been updated based on the feedback provided by the community and further internal discussions. For example, on a suggestion from @AdamSLevy of Canonical Ledgers, the team decided to drop the signatures on the reveal entry, which hardens the protocol against people revealing their vote off-chain. Additionally, further work has been done to make it possible to integrate the protocol with the Ledger app.

Furthermore, work has progressed on the voting library, which has now been integrated with Factom identities in an as yet unreleased version of walletd provided to the team by Factom Inc. An alpha version of the CLI tool to interact with the voting protocol has also now been released(1). Work will continue on both of these projects.

Finally, the report on anonymous voting is well underway. Research is complete, and the team have a draft version of an anonymous voting system that relies on zero knowledge proofs and homomorphic encryption. Two deliverables can be expected from this work: a simple version that can be implemented relatively easily, and a complex version that will take more time to implement.

Costs

As mentioned in my last report, I don't believe I can report anything meaningful with regards to costs. The teams are not at risk of running out of funds.

Overall Impression

I have no major outstanding concerns right now. Work is demonstrably progressing in accordance with the timeline outlined at the beginning of this thread. The pending milestones will bring together different arms of the grant, and will be public for the community to scrutinise. This is likely the biggest test the team has faced so far. Once those milestones are fulfilled, I believe that the community will be able to make an accurate judgement as to whether the grantees are likely to be able to deliver on their promises independently of my sponsor reports.

As things stand right now and barring no major roadblocks, I am confident the team will produce quality work and on time. Having said that, I believe there is plenty of room for additional features to be added to the project in the future. I expect the grant to produce a functional, solid and attractive foundation on which further work can be built over the coming months and years.

References

(1) https://github.com/PaulBernier/factom-vote-cli
 
Secured
#9
I have been notified by the team that the launch of MFW to testnet has been delayed. I have no firm assurances at the moment for when it will be released. Hopefully it will be in the next few days. I will stay in close contact with the team and update this thread when I hear more.
 
Secured
#13
Sponsor’s Report - Milestones 6 & 7

Milestone 7 is now due. That includes the final report and publication of the zk-SNARKs review, and marks the final milestone for this grant. A great deal of progress has been made by the team. Nevertheless, significant work has yet to be completed.

MyFactomWallet

As I am sure the community is aware, a great deal of progress has been in the development of MyFactomWallet. Specifically, the wallet application - which earned higher priority due to timelines imposed by Ledger SAS - has received most of the attention over the previous month or so.

The MyFactomWallet wallet application is currently undergoing the final stages of acceptance testing in order to ensure functionality and, most importantly, safety for users. I have taken part in some of this acceptance testing, and I have been pleased to see that feedback has been dealt with quickly and efficiently. The below image is a successful test of whether a given seed will produce the same keys, regardless of the method used to generate those keys. The team anticipates the likely release of MyFactomWallet to mainnet within the next 24-hours.



The voting application is now long overdue, having not yet been released to testnet as promised by Milestone 4. As mentioned above, it has not received the same degree of attention recently as the wallet application due to the priorities imposed by Ledger. However, before that change of priorities, the voting application was the focus of attention for MyFactomWallet’s chief developer. As such, the bulk of the work has already been completed and the team believes they should be able to push the voting application to testnet during the week commencing the 19th of November. As I mentioned in a previous update, I have seen that work and I can attest to its advanced state of development.

The voting application must undergo testing once it has been released to testnet. The team is not currently willing to predict how long that might take. However, the more people who are willing to help with testing, the faster it will go. So, if you are willing to help in testing please make yourself known on the MyFactomWallet support channel on Discord: https://discord.gg/642qDfW

Finally, there was some minor confusion that resulted in a handful of FCT holders sending their mainnet funds to testnet addresses. The team has put together a website to help users recover those misplaced funds: http://stevenmasley.me/bip39.html

Voting protocol

The current focus is to complete the voting protocol daemon. The daemon watches the blockchain then parses and validates votes to be stored in a database. Queries can then be made against that database by the way of a GraphQL API.

As things currently stand, work to finalise vote parsing is not yet complete, and nor is the GraphQL API to expose those votes. As you might expect, the completion of this work is due to coincide with the launch of the MyFactomWallet voting application to testnet during the week commencing the 19th of November.

The Javascript implementation used by MyFactomWallet and the voting protocol CLI is complete, as is the CLI itself.

The report on zk-SNARKs and anonymous on-chain voting will be released by the end of this week.

Ledger Application

As I am sure the community is aware by now, the Factom Ledger Live application was signed off by Ledger and is now available for download in the Ledger app store. It will be useable on mainnet as soon as the MyFactomWallet voting application has been launched. Again, that should be within a couple of days.

Overall Impression

I believe the team has proven their ability to execute the grant to specification, as proven by the completion of the Ledger application and the publicly visible work done on MyFactomWallet. The work completed so far has given me every reason to believe that they will ultimately be able to deliver on their promises.

The outstanding concern is currently timing. Recent milestones have been quite significantly delayed. Thankfully, I believe this to be a result of the inherent difficulty in predicting software development timetables, rather than a result of neglect or incompetence on behalf of the team.

Regretfully, I have come to the conclusion that acceptance testing for the voting protocol will take longer than many of us would like. The relative complexity and sensitivity of the protocol necessitates thorough testing in order to ensure the safety and reliability of the results it produces. The team has given no indication of a timeline and I am not in a position to make a guess; I believe the community will need to exercise patience.
 
Last edited:
Status
Not open for further replies.