stasbar Thanks for the description but what is the most important feature in the voting platform?
The answer is simple, the poll result must be valid.
why we use blockchain in the voting platform?
because we want to show that the poll result is valid and no one can change it.
So what happens if you don't use the public key for a validating vote and don't use the private key for signing that?
The answer is simple, votes are invalid because no voter signed them and you can't prove that.
One example: Imagine that we would use your voting system for this Grant Stellar period
And everyone can vote indefinitely
Can we trust the poll results?
I refer you to look at the Status voting system, this is a perfect sample of a voting system

    stasbar Also the image you posted is a simple structure of all Stellar apps
    And it doesn't show the structure of a decentralized voting platform.

    Justin

    Does people can vote using proof of stake like on Binance with BNB?

    This solution is built with non-crypto users in mind. I argue that this is the only way to use this solution on large scale.

    Proof-of-stake voting or I would rather say stake-weighted voting, would be very interesting in crypto space.
    If we take the basic weighting model, i.e. based just on amount of XLM on your account, then the implementation is really straightforward. Instead of the vote token go directly from distribution account to ballotBox account, it would go first from distributing account to the user account, and then from the user account to ballotBox account. This way, counting results would involve one additional step, checking the account balance at the end of elections.
    I will add it to the timeline.

    What is the business model to monetize the project ?

    For general-purpose votings, the idea is rather simple. Voting creation would require some fee, based on number of votes and some base fee for operational costs.
    For institutional level votings, it is mostly an operational fee that depends on the number of voters and the Authentication Server integration complexity.
    We plan to work similarly to those guys https://polys.me

    John

    the Status voting system, this is a perfect sample of a voting system

    Sorry, but in my opinion, the voting platform that requires metamask is made only for crypto users, and is far from being "perfect". Can you imagine the presidential elections that require metamask installed?
    As I wrote in the previous post, the implementation of your postulate is straightforward, and it's something I already added to timeline.

    Also the image you posted is a simple structure of all Stellar apps

    That's how the system is designed. Maybe the sequence diagram will clarify the concept.
    Here is an example based on Keybase authentication (same as https://stellarcommunity.fund/) works now.

    Voting creation
    Voting creation

    Casting ballot
    Casting ballot
    NOTE: batching and cut-and-choose methods were skipped for simplicity. Blind-signature algorithm was simplified

    Counting results
    Counting results
    NOTE: TDS could be easily removed in domain-specific voting, by injecting metadata directly into webapp

    If you are interested how will it work for one-time authorization codes here are the diagrams.

    • John replied to this.

      stasbar
      I disagree with you

      Can you imagine the presidential elections that require Metamask installed?

      Yes, if you want to build that on the Ethereum you must be used Metamask for Auth.
      I think you have trouble understanding the dapp structure.

      Add basic authN & authZ methods (cookie, IP address, one-time link, one-time code, email, etc.).

      Are you kidding? How do you want to prove who they voted?
      I think you know what I mean
      And you're just defending your centralized project

        John
        Excuse me, but where did I claim that this is dapp ? One place where I mentioned dapp is section 8. in my article, where I explain why it is NOT fully dapp. Only part of the system is decentralized, and I claim that this is enough to achieve outlined e-voting requirements. Since this system relies on a centralized authentication system, it inherits this property too. If you find a way to achieve decentralized auth on centralized identification provider, let me know, I will love to implement it.
        Since you start to humiliate me, I propose to stop our conversation.

          stasbar Excuse me Stasbar I thought it is a dapp and your app is decentralized.
          Thank you for your answer

          @John Decentralization simply isn't a requirement for the SCF. This is a fascinating project and I agree with @stasbar that decentralization as an assumption for every Stellar project is naive and unhelpful. Decentralization as a mindset or in certain areas may be useful but only as it serves a purpose, as a buzzword or an assumption can actually be dangerous as it can open you up to legal and regulation liability if you have little to no control over your own service.

            tyvdh
            Hi Taylor
            I wasn't trying to sabotage any project. This is just a matter of different opinions. I always try to be frank. As a developer, I believe merely using the SDK doesn't represent good structure. We should aim to solve problems fundamentally. This approach just makes developers lazy.
            I'll prove to you that these three properties of Stellar (Multisignature - Batching / Atomicity - Time bounds
            ) can be used to achieve great things but because most developers are not willing to spend time thinking about them, they just ignore them.
            I'm sorry if I've offended anyone. I won't discuss other projects anymore.

            stasbar Cool! I actually coincidentally came across your project in my search for a voting solution for the William & Mary Blockchain Lab that I am leading.

            https://www.linkedin.com/company/william-mary-blockchain-lab

            I am hoping to make some of our efforts decentralized by Spring 2021. I look forward to reading through your paper ,asking questions and following your progress.

            We do have a Researcher who specializes in e- governance affiliated with the lab, if you find yourself in need of a government expert to help lend a social science eye to your already impressive team of researchers, we are here to help.

              twiipongwii Great to hear that. When we finish the prototyping phase, it'll be more than helpful to reach someone involved in e-governance.

              I think that this is a fascinating project and I appreciate the details you’ve shared illustrating your depth of thought you placed into this. Regarding sustainability you mentioned that this would be a similar business model to polys.me but I’m unsure as to how they survive as well. Can you share some insight on this part of your plan? Thanks

                6 days later

                We have added:

                04.2020 Add keybase auth via one-time codes and keybase-bot (similar how https://stellarcommunity.fund works) ✓

                Additionally, you can specify the team membership requirements, so only members of a particular team can take part in voting. Therefore we can delegate the user authorization process to team owners. It is achieved by using keybase-bot. When the voting is created, stellotbot requests access to a specified keybase team. If the team is open, it automatically joins the team, If not, it waits until the team owners approve the stellotbot request. When the stellotbot can access the team membership list. When a user want to cast a vote in such voting, he enters his Keybase username, and send it to Stellotbot, which ensures that the user is a member of the required team. Stellotbot then sends a signed JWT token to username account in private message. User proof his identity by entering the received JWT token. TDS ensures that the username hasn't already issued the voting token. Now we are ready to issue voting token with blind-signature technique.

                Give it a try, this voting is restricted to stellar.public team members only. Right now the membership is checked on-request, but we are thinking about freezing the list at the time of voting creation, to prevent sockpuppeting accounts.

                samuelconner
                Monetization is something we will focus on after we create a working prototype. We believe that the demand for secure and private e-voting is something we don't need to worry about (especially nowadays), so the success of this project relies mainly on the properties we are able to achieve. Our undoubted advantage is the fact that user wallet/keypair is completely optional, and we designed the solution on the open Stellar blockchain, which is something we didn't find before. Our first targets are Universities we are associated with, so we already have a solid testing environment.

                  Hi, great to see you are proceeding. As you write especially with the corona crisis there will be an increasing demand on e-voting. For all different organizations.

                  stasbar

                  Give it a try, this voting is restricted to stellar.public team members only. Right now the membership is checked on-request, but we are thinking about freezing the list at the time of voting creation, to prevent sockpuppeting accounts.

                  I tried this but after loading for some time I got an error message: 'failed to fetch' and when trying again

                  API network error: Get https://api-0.core.keybaseapi.com/_/api/1.0/team/get.json?lookup_only=1&name=stellar.public&public=0: net/http: TLS handshake timeout (error 1601)

                  I guess keybase has some problems here.

                    trybal
                    Yes, it was a temporary keybase api problem. The issue is that on each vote request, the authorization server needs to fetch the whole list of team members to determine if the user is present there. The Keybase API is quite slow, and it also can be down sometimes. The freezing membership list during voting creation would solve the problem, but it would block new users to participate in voting. I think that simple caching will do the job.

                    a month later