Announcing steem-state - Build Any DApp on Steem!steemCreated with Sketch.

in utopian-io •  last year  (edited)

A framework for creating arbitrary soft-consensus-based DApps on Steem! Build any DApp, from tokens to games.


Repository: https://github.com/nicholas-2/steem-state

steem-state is an npm package that allows developers to build DApps using the Steem blockchain.

The Steem blockchain is one of the fastest and most performant blockchains in existence and also has over 60,000 active users each day, with free and fast transactions. steem-state makes it incredibly easy to create decentralized apps on the Steem blockchain using soft consensus.

What is soft consensus?

Most, if not all, blockchains focused on the creation of DApps today such as Ethereum are based around the idea of smart contracts. DApps running using smart contracts have their transactions verified by each node in the network. But this method is not the only way; not every node in the network has to verify every transaction for each DApp even if it doesn’t apply to them. When a transaction is not verified by every node in the network, but only the ones who use the DApp that the transaction applies to verify that transaction, soft-consensus occurs.

To use an analogy, the most adopted internet data transfer protocols (such as UDP) don’t try to do anything special with the data that is being sent. These protocols let the two users who are communicating verify, authenticate, etc their own data. Not everyone on the internet authenticates and verifies every data packet; it’s just not feasible.Similarly, not everyone on a blockchain has to verify and authenticate every data packet. Ethereum is trying to introduce unneeded complexity to the problem of creating DApps by requiring that every user has to verify every transaction in every DApp, and it’s already hitting a scalabililty barrier partly because of it.

Anything that a smart contract can do can be done with soft-consensus, and soft-consensus can actually do much more. A soft consensus DApp is easy to hard fork without forking the main chain it runs on, and it has easy support for virtual operations (when a DApp creates a transaction that will execute after a certain amount of time), which Ethereum and most smart contract blockchains do not have, and will be implemented into the steem-state package in v2.0.0.

steem-state uses the custom_json operation type to create soft-consensus transactions. You can read more at the dev portal by searching up custom_json.

steem-state

steem-state is a framework that allows developers to define events that occur on a certain transaction type, e.g. displaying data to the user or updating the internal state (such as the balance of the user). Using steem-state, one can create any possible DApp on the Steem blockchain, from tokens to games!

It can be installed by using npm install steem-state in any existing npm project.

Roadmap

In the future, version 2.0.0 will be released (currently in v1.0.7), which will include support for virtual transactions in DApps.

Tutorial

The best way to understand this is by trying out a tutorial, which can be found in the README on github. It will walk you through creating a fully decentralized messaging app on the Steem blockchain in 28 lines of code.

Contributing

If you have an interest in helping develop virtual transactions for v2.0.0, simply email me at [email protected]mail.com or contact me in the steem-devs discord at @Shredz7. But the best way to contribute right now is to create tutorials for the project! Email me at [email protected] if you create a tutorial, because I will be glad to resteem it and post it on the repository wiki. This doesn’t really fit into Utopian.io’s actual contributing section, but a great way to contribute is to spread the word and build DApps using this package!

If you have any questions, feel free to comment on this post or email me at [email protected]

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:  

Great project.

Custom JSONS are great. There are so much possibilities to implement great ideas.

  • I know this is an early state but unit tests with a good code coverage would be good. If I was a dApp owner, I would like to see the project includes tests.

  • Sometimes, RPC nodes have hiccups and return funny things. Not sure dsteem handles that internally, but having retry mechanisms on that kind of unexpected responses may help not to miss any custom json.

  • Also, thinking about a feature which makes this also a notification bus to send certain events to registered endpoints. This would help running the steem-state in a black box, and push events to other apps. (any type of language may benefit with that way.)


Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


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

Thanks for your recommendations!

Thank you for your review, @emrebeyler! Keep up the good work!

Great initiative. Its very important to always ask the questions for any application:

  1. What exactly needs to be decentralised and what doesn't?
  2. How much does it need to be decentralised.

For this application, we can allow for any level of decentralization; in the tutorials we demonstrate full decentralization but DApps like SteemMonsters use the same methods with less decentralization. It is important to choose the right amount of decentralization and therefore using steem-state may not be perfect for all DApps (ones who choose to be more on the centralized side).

This story was recommended by Steeve to its users and upvoted by one or more of them.

Check @steeveapp to learn more about Steeve, an AI-powered Steem interface.

Hi!
It's great to hear more people are working on these issues. We would love to help and contribute. We have a dApp platform built at dlux.io that is also in a prototype stage. We were discussing earlier today implementing incentivized decentralized relays and IPFS nodes to store state signed by keys and paid through fees. We already have AR/VR running in our containers. Find us on discord at https://discord.gg/Beeb38j

Great! I’m also trying to create a way to synchronise state for steem-state. I’ll hop on the discord and read more about your DApp platform!

Great initiative @shredz7

The steem chain has a lot of potential to exploit and thanks to this independent developers will be able to carry out their projects.

All the best, Piort.

Yes, I’ve already had multiple developers talk to me about building DApps using steem-state such as @dlux-io, which has already publicly announced their super interesting incentivization coin which might also open up the doors to even more potential for DApps running on Steem (the ability to create transactions).

I’m very excited about the future of steem-state and the Steem blockchain as a whole and would love to see Steem apps use the new potential allotted by steem-state!

I’m glad you’re interested in this technology. If you have any questions (Or suggestions for interesting DApps that could run on this for that matter), please reply!

Dear @shredz7

It's also great to see how responsive you are. Steemit need more people like you.

Thank you.

cheers, Piotr

Interesting, I like where this is going. Just a few thoughts:

  • use blockchainmode (latest/irreversible) as parameter
  • for dApps it's important that blocks aren't skipped. How do you make sure that this doesn't happen? And where is the current processed block-number saved? (How am I getting it back as user of the package?)
  • when I used streaming with dsteem it was somewhat unstable - having the option to use something like STEEMSQL would be interesting. (I've written some code for that in node-js recently, so if you need some help with it, let me know)
  • there will be apps that are using required_auths - this needs to be included as well.
  ·  last year (edited)

Yes, this is still in the earlier stages as development. Using blockchainmode as a parameter is something that should be coming out this week.

You can get the current processed block number by using processor.getCurrentBlockNumber(), yes that is very important to the package. There is a documentation which contains items like this on the github (plus, this is also mentioned in the token tutorial I posted alongside this announcement). I’m not sure how steem-state would react to when a witness skips signing a block— when this occurs, the block number is not skipped, correct? (If I’m right, then steem-state will have no trouble with skipped blocks).

STEEMSQL seems like a good idea, I’ll look into it.

Yes — I will look into that. Currently, the name of the user who ‘created’ a transaction is simply derived from required_auths[0], so using required_auths is currently untested and is not likely to work (I don’t have much knowledge in those DApps, if you could enlighten me that would be great). That will definitely be something I will add in the future.

Thanks for reading this article and providing feedback @therealwolf! I’ll get to work building the next versions and including some of your suggestions! Currently this is the MVP and has a lot more features to come (I mean, the package is only 150 lines of code).

been streaming services data for a year, no instabilities.

Hi @shredz7!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hey, @shredz7!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!