How To Deploy Your Own Smart Media Token On The Steem Blockchain - The SMT White Paper Series, Ep. One
After studying the SMT White Paper for a few more hours, I decided to write a short post (my concept of "short" might be different from yours, but anyways) about how to deploy your own SMT - Smart Media Token on the Steem blockchain. I did my best to translate the technical terms into plain English, but I may have some glitches, so I encourage you to ask as many questions as you want in the comments, I'll try to answer all, to the extent of my knowledge, obviously.
This article is based on the pseudo-code published in the white paper, but keep in mind that this will most likely change until the public implementation. Also, some of the atomic operations described here may be grouped into more monolithic UI constructs.
SMT Creation And Distribution
An SMT is created through a distribution process. In the white paper, the distribution process is often substituted with the term "ICO", (although this may not be your usual, borderline scammy meaning of the term).
So, the moment you decide you want your own token, you have to decide also the time window. By time window I understand:
- how long people will be able to buy your token (the ICO time window)
- how much of a token you will distribute? (your ICO will have a cap? it will be a soft cap, a hard cap?)
- are there any subsequent distributions of the token? (this is defined as "inflation" in the white paper)
SMT creation is done in 3 steps:
- creating the token
- pre-setup parameters
- setup the token
These are a sequence of operations on the blockchain and, as I already said, they may be grouped together in various UI constructs in the final implementation. Let's take them one at a time.
Creating A Token
This just signals that you want to create a token on the blockchain. It's kind of a "reservation". It includes the control account
, or the account which will be responsible for it, the name of the token and the payment. The control account
can be any account that has STEEM on it, but the white paper recommends to set up a specific account for each token. As of now, the payment for issuing your own token is 1SBD, although this may change. The white paper has also a few inconsistencies, because in the copy, the fee is 1 SBD, but in the JSON examples, the fee is 1000 SBD (this was also reinforced in an interview I read yesterday by @wadepaterson). We should wait for the final version to see the exact amount, I guess.
A few considerations about the so-called "name" of the token. It's actually an id, of the form @@123456789
- two at signs, followed by a random string of 9 digits. This is the NAI
, or the Network Asset Identifier
. This is what the blockchain will use in all operations, it will be generated automatically, at the blockchain level, and, as you already see, it's not a human friendly name.
Your token human readable name (MYTOKEN, ALPHA, RUNCOIN, etc) will be made public via a separate registry, which in the white paper is called asset registry
. This setup is to deter name squatters, or so I read. Although, in real life, depending on which asset registry you use, you may end up with duplicates.
You may stop at this level, and that means you just created a NAI
and paid for it. But in order to actually have a token, you have to do the complete setup, which involves finishing the following two stages.
Pre-Setup For Your Token
In this part you set up the inflation and all the "application level parameters for your token".
The inflation part is relatively complicated and I think for the moment all you need to know is that you can set it up. You may choose a zero inflation (no more tokens will be created) or you may choose a complex scenario, in which inflation will be split in various groups, mimicking Steemit rewards pool and interest paid to vesting balances.
The "application level parameters" are tied to what you already know STEEM does:
allow vesting
(will you have your own power down?)allow voting
(will you allow your tokens to be used in voting?)cashout window
(currently one week, for Steemit)reverse auction window
(the period in which your vote power will actually be inverted for curation rewards, currently 30 minutes after a post is published - by the way, I hope you know about that, don't rush to upsteem posts immediately)vote regeneration period
(currently 24 hours)percent curation reward
(currently 25% off of the rewards pool)percent content reward
(currently 75% off of the rewards pool)author reward curve
(currently linear, or direct proportion with the voting power)curation reward curve
(currently linear)
As you can see, these parameters allow you to fine tune your token in order to create your custom Steem-on-demand, but with your own token name.
Setup
The setup part is actually the ICO part, the final distribution step. This operation implements, among other stuff, these parameters:
maximum supply
(how many tokens are you issuing),generation policy
(the unit conversions between STEEM and your token, see below),generation begin time
andgeneration end time
(when people can start contributing STEEM to the ICO and when that time window ends)announced launch time
(when the tokens will be generated)launch expiration time
(if the ICO is not launched by this time, participants will be refunded, but the symbol will remain reserved tocontrol account
. However, in order to launch he token again, a newsmt_create
operation (step 1) should be issued and the issuance fee must be paid again)
ICO is made by sending STEEM to the control_account
. The generation policy
allow syou to set up the Steem units (the units in which people will contribute) and the token units (how many token units per steem unit). This may get really complicated and these should be solved at a UI level.
This allows a certain degree of flexibility:
- the issuer can route the incoming funds to many other accounts
- the issuer may also generate automatically tokens for other accounts
- the issuer may set programmatically the amount according to certain rules
- the issuer may choose a part of contribution to go directly to vesting balances
- the issuer may choose to burn the contributions
- the issuer may choose to distribute tokens to people who are vesting a certain amount of STEEM (still not clear how this can be done)
This is the final step of the token creation. It may sound a bit more complicated than it is and probably many of these quirks will be grouped together in a more palatable UI, but that's the logic behind the process. I thought it was important to describe it as it is.
What You Can And What You Cannot Do With Your Tokens In The Steem Ecosystem
With that being said, let's see what you can and what you can't do with an SMT. First, the don'ts:
- SMT don’t influence witness voting
- SMT can’t be used in escrow operations
- SMT can’t be used for arbitrary beneficiary, only STEEM (it may be changed in the future)
- SMT don’t have price feeds (like STEEM does)
- SMT can’t be powered down to other accounts
- SMT can’t be converted (with the same process that converts SBD to STEEM, but they can be freely exchanged)
And now, the do's:
- SMT can be assigned to voting (a post may be voted with STEEM AND SMT)
- SMT can be powered up and down
- SMT can be transferred (what happens if the recipient doesn't have a wallet for that SMT? Is this done automatically by the blockchain? Not clear in the white paper yet)
- SMT can be delegated if they support vesting (the same way Steem Power can be delegated)
- SMT can be stored in savings account (as a protective measure)
All in all, I think the ability to issue SMT is a huge step forward in the Steem ecosystem, provided the implementation will at least follow the white paper guidelines.
I'm a serial entrepreneur, blogger and ultrarunner. You can find me mainly on my blog at Dragos Roua where I write about productivity, business, relationships and running. Here on Steemit you may stay updated by following me @dragosroua.
https://steemit.com/~witnesses
If you're new to Steemit, you may find these articles relevant (that's also part of my witness activity to support new members of the platform):
@dragosroua you said:
Maybe I'm misunderstanding either your comment or how the SMTs work, but I don't think there's a separate wallet for each SMT, I think everything uses the same Steem wallet. So you can only transfer an SMT to someone who has a Steem wallet account in which case they can have any SMTs.
Hmmm, it might be like that. Bitshares is working in a similar way when you create an asset on their blockchain.
yeah, same goes for an ethereum wallet. If you have a wallet with Ether, you can hold any kind of ERC-20 tokens.
I HATE BITSHARES!
Wow, really thorough and well laid out breakdown. You've really helped out a lot in understanding what this means. I started to read the white paper earlier, but quickly decided against that as I learned pretty quick that it was above my head. Your dialogue with exyle in his post was very helpful.
Thanks a lot for taking the time to break this down. Really appreciate it!
@dragosroua I am willing to put forth some effort and learn. It is people like you on STEEMIT that are going to help me to delve into this even more. I Love the innovation of the STEEMIT platform and just think we are all involved at such an Early Stage..........
just for speculation guys, when this whole thing starts to cook in the future...how much would it costs to hire an IT savvy guy to set something up? i'm thinking like setting something up for my son in college sometime, so he could have a little starter biz on the side, monetizing all the hip shit he's into, and so forth.
Yes, The Hip Shit
Business Plan : 1. "Sell Hip Shit" 2. "Use SMT Shit" 3. "Become Rich Shit"
Thanks for sharing from start to finish it was great to read :)
Thanks so much for breaking this down for those of us who are not geeks. It seems worth watching and I can see tight communities (i.e. Homesteaders, writers, coiners) really being able to embrace this concept of SMTs. How does this compare to VIVA cash IYO?🐓
I think Its complicated for many people like me to create a token.
That might be good thing.
Haha, you have a point
I didn't mean in a pejorative way. If something it's complicated, then you usually evaluate if it's worth doing and if not, you find alternative ways. What I wanted to say was: "being complicated makes it difficult for people to create tokens for everything, and that might be a good thing".
Why? The whole thing makes the creators and big fishes of steem even richer. This is a big pyramid. You might participate as you are one of the enlightened.
Thats true, the one who can only create a token is the people with enough funds and the people in the higher rank, but @dragosroua was right being complicated of creating a token, to stop the abuse of the platform.
Pyramid schemes require that you invest to join in - Not the case here.
My spent time is an investment !
Hi, Porsche? I'd like to buy a Cayenne please.
I have a big stack of @johano's time I'd like to use.
What? You only take money? But it's an investment...
:-)
Haha
Lol, so true @jahano
Very impressive breakdown of the "ICO" process with SMT. Admittedly, I still have to finish the white paper but your insights are helping me understand some of the technical components that I'm just starting to become familiar with right now.
Wrapping my head around these tokens as "teaching a man to fish" as opposed to other conclusions but i figure a lot of people are closer to this development than I am. So, I'll just keep reading as try to level up.
Thanks for taking the time to put this together.
You're welcome and good luck with the white paper. Do share your questions or insights.
Definitely will, looking forward to the rest of the series.
@dragosroua,
Few months ago I was planning to bring my own coin! Sometimes this is the opportunity I was seeking at! How about yours?
Cheers~
Not sure yet.
Hello @dragosroua
I am glad that you are simplifying the SMT whitepaper as promised, there are a lot of things for people like us to learn.
I am going to bookmark this series for future refrences.
@ogochukwu
Good explanation, but still to hard for me. I'm interested but I'll wait some time...