[Changelog] Piston 0.3

in #piston8 years ago (edited)

Release 0.3

This release is a major update with significant changes under the hood (see below). It now already comes with a basic piston.web version (documentation available in README-web.md) and fixes quite a lot of nasty littly bugs.

As usual, bug reports are welcome.

Howto upgrade

pip3 install steem-piston --upgrade     [--user]

New:

  • [piston] show history in cli
  • [piston] allow to provide tags or any arbitray data in the frontmatter header
  • [piston] add powerdownroute command
  • [piston] show interest payments and when they can happen the earliest
  • [wallet] allow to overwrite password promt by means of an environmental variable 'UNLOCK'
  • [piston] delkey, getkey and minor fixes in the wallet
  • [steem] add get_account_history call
  • [steem] allow sorting of posts by total_payout_value
  • [steem] get_comments call
  • [wallet] implement masterpassword

piston.web:

  • [web] cleanup and singelton websocket connection
  • [web] funds: add interest payments
  • [web] improvments and index page
  • [web] tokenize tags
  • [readme.web] piston now in develop (later master) branch, howto for windows7
  • [web] README-web: add dependencies for apt-get
  • [web] allow to specify --host to listen to, defaults to 127.0.0.1
  • [web] show root posts for replies
  • [web] list more transactions and filter by type
  • [web] Readme some dependencies
  • [web] voting spinners
  • [web] add a footer and some bottom distance
  • [web] simplify html/markdown presentation
  • [web] settings page
  • [web] properly show comment_reward in the tx history
  • [web] remove lxml dependency
  • [web] highlight own posts
  • [web] fix reply identifier not in the form
  • [web] README
  • [web] fixes for the wallet import procedure
  • [web] massive update
  • [web] more structure, content and the ability to post
  • [web] initial browse view
  • [web] initial work on standalone piston.web
  • [browse] allow to browse more than 10 posts

Fixes:

  • [Makefile] don't intend the git tag message
  • [account] properly use graphene-inherited account module for key related stuff
  • [docs] a page about this.piston.rocks API server
  • [docs] documentation of source code
  • [piston] add a piston.py file for development
  • [piston] ensure on startup that the piston node is available
  • [piston] fix author on posts
  • [piston] fix default_author for replies
  • [piston] fix transfer amount/asset distinction
  • [setup] cleanup dependencies
  • [setup] fix flask/egg issue by disallowing zip
  • [setup] make sure the user uses python3
  • [setup] update dependencies
  • [sqlwallet] initial commit
  • [steem] don't randomly throw any keys in create_account
  • [steem] fix Post when used with an indentifier
  • [steem] fix account creation
  • [steem] fix get_recommended when no recommendation returned
  • [steem] remove recommended
  • [storage] Backup solution
  • [storage] create app_data dir if not present
  • [storage] enable multithreaded access to storage
  • [storage] more robust backup
  • [utils] don't exit on exception
  • [wallet] ensure to overwrite the keys if manually passed
  • [wallet] legacy wallet code cleanup

Important Notes:

  • If you had a piston wallet before, you will need to migrate your
    existing wallet into the more modern SQLite-based wallet. This works
    as easy as running

    piston listaccounts
    

    You will be asked to provide the old password and a new password. Afterwards,
    your private keys will be BIP32 encrypted and stored in your local piston
    wallet.

  • The piston wallet stores it's database in your appdir:

    OSX:

    • ~/Library/Application Support/piston

    Windows:

    • C:\Documents and Settings\<User>\Application Data\Local Settings\Fabian Schuh\piston
    • C:\Documents and Settings\<User>\Application Data\Fabian Schuh\piston

    Linux:

    • ~/.local/share/piston
  • The piston wallet will create backups of your local database now and then and
    store them in the backups/ folder next to the database (see above)

  • If you use the steem.transfer() call you will need to modify your calls to
    now distinguish asset (string) from amount (float).

  • The piston.create_account no longer generates a password for your, you will
    need to either provide a password or the public keys for creating new
    accounts.

Sort:  

You sure put hard work in this! , Thanks for the post! - Although I do not know what piston is and/or how to use it I do think that this has helped out others !

Boobie doobie doo...

With a little little luck, after spending all morning chasing a hundred dependencies for a clean debian install, I am writing this post via piston.web and @xeroc is da man!

@xeroc, can piston cli be used to propose transactions already?

Steem doesn't know "proposals", hence piston doesn't know how to propose transactions.
I can start working on a cold storage solution though ..

