Notes on Steem Proposal System
@blocktrades announced that the initial version of SPS is ready for public testing three days ago.
For those we don't know, SPS is a proposal system allows funding STEEM accounts based on the proposed projects. Stakeholders decide if the proposal should get funds or not. It is similar to witness voting, in that perspective.
After the discussions about where should the money come from, the first version uses a donation system to feed the proposals. This may change with a new hard fork (e.g using the inflation) if that model doesn't work.
Reviewing SPS
After the CTA about public testing, I have spent some time reviewing the changes. Even though, there is a public testnet available I wanted to have a private testnet for the SPS. This was the first time I have been running a private testnet, and it was a great learning experience. (literally bugged @inertia in every 5mins, about tinman :P)
I have already reported a bug and proposed a small design change. Both of the issues are addressed in a timely manner. Things are changing and progressing fast on the project these days.
Resources
SPS API plugin wiki entry explains the new RPC endpoints.
SPS Operations wiki entry explains the new operations defined in SPS context.
General Notes
- Payments are done daily with SBDs.
- There is a proposal creation fee to prevent spam proposals.
- A proposal includes these fields:
{
"creator": string,
"receiver": string,
"start_date": date iso string,
"end_date": date iso string,
"daily_pay": asset,
"subject": string,
"permlink": string (permlink)
}
The fields are pretty obvious. permlink
is unique together with authors in STEEM context, so it can be @creator/permlink
or @receiver/permlink
. The creator
account has the priority in case of any conflict.
- A treasury account is allocated to hold the funds. (
steem.dao
at the moment.)
Using Lightsteem to broadcast SPS operations
Here is a small script to create a proposal in the public testnet.
from lightsteem.client import Client
from lightsteem.helpers.amount import Amount
from lightsteem.datastructures import Operation
USER = ('emrebeyler', '<posting_key>')
NODE = 'http://sps-blocktrades-testnet-api.blocktrades.info:8090'
# monkey patch Amount class
Amount.ASSETS.update({
"TBD": {
"nai": "@@000000013",
"precision": 3
}
})
def create_proposal():
c = Client(
nodes=[NODE,],
keys=[USER[1]],
chain=dict(
chain_id="18dcf0a285365fc58b71f18b3d3fec954aa0c141c44e4e5cb4cf777b9eab274e",
prefix="TST",
),
)
# Assuming the USER[0] has a Comment with relevant permlink
op = Operation('create_proposal', {
"creator": USER[0],
"receiver": USER[0],
"start_date": "1970-01-01T00:00:00",
"end_date": "2019-06-01T00:00:00",
"daily_pay": "10000.000 TBD",
"subject": "testing stuff",
"permlink": "hi-i-am-meeseeks-look-at-me"
})
c.broadcast(op)
if __name__ == '__main__':
create_proposal()
Since Lightsteem follows a generic approach to send requests to STEEM nodes, there is no update required. There are also steemjs and steem-python branches available to test related RPC endpoints or broadcasts SPS ops.
Overall, I am excited about the Steem Proposal System. I will be following its development closely. It's good to see the project has good progress, so far.
Vote for my witness
If you like what I do, consider casting a vote on Steemconnect or on Steemit
Thanks for the excellent update on the project!
This post has been included in the latest edition of SoS Daily News - a digest of all the latest news on the Steem blockchain.
There's absolutely nothing here I can understand - nothing.
I've been using computers and the internet since day 1, I've owned businesses online, websites, administered forums of 100k+ members, and taught myself to program some basic languages over the years. I was considered genius level by several professors and IQ testers etc.
And yet there's zero here for me. You literally lost me in the first sentence, and yes, I did go to the link and try to understand that, too.
All I get from it, is that something may have happened or may soon happen, and it may or may not involve me as a simple content creator.
Please, if there's anything of importance here for the average user of Steem, will you consider rephrasing it?
If not, please let me know so I can ignore this. Thanks!
Some background concerning the project:
https://steemit.com/blocktrades/@blocktrades/blocktrades-beginning-development-of-steem-proposal-system