Introducing SteemAX Auto-Upvote Exchange

in utopian-io •  10 months ago

SteemAX

A Steem blockchain auto-upvote exchange system. See SteemAX on GitHub

SteemAX uses Python 3.0, MySQL and the Steem-Python library to utilize the Steemit/Steem blockchain technology.

steemax_mockup.jpg

Concept

SteemAX provides a way for Steemians to barter and make agreements on exchanging upvotes with each other for a set period of time. They do this through a barter system, each taking turns bidding on the amount of their upvotes they would like to exchange with each other. The upvotes are placed automatically by SteemAX for the agreed upon time period.

Process

To start the process the inviter chooses a percentage of their upvote to exchange, as well as the ratio between upvotes and the number of days the auto-upvote exchange should take place. A unique Memo ID is generated which the inviter sends along with 0.001 SBD (or more) to SteemAX, which in turn forwards the amount to the invitee along with an invitation acceptance link. The invitee can choose to decline, accept or barter. If the invitee chooses barter they can adjust the percentage of the inviter's upvote, the ratio between upvotes, and the duration. If the invitee wishes to barter based on their own upvote value they can decline then start a new invitation. For authentication, all barter offers and invitations will be placed, first by entering the barter values into SteemAX, then authenticating by sending at least 0.001 SBD, along with the Memo ID, from the invitee/inviter's Steemit wallet to SteemAX. SteemAX will never keep the SBD sent but instead forwards it to the invitee/inviter. Once a Steemian accepts the offer, the auto-upvote exchanges take place with the following rules.

Exchange Rules

SteemAX will periodically check the eligibility of the exchange participant's posts and if the following rules are met an exchange of upvotes will automatically take place.

  1. Both accounts must have a recent post (not older than 5 days)

  2. Only a new post since the last auto-upvote exchange is eligible. Upvotes are not retro-active.

  3. If more than one post meets the criteria above, the most recent post will be used.

Reality

SteemAX is currently in the development phase with most of the core features already present in command line form. The current working version of SteemAX can be downloaded and installed using either git clone or pip. Functionality for creating an invite, bartering, canceling, determining post eligibility, as well as the process of determining vote exchange values based on the current state of the Steem blockchain, have already been created. What's left is to create the Memo ID authentication process, and the shiny front-end, which most likely will be written with help from the steem-js library. In it's current form, SteemAX is "disarmed" and does not actually exchange upvotes when it's run, but instead prints the message "Auto upvote exchange occurred" when all eligibility requirements are met. SteemAX will be "armed" with the code necessary to exchange upvotes when most the bugs have been fixed and a stable version is running without problems.

Future Tasks

There's a lot that still needs to be done to bring SteemAX to fruition. The very next step is to complete the Memo ID authentication process. Next, will be to research the possible use of SteemConnect as an alternative to storing private posting keys. The front end of SteemAX will utilize Steem-JS to fetch account info and process eligiblity requirements before being submitted to the back-end, a task that is practically it's own development project.

Instructions for installing SteemAX on Ubuntu 16.04

Please see INSTALLATION.md

steemax_screenshot1.jpg

Instructions for use

Once SteemAX has been installed and the database has been set up (using the instructions below), simply type "steemax" at the Ubuntu command prompt. If this is the first time SteemAX has been run, the SteemAX database tables will be created and initialized, then you will be taken to the SteemAX command prompt. Type "help" to get a list of SteemAX commands.

** Welcome to SteemAX **

You will see this greeting when first running SteemAX.

[steemax]# invite

Typing the command "invite" at the steemax command prompt starts the invitation process. The inviter is asked the following questions:

  1. Inviter's account name. This is the inviter's Steemit.com account name, entered without the @ symbol.

  2. Invitee's account name. this is the invitee's Steemit.com account name.

  3. Private Posting Key, which is found in the inviter's Steemit wallet. This is used to automate the upvote exchanges.

  4. Percentage of the inviter's upvote the wish to exchange.

  5. Ratio between the two account's upvote values. This is defaulted to 1 to 1.

  6. Duration, in the number of days, for which the exchange should take place.

When all information is entered a unique Memo ID is generated that is then used to reference this exchange in all future transactions. When all functionality is present, the Inviter will be asked to send at least 0.001 SBD along with this Memo ID to SteemAX so that the Inviter's account can be authenticated.

[steemax]# barter

Typing in the command "barter" at the steemax command prompt allows an Inviter or Invitee to modify the parameters of the exchange. Regardless of who starts the barter process, the parameters always affect the Inviter's upvote. If the Invitee wishes to exchange based on the value of their upvote they can cancel the exchange and start a new one as the Inviter. Whoever starts the barter will be asked the following questions:

  1. Account name, either inviter or invitee.

  2. Memo ID that was generated during the invite process.

  3. Percentage of inviter's upvote to be exchanged.

  4. Ratio between the two account's upvote values. This is defaulted to 1 to 1.

  5. Duration, in the number of days, for which the exchange should take place.