@xeroc Thank you for your work.

Can you help me?

myvar = steem.get_content("my_permlink")

When I load the post , I can get information from the variable - class.
For example:
print(myvar.author) or print(myvar.pending_payout_value)

How can I access to data and time - when post was created? Not myvar.active
myvar. ???

And yet .. How can I find out the number of comments in current post ? I want to calculate (to know) how many comments a post has . But I can not find anything .
myvar. ??

Thanks.

this this print(vars(myvar)). It will show all the available attributes

keep it up @xeroc !
it supports python 2 in the future?

Thank you. You do great work.

Can't wait to reboot into Ubuntu and try (lubuntu complained about too many dependencies + I'm too noob), so much looking forward to piston.web!

  • [web] massive update

\m/,

great work @xeroc, btw I was able to run piston on my own steel node with the instructions you provided in the comments. thanks!

Brilliant as always my friend. Thank you for the updates, I shall go ahead and handle that. Vote for @xeroc as a witness!

Thanks for doing brilliant work..

Installing and using the piston cli command seems to be pretty simple. I am not interested at this point in any kind of write operations, I just want to read for now.

I have dug through the files that pip3 placed in my local pip repository, and I am starting to learn about how things are structured. I will continue to do this because at this point, aside from the good documentation of the CLI client, the ways to invoke it from within python code are not clear to me at all. This is not a complaint. I also think that you absolutely deserve to have earned the some of them incredible rewards your posts about this have earned.

It is a testament to the versatility of this platform. You don't even have to do all the footwork setting up a crowdfunding project to do it. I am sure that you are enjoying some of your payments, as well you should, but I want to add to this project, not directly, but by making something that uses it.

So I see that it appears that I really do need to be running a witness (full) node, ideally. Sure, I can use yours in development, and I will for the time being, since my queries are not going to be frequent. I don't think you will be late on the hosting bills for running it at this point anyway. I want to understand every aspect of this and I am absolutely stoked that I can with one pip3 command have the whole thing in my machine, ready to take my commands, and that it currently defaults to a usable and working RPC endpoint, piston.rocks.

Since I am on a metered connection, albeit fairly cheap (about $12/10gb) I think it better if I don't be running a witness on my little fitlet a10, at least not until I get a nice fat ethernet cable and a 50-100mbit unlimited connection hooked up to my room. I think this little box could handle the job pretty good if it was all it was doing, but I need to also work on this, and that includes using the steemit.com site as well, which is pretty damn heavy going when you load up a well populated comment feed on a post.

I cannot find anything resembling a python library for accessing the library, and there is only one valid command listed on your page so far. A few tips how to dig them out of the mountain of awesome source code you have written would go down well for someone who like me wants to hack this and make use of it.

I wish the whole web ran on python, it absolutely is the best interpreted/VM language in existence, javascript is nasty, and not only that, if python were embedded in webpages, it would be readable! yay whitespace structuring.

I will continue to plug away on this alone, but when you have the time away from your sipping vodka and martinis on maybe a well deserved carribean holiday ;) something to help people who actually want to extend beyond your app to do things as I do, writing a Gtk+-3.0 app built on this, would be fantastic. If I can do half as well getting support to fund this project, I will be putting an RPC endpoint up specifically to use with the app I am developing, which I am calling 'steemportal', also.

I have some ideas which you can find amongst my posts about the idea of creating sidechains to support extended features for Steemit, such as groups, in particular, using a namecoin-like name translation system, or even finding some way to grab a name off namecoin itself and creating a subdomain branch linked off it.

Thanks for any tips you can give, or for that matter, anyone else who knows what they are talking about.

So I've got a conundrum . . . . I've got a bunch of lines of code for upvoting like
steem5 = Steem(wif=["removed","removed"])
steem5.vote(article, 1, "herpetologyguy")
steem5.vote(article, 1, "davidjkelley")

They all work uniformly except for two name/key pairs (regardless of where I put them).

Now, the first obvious guess is that there is something wrong with the names or the keys -- except that I can copy paste them into steemit and they work just fine.

The only thing that the names have in common that they don't share with any other name is that they both contain the letter y . . . .

Any guesses? Thanks in advance! -- Mark

Error details:

piston.steem.BroadcastingError was unhandled by user code
Message:

One additional piece of information - I added another account. I now realize that these three accounts are the three with the least Steem Power (ranging between just over 70 to just under 105). Is there a minimum Steem Power required?

Now non-reproducible . . . . sorry to bother you . . . .