Introduction
Couple month ago, SteemPoll was introduced to help community further making better decisions and get consensus decentralized way. Project is running and there has been great feedback from community and users. In this post, I will write new technical improvements which will move project further helping us to build better consensus mechanism.
SteemPoll v1 feedback summary
Overall community liked the idea and few test cases suggested that, using vote operation with different voting weight can be abused because of voting tails as well as by bots. So usage of custom_json with custom operations/voting were naturally suggested. Also some authors would like to have polls posted from their own account or community account, instead of using one account to post all polls. Because authors has bigger and their own special audiences to share or ask questions and do specific polls. Having template/pre-formatted text for polls are great, but if authors would like to post their own descriptions and post it through their own account, then template part should be as little as possible. Naturally, embedding polls to posts was requested. So in this technical document, I will try to solve as many issues as possible. Below should not only solve issues but also bring flexibility and improve future scalability of the project.
Submitting poll
- Fill a form on steempoll.net
1.a. Poll title
1.b. Poll description
1.c. Poll deadline
1.d. Poll options
1.e. Poll tags - Get unique embedding line after successful submission (it can be any custom markdown
<div poll_id=”123”></div>) - Embed given line in your Steem post and submit your post through any app
3.a. Select tick, If you choose to stay anonymous, in which case poll will be published throughaccount.
Backend
- Backend will detect poll post with poll id
- Post poll as comment to post. (after deadline, this comment will be edited with result and giving notice about deadline, which can also be used by UIs to disable voting on options)
- Poll options will go as replies to poll comment (options comments can be submitted as payout declined and voting declined, but adding json_metadata keyword to detect that those replies are polling options giving UI to detect and show custom_json voting buttons)
Voting on polls
Each option have json_metadata on option which can be used to enable custom_json operation from any UI
Vote on option with Reason through steempoll.net
Aggregation
custom_json would collect following data to aggregate and show outcome meaningful way.
- Account vest/sp
- Account reputation
- Account join date (or activeness indicator)
- Account username
- Reason (optional comment on user selected answers)
Since custom_json does not get indexed on blockchain, any new vote (custom operation) would override old vote, meaning custom_json operation will consider only latest opinion. SteemSQL or SteemData can be used for charts and outstanding results
Outcome/Results
Charts or results can be seen with different filters, by reputation, by stake, by activeness.
Each option has its own discussion since they are comments, discussion can continue under specific option to further evaluate the choice. SteemPoll will show options and their respective votes (sorted by weight/stake, reputation, etc.) and discussions.
UI - is usually referred to 3rd party apps or user interfaces in above context, e.g. Steemit, eSteem, Busy. Steempoll will be proper stand-alone app with all those functionality that gives easier access. To post, read, vote, see outcome, filter, etc. Other UIs will be alternative and help bootstrap participation on each poll.
Post is a bit technical, so I would appreciate any developer and/or technical input as well as other feedbacks on usability and design suggestions if you have used similar services before.