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] 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]
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:
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:
required_auths
- this needs to be included as well.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 howsteem-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, thensteem-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 usingrequired_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!