How To Deploy Your Own Smart Media Token On The Steem Blockchain - The SMT White Paper Series, Ep. One

in #steemit7 years ago (edited)

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.

<p dir="auto"><em>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. <h1>SMT Creation And Distribution <p dir="auto">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). <p dir="auto">So, the moment you decide you want your own token, you have to decide also the time window. By time window I understand: <ul> <li>how long people will be able to buy your token (the ICO time window) <li>how much of a token you will distribute? (your ICO will have a cap? it will be a soft cap, a hard cap?) <li>are there any subsequent distributions of the token? (this is defined as "inflation" in the white paper) <p dir="auto">SMT creation is done in 3 steps: <ul> <li>creating the token <li>pre-setup parameters <li>setup the token <p dir="auto">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. <h2>Creating A Token <p dir="auto">This just signals that you want to create a token on the blockchain. It's kind of a "reservation". It includes the <code>control account, or the account which will be responsible for it, the name of the token and the payment. The <code>control account<span> 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 <a href="/@wadepaterson">@wadepaterson). We should wait for the final version to see the exact amount, I guess. <p dir="auto">A few considerations about the so-called "name" of the token. It's actually an id, of the form <code>@@123456789 - two at signs, followed by a random string of 9 digits. This is the <code>NAI, or the <code>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. <p dir="auto">Your token human readable name (MYTOKEN, ALPHA, RUNCOIN, etc) will be made public via a separate registry, which in the white paper is called <code>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. <p dir="auto">You may stop at this level, and that means you just created a <code>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. <h2>Pre-Setup For Your Token <p dir="auto">In this part you set up the inflation and all the "application level parameters for your token". <p dir="auto">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. <p dir="auto">The "application level parameters" are tied to what you already know STEEM does: <ul> <li><code>allow vesting (will you have your own power down?) <li><code>allow voting (will you allow your tokens to be used in voting?) <li><code>cashout window (currently one week, for Steemit) <li><code>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) <li><code>vote regeneration period (currently 24 hours) <li><code>percent curation reward (currently 25% off of the rewards pool) <li><code>percent content reward (currently 75% off of the rewards pool) <li><code>author reward curve (currently linear, or direct proportion with the voting power) <li><code>curation reward curve (currently linear) <p dir="auto">As you can see, these parameters allow you to fine tune your token in order to create your custom <em>Steem-on-demand, but with <em>your own token name. <h2>Setup <p dir="auto">The setup part is actually the ICO part, the final distribution step. This operation implements, among other stuff, these parameters: <ul> <li><code>maximum supply (how many tokens are you issuing), <li><code>generation policy (the unit conversions between STEEM and your token, see below), <li><code>generation begin time and <code>generation end time (when people can start contributing STEEM to the ICO and when that time window ends) <li><code>announced launch time (when the tokens will be generated) <li><code>launch expiration time (if the ICO is not launched by this time, participants will be refunded, but the symbol will remain reserved to <code>control account. However, in order to launch he token again, a new <code>smt_create operation (step 1) should be issued and the issuance fee must be paid again) <p dir="auto">ICO is made by sending STEEM to the <code>control_account. The <code>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. <p dir="auto">This allows a certain degree of flexibility: <ul> <li>the issuer can route the incoming funds to many other accounts <li>the issuer may also generate automatically tokens for other accounts <li>the issuer may set programmatically the amount according to certain rules <li>the issuer may choose a part of contribution to go directly to vesting balances <li>the issuer may choose to burn the contributions <li>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) <p dir="auto">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. <h1>What You Can And What You Cannot Do With Your Tokens In The Steem Ecosystem <p dir="auto">With that being said, let's see what you can and what you can't do with an SMT. First, the don'ts: <ul> <li>SMT don’t influence witness voting <li>SMT can’t be used in escrow operations <li>SMT can’t be used for arbitrary beneficiary, only STEEM (it may be changed in the future) <li>SMT don’t have price feeds (like STEEM does) <li>SMT can’t be powered down to other accounts <li>SMT can’t be converted (with the same process that converts SBD to STEEM, but they can be freely exchanged) <p dir="auto">And now, the do's: <ul> <li>SMT can be assigned to voting (a post may be voted with STEEM AND SMT) <li>SMT can be powered up and down <li>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) <li>SMT can be delegated if they support vesting (the same way Steem Power can be delegated) <li>SMT can be stored in savings account (as a protective measure) <p dir="auto">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. <hr /> <p dir="auto"><em>I'm a serial entrepreneur, blogger and ultrarunner. You can find me mainly on my blog at <a href="http://dragosroua.com" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Dragos Roua<span> where I write about productivity, business, relationships and running. Here on Steemit you may stay updated by following me <a href="/@dragosroua">@dragosroua.<br /> <center><br /> <img src="https://images.hive.blog/768x0/http://dragosroua.com/wp-content/uploads/2014/05/bamf-e1448824881306.png" alt="Dragos Roua" srcset="https://images.hive.blog/768x0/http://dragosroua.com/wp-content/uploads/2014/05/bamf-e1448824881306.png 1x, https://images.hive.blog/1536x0/http://dragosroua.com/wp-content/uploads/2014/05/bamf-e1448824881306.png 2x" /> <hr /> <p dir="auto"><center><em>You can also vote for me as witness here:<br /><span> <a href="https://steemit.com/~witnesses" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://steemit.com/~witnesses <hr /> <p dir="auto"><em>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): <ul> <li><a href="https://steemit.com/steemit/@dragosroua/steemit-newbie-faq-rewards-were-does-the-money-come-from" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Rewards: Were Does The Money Come From? <li><a href="https://steemit.com/steem/@dragosroua/steemit-newbie-faq-netiquette-how-to-avoid-being-a-steem-douche" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Netiquette: How To Avoid Being A Steem Douche? <li><a href="https://steemit.com/steemit/@dragosroua/steemit-newbie-faq-witnesses-what-are-they-and-why-should-you-care" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Witnesses: What Are They And Why Should You Care? <li><a href="https://steemit.com/steemit/@dragosroua/steemit-newbie-faq-how-can-i-mine-steem-and-what-cpu-gpu-power-do-i-need-for-that" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">How Can I Mine Steem And What CPU / GPU Power Do I Need For That?
Sort:  

