I just updated the description and screenshots to give more technical details and background information. We also plan to have a video in place as we proceed with the prototype.

For all who want to know more about the details, we will present our solution

  • this Thursday 2nd of July at 20:00 CET (Berlin), 14:00 ET (New York), 11:00 PDT (San Francisco).
  • and on Friday 3rd of July at 09:00 CET (Berlin), 12:30 IST (Dehli), 17:00 AEST (Sydney)

We will present the election creation and voting proccess. Free dial in with https://hello.freeconference.com/conf/call/6439049
As we will provide the service for free, we are looking for ambassadors to promote the platform.

I'm looking forward to meet you in the call

5 days later

Thanks for all who joined our call on Thursday and Friday.

We received some inspiration and also feedback on the usage on Safari/Apple. We will now prepare a video to present the whole workflow and explain the usage of the Stellar features within the voting process.

Hey,
I tried to create a poll using your service. The poll creation wizard completed without any problems or error messages, but in the end I didn't receive invitation emails. I used temporary mailboxes on the maildrop.cc, so maybe it's the case. Or maybe because I set the beginning date and the end date of the survey to the same day (as I understand, this means that the poll should be active only one day, but the service might handle this situation incorrectly).

A few more notes and questions:

  • Maybe it worth using something like a to-do list UX pattern for voting options. For instance, http://todomvc.com/examples/react/
  • It would be nice to have multiple-choice answer options (selecting 2 or more options).
  • Is it possible to make an open voting instead of sending invites?
  • "Title not valid, needs to have between 5 and 25 charakters" Why such a limitation?
  • It worth adding settings to enable answer options randomization, otherwise the voting results may be distorted (social studies show that there not-randomized surveys tend to show clear bias towards the first few listed options).