Once all information has been entered the one making the barter must send at least 0.001 SBD along with the Memo ID to SteemAX so that their account can be authenticated.

[steemax]# accept

Typing in the command "accept" at the steemax command prompt asks two questions then starts the auto-upvote exchange as was agreed upon.

  1. Account name of the one accepting. This will normally be the invitee unless a barter process has been started.

  2. Memo ID generated during the invite process.

steemax_screenshot2.jpg

[steemax]# account

Typing in the command "account" at the steemax command prompt allows the user to enter a Steemit.com account name to verify it's existence. If the account exists SteemAX will return the the accounts' Steem Power, current Voting Power, and current Upvote Value.

[steemax]# eligible

Typing in the command "eligible" at the steemax command prompt allows the user to enter the same information as if they were starting an invite but without actually creating an invite so that it can be worked out what percentage and ratio might be best between the two accounts. Please see the 'invite' command for more information.

steemax_screenshot4.jpg

[steemax]# pool

Typing in the command "pool" at the steemax command prompt brings up the relevant information necessary for calculating the Steemit Reward Pool and the value of a Steemit account's upvote. SteemAX displays the current Reward Balance, the Recent Claims and the current price of Steem as delivered by the Witness Price Feed.



Posted on Utopian.io - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Hey @learnelectronics

We're already looking forward to your next contribution!

Decentralised Rewards

Share your expertise and knowledge by rating contributions made by others on Utopian.io to help us reward the best contributions together.

Utopian Witness!

Vote for Utopian Witness! We are made of developers, system administrators, entrepreneurs, artists, content creators, thinkers. We embrace every nationality, mindset and belief.

Want to chat? Join us on Discord https://discord.me/utopian-io

·

Awesome! I look forward to contributing. Coding is one of my passions.

Thanks for the contribution. It has been approved.

As @tdre mentioned on the quality of your code could be improved, but other than that, it looks like an interesting project and you have obviously put a lot of work into it! One more thing though, in this commit you added nearly the entirety of the project's code - in the future please split this up into multiple commits.

Keep up the good work and I look forward to seeing more of your contributions!


Need help? Write a ticket on https://support.utopian.io.
Chat with us on Discord.

[utopian-moderator]

·

OK, good to know about the commit. As you can see I'm new to GitHub, but I think I have the process down. Python3 is new to me so I'll be sure to study some best practices for my coding. @tdre has already suggested smaller functions. Any other advice you can give for better quality code would be appreciated! Thank you!

Thanks @learnelectronics for making a valuable open source contribution to the ecosystem for Steem et al. I think the SteemAX code is off to a solid start. I'm happy to review and score it.

There is one aspect of your UI mockup that did not effect my scoring, but that I still think is important note. For the field highlighted below, the label 'Active Posting Key' could easily be misread or misunderstood to be requesting the user's active key where I think you just meant to indicate a posting key that is currently valid.


Since clarity is important both for security/privacy of accounts as well as the reputation of the project I suggest a change to this wording in any future mock ups or prompts. The best alternative for the long run may be to incorporate a trusted identity layer like SteemConnect instead of collecting keys directly.

I think this project is a good idea and that some SteemIt users are clamouring for a tool like this. It's encouraging to see your progress so far and the commit history reflects growth and improvement already. I did feel there were a few places in the code that did not follow some best practices. For example some functions are long, complex or take up to seven arguments and could hopefully be refactored.

These are small code quality issues that can improve over time. You can be mindful of them to score even higher in the future.

Another great thing about your contribution was the amount of research and effort that went into understanding the problem and coming up with a solution. The Steem space and its supporting libraries can be a daunting place to figure out how to do things and use API's. You've done very well at this and I scored you highly in this area.

Great start on a project with potential. You've got my personal upvote and best wishes for the voting round.

·

Thank you @tdre! I appreciate your feedback. It's this kind of feedback that makes me like utopian.io so much. :) I was aware of the "active posting key" verbiage and accidentally let the old image slip through. FIXED! I also have plans to utilize SteemConnect for authentication purposes and although I had included a "Future Plans" section in my GitHub README, I managed to forget to include it in this post. FIXED!

Future Tasks
There's a lot that still needs to be done to bring SteemAX to fruition. The very next step is to complete the Memo ID authentication process. Next, will be to research the possible use of SteemConnect as an alternative to storing private posting keys. The front end of SteemAX will utilize Steem-JS to fetch account info and process eligiblity requirements before being submitted to the back-end, a task that is practically it's own development project.

Thank you for recognizing the amount of work I put into this. I really wanted my first go at utopian to be a good one so I hope I hit the mark. I look forward to collaborating with fellow Utopians.

Congratulations @learnelectronics! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You got a First Reply

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by jjay from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.