@dragosroua you said:

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)

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.

What? You only take money? But it's an investment... I have a big stack of @johano's time I'd like to use.

:-)

Good explanation, but still to hard for me. I'm interested but I'll wait some time...

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.

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


Few months ago I was planning to bring my own coin! Sometimes this is the opportunity I was seeking at! How about yours?@dragosroua,

Cheers~

That's a great summary of the whitepaper, from what I can tell!

Where you say:

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)

I didn't see (or infer this). Maybe we're interpreting this bit differently?
vesting_as_cost.png

I'm reading it as sending some of the participants funds to their own vestings account, and it caught my interest.

I hadn't noticed the fee discrepancy. That's pretty big, I'm hoping (and expecting) it'll be closer to $1 than $1000!

Yes, I interpret it in the same way: if you vest a certain amount (vesting means you power up, in your own account) then you're eligible for some tokens. Still not sure how this will be implemented, though :)

I was thinking that a blockchain function would automatically do the vesting for you as part of the contract when you buy the tokens.

There are two scenarios:

  1. The "token_unit" is "$from.vesting" - This means that if you contribute STEEM to the ICO you get VESTED SMTs directly when the ICO launches.

  2. The "steem_unit" is "$from.vesting" - This means that you can participate in the ICO by simply showing that you have vested STEEM. I guess you could call this a "proof of STEEM stake" ICO?

I agree with (1), but think that it needs to be new vesting rather than proof of existing vesting.

Yes, on re-read you are correct. The whitepaper says:

In this ICO, you don’t send STEEM to the issuer in exchange for tokens. Instead, you
vest STEEM (to yourself), and tokens are issued to you equal to the STEEM you vested.

So it is newly vested STEEM (to yourself) which is your payment into the ICO. Not sure why anyone would really want to do this, but it's an interesting concept. Would love to hear a use case.

Hmm, I see it the other way - as it is in the white paper, at least: if you power up, then you get some tokens. The connection between the power up and the token acquisition is unknown to me. It will involve some sort of a memo added to the power up function, to make it able to link it to an external event. Still complicated.

I see what you mean if you take the whitepaper at its precise wording, but that sounds unnecessarily complicated, and I think it might just be explained badly. There's going to need to be quite a lot of new blockchain logic anyway, so making it atomic in the way I'm saying would seem the easiest approach to me.

Yeah, probably. Let's wait and see :)

Okay, I just found this good article. But it is already 8 months old..
So is there now already any real implemention out for the SMT on any 3rd party websites , like a forum or other websites ?
Is here anybody, that could help to setup this for a Portamx.com forum based website ? ( one of the best available Forum softwares, simular to Simplemachines.org but with lots more features....)
Many thanks.

Regards, Stefan.

How does the profit comes? I think it's for only whales, minnow may not offered to buy and maintain these tokens.

Can you detail? What profit?

I mean how can we benefited by creating these tokens?

It's not speculative. You benefit from these tokens if you have (or plan to create and grow) a community and that community agrees to use your token for something (very briefly put).

Got it. Thanks for the explanation.

This is a ‘bottom-line’ question for potential SMT issuers, and the leaders of the SMT project should plan to make a deep investment on helping these potential issuers to think through the issues/questions and work out their strategies and protocols with great care.
First, “benefit” in this context needs to be defined precisely, and that definition may vary among a set of potential issuers.
Second, is it enough to imply that as soon as I have the said community, or a plan top create and grow one, i will reap the benefits?
How a potential issuer decides to resolve these matters will influence the conception of the SMT distribution protocol that make sense for her/him, and from that conception we get to programme coding. Or do I gave this all wrong?

great one thanks for sharing followed and upvoted <3

Congratulations @dragosroua! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

<p dir="auto"><a href="http://steemitboard.com/@dragosroua" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/post4day.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/post4day.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/post4day.png 2x" /> You published 4 posts in one day <p dir="auto">Click on any badge to view your own Board of Honor on SteemitBoard.<br /> For more information about SteemitBoard, click <a href="https://steemit.com/@steemitboard" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here <p dir="auto">If you no longer want to receive notifications, reply to this comment with the word <code>STOP <blockquote> <p dir="auto">By upvoting this notification, you can help all Steemit users. Learn how <a href="https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">here!

It's very complicated will surely do later and it sounds so great that i will be going to have my own coin :D

Thank you for the details, much appreciated!


Hey @dragosroua! Amazing series about SMTs ... wanted to ask you if it is ok to translate the series into Spanish? I would do it with my spanish profile @trans-juanmi. Just let me know, I think would be really good to have this info in spanish language so more people can understand better what SMTs are.

Here are some examples of my translations for other steemians so you can see how I do it. I name alwasy the author in the title, inside the post and also link to the original post of course.

Yes, go ahead, you have my permission (just in case @cheetah asks)