Really like the overall wizard interface, looks neat and clear. I hope you'll fix the problem I mentioned above or tell me what I was doing wrong, so I could continue to explore it.

    OrbitLens Here is my feedback on your points:

    Implemented / Solved

    • Invitation email: I checked the service you used (maildrop.cc), looks like this email-service is not active. I'm using this service to create temporary emails: https://temp-mail.org/
    • Start and end date: it can be set to the same day, this is not a problem.
    • Limitation on title length: is changed to min length of 3 chars.
    • Answer options should be randomization: is now implemented

    In Discussion

    • UX pattern for voting options http://todomvc.com/examples/react/: I like it and will put on my todo list. For now the priority to will be on security and overall workflow.
    • Multiple-choice answer options: yes also a good extension to have in the future. Depending on the possible combinations of the vote, it could be quite a high number of presigned transactions to be created. But should be no problem.
    • Open voting (instead of using email auth): I was thinking on this one, but cheating is quite easy on a open voting system, even if you capture the IP and other data. There could be a usage for simple polls where user have no interest to cheat.
      @All: what does the community think about the value of open voting (no athentication) in combination with blockchain.

    I'm looking forward to more feedback like from @OrbitLens. The system is active on publicnet and everyone can use it for free: https://blueorion.cc/voteadmin

    Yep, the previous problem was caused by maildrop.cc. Who would know? I used that service in the past and it worked without any problems. Continued testing and here are some notes:

    • The subject of the email I received states "Admin Init - 238". It would be great to write something more intuitive.
    • I thought that once the creator clicks the activation link, all users specified in the invites field will automatically receive email invitations with the survey links (at least that how it works in traditional online survey systems). But you actually send the poll invitation link that has to be sent directly to the respondent by the survey initiator. When I click the link the system asks for the authentication. I had to copy-paste the respondent address email again, and only then the respondent receives the invitation email. If you worried that people will use your system for spamming, ask for the survey creation fee (like, 100XLM) to prevent potential bad actors from exploiting it.
    • When I finally got to the next step, the website returned the following error:
      Fatal error: Uncaught ArgumentCountError:
      Too few arguments to function p_election_voter_options(), 2 passed in /var/www/blueorion.cc/public_html/index_election.php on line 88 and exactly 3 expected in /var/www/blueorion.cc/php/p_election.php:354
      Stack trace:
      #0 /var/www/blueorion.cc/public_html/index_election.php(88): p_election_voter_options(Array, '<!DOCTYPE html>...')
      #1 {main} thrown in /var/www/blueorion.cc/php/p_election.php on line 354
      (the link itself: https://blueorion.cc/elvote-238-bIO1qj2e9Tdn5S3lYEhKy7QN6mL2Sw9nZUmaC6p8rEi4V7Yupo0VgfPjkATbMtDs)

    Also, I checked the screenshot and the link on the block explorer. The voting progress and results are recorded using custom token, that's very cool! It potentially allows using poll results in smart contracts logic. This a core building block for DAOs and governance. At the moment I don't fully understand where those tokens lend in the end, so looking forward to continue testing once you fix the issue with the server.

    One more suggestion regarding results. I assume that you write aggregated results in a file upon survey competition and save them on your server. This is not really decentralized or durable, since your server can go offline or switch to some other protocol in the future. How about query and show all results on the fly when a user visits the survey info page? Everything is stored on the ledger, so you can fetch all transactions and aggregate results using js on the client side. This sounds like a more "trustless approach"; the results calculation logic doesn't depend on your backend in this case.

    Re: open voting – you can list all on-going surveys on the website, but invite users into the poll by sending survey tokens to their accounts when they click a "participate" button. Alternatively, you can also check additional preconditions before sending tokens and allow only specific users based on the survey participation criteria (e.g. only accounts older than one year, or accounts with at least 100 EURT, or only accounts holding Reddit photon tokens).

      OrbitLens Thanks again for testing. Based on your last feedback, I started working on an open voting version. I still think open elections or surveys might be not the main focus, but it would be good to draw more attention to the platform, as it would be very easy to provide a participation link (without knowing the email). Also a participation button towards ongoing surveys on the website is a great idea.

      Here is my feedback on your last entry:

      Implemented / Solved

      • Website Error: is fixed now (function call was not updated on the prod-server) Note: as you posted the authenticated link above anybody can vote using this link. After one time voting the link will be not valid any more.

      In Discussion

      • Email subject: "Admin Init - 238": yes true its very technical, as for the prototype I keep it simple, but definitely can be improved
      • Automatically receive email invitations: As you write currently the admin needs to send the invitation email to the voters by himself. This has the advantage that the admin can define the email text by himself. I propably will provide the option, if a) the admin wants to send the email by himself or b) the emails will be sent automatically (this is necessary anyway, if we have a higher number of voters)
      • Prevent spamming: yes I installed that email verification on election creation to avoid spamming. To ask for a fee could be an option. As for now, giving easy access to test is important and I want to keep it free of fees.
      • Decentralized check on results:
        a) as implemented: all votes are written into the blockchain and therefore the results can be reproduced any time without the server, just by counting the votes/memos.
        b) as implemented: the results pdf is hashed and also written into the blockchain, so if you store the pdf you can prove the results anytime later on without relying on the server
        c) currently we check the entries on the blockchain and store it temporary to have a fast access. As you write there also could be a script which creates the voting results on the fly. Then this would be a open source script anybody can execute to get the results on a certain election. And our platform is not needed at all. Did you mean that? Maybe that script could be also provided by third parties/blockexplorer?
      • "participate" button: great idea, also regarding the additional preconditions

      No luck for me... Managed to receive invitations and get to the voting page, but couldn't complete the voting. This time because of the fee surge pricing. A few observations based on the analysis of raw XDR of the transaction.

      • You always set the minimum transaction fee and it's impossible to get it submitted into the ledger when the fee surge pricing occurs. I tried like 8 times during the 15 minutes timespan and haven't succeeded. The horizon always returns 504 Gateway Timeout, and your UI shows the followoing error: Connection Error. Your vote failed due to missing connection to the Stellar network. Make sure you have a stable internet connection, wait some minutes and try again by using your email voting link. Which is not exactly accurate as the problem is not with the internet itself, but the fee surge pricing. Current fee stats can be fethced from the https://horizon-testnet.stellar.org/fee_stats endpoint. At the time of writing the minimum accepted base fee was 200 stroops.
      • What if the answer option is larger than the memo? Probably it worth using answer identifier options – in combination with the answer option text (2. The text itself) or the identifier alone (2).

        currently we check the entries on the blockchain and store it temporary to have a fast access. As you write there also could be a script which creates the voting results on the fly. Then this would be a open source script anybody can execute to get the results on a certain election. And our platform is not needed at all. Did you mean that? Maybe that script could be also provided by third parties/blockexplorer?

        You can simply create a tiny NPM package for this purpose. In this case any interesting party could install it on their website to verify or display voting results. We can also host such verification page on StellarExpert once your app goes in production.

        As a side note, try to play around with existing survey engines, like SurveyMonkey or Typeform. They are building online surveys for years and have a lot of ready-to-use receipts on how to implement invitations and prevent spamming while offering great UX for the respondents.

          Thanks for all of the information. Really usefull

          OrbitLens Here is my feedback:

          Implemented / Solved

          In Discussion

          • What if the answer option is larger than the memo? Currently we only allow answer options to a max length of 28 chars. Yes, we also thought about identifier options. For transparency we go with direct text options written into the memo field. This could be changed later

          As always we are looking forward to more feedback.

          Freitag

          There's a catch though: when you deal with people money you generally don't want to load external JavaScript directly into your service - especially if you have private keys in there!

          An alternative solution is to use Iframes, which comes with adequate compartmenting. Browsers went a long way to make that thing well-secured and that's something we shouldn't overlook.

          I've been trying many ways to integrate things as my apps are modular & meant to connect with others - and as far as I can tell iFraming is worth the trouble, although you can also offer several options at once to meet people preferences.

            MisterTicot Yes, I think for security reasons I-Frames are a good solution, I will consider that, if I'm implementing status scripts.

            8 days later

            Congrats on making it to the final round of SCF #5! Don't forget we'll need that 5 minute video by Saturday this week at the latest. Just send the video file to Anke, anke@stellar.org whenever you get it finished.

              tyvdh Thank you Tyler, we will provide the video. And thanks to all who supported us. We are looking forward to take this project to the next level.

              7 days later