POCKET Announcement

in #pocket7 years ago


I've been thinking for a long time that we need to start exploring the wonderful possibilities of Steem subchains. To that end, I've built POCKET, the first subtoken on Steem.

I first floated a seed of this idea a few weeks ago with my post on MISTs, and got a little positive feedback from the community. Since then, I've been testing various incarnations of the Pocket token system, and today I've finally released the real thing.

What is POCKET?

POCKET (the Proof Of Concept Electronic Token) is an experimental subtoken system which operates on the Steem blockchain; see my article on subchains for higher-level ideas. In the interest of starting out small to learn as much as I can as cheaply as possible, Pocket only does a couple things:

  1. Tracks ownership of a new token, the POCKET, which can be transferred between registered Steem accounts.
  2. Provides a very simple incentive system to encourage distributed storage of the Pocket database, by paying people to publicly confirm transfers of POCKET tokens.
  3. Allows users to interact with the Pocket protocol via existing interfaces such as Steemit.com, Busy.org, and Chainbb.com.

Quick simple overview of POCKET

How do I get POCKET tokens?

Most active Steem accounts are eligible to claim a pile of free POCKET tokens. Every Steem account that has submitted posts at least 5 times (top-level, comments, replies, post edits all count) to the Steem blockchain before POCKET started is eligible to get 1,000,001 POCKET tokens.

To claim your POCKET tokens, you need to resteem the POCKET Genesis Post. You don't need to vote for it, you don't need to pay anybody anything, you don't need to vote for my post here, you don't need to resteem my post here, you don't need to comment on anything, you only need to resteem the POCKET Genesis Post. Every eligible Steem account that resteems the Genesis Post will be credited 1,000,001 POCKET tokens.

14 days after the Genesis Post was first published, the Pocket Genesis Period will end and no new tokens will ever be created again. If you want to participate in Genesis, do it before 14 days have passed. After that, resteems of the Genesis Post will do nothing for you.

Once I have resteemed the Genesis Post, how do I know if I got the tokens?

You'll find these instructions over on the Genesis Post as well, but after you have resteemed it, reply to the Genesis Post with the single word confirm. The word confirm needs to be all lowercase.

Once you've resteemed and replied to the Genesis Post with confirm, if your claim was successful (and you didn't type CONFIRM or Confirm or please confirm instead of confirm), you'll receive a message from a confirmation bot that you got your stake.

NOTE: You will be charged a fee of 1 POCKET for this confirmation. You don't have to reply confirm if you don't want to pay the fee, but right now the only way to know for sure that your claim went through is to pay the fee.

Full disclosure: I am the owner of the @pocket-a account, which begins as the only confirmation bot. However, you can run your own confirmation bot and collect fees yourself! Read on to find out how.

How can I send someone POCKET tokens?

This is the easy part. Suppose you want to send 1000 POCKET tokens to @ned. Then all you have to do is write a Steem comment that starts with the text

pocketsend:1000@ned

It's that simple! Any comment is fine. It can be top-level or it can be a reply to someone's post.

NOTE: When you send POCKET tokens, you will receive an automated reply that the send was successful. This reply will tell you your balance and the balance of the receiving account, but it will also charge you a 1-token fee. This fee comes out of the total amount you sent; so in the above example @ned will only receive 999 tokens. You're being charged a fee for the confirmation message; if you want to send the tokens and not pay the fee, then immediately after you post the initial comment, delete it. The send will still happen, but the receiving account will get the whole amount. But, you won't get a confirmation message. It's your choice.

Can I include a memo with my send?

Sure! This is how:

pocketsend:1000@ned,everything that comes after the comma is a memo.

If someone ever wants to list POCKET on an external exchange, this could serve the same purpose as the STEEM transfer memo for deposit purposes.

What is POCKET for?

I'll answer two different questions. First, POCKET is part of a research project. I want to explore the possibilities that Steem offers us of having a blockchain that can encode arbitrary data without charging fees. I don't know if anybody has noticed, but that's pretty cool. It means you can build a blockchain-based app of any kind without having to build your own blockchain. Isn't that cool?

Second, POCKET is a fantastic tipping currency, provided that people decide it has some value and it ends up with a nonzero market price. Did you like @kingscrown's latest crypto analysis article? Then reply to it with

pocketsend:1001@kingscrown, super cool article bro!

Bam! Tipped! No need to expose your Steem active keys.

What's up with fees?

The fees are a very simple way that I devised to create an incentive mechanism for people to maintain copies of the Pocket database. The first account that posts a confirmation is the account that gets the fee. When POCKET first started, the only confirmer account was @pocket-a. If POCKET is successful, then other people will come along and run their own confirmer accounts to try to beat @pocket-a to the punch and earn the fees.

POCKET will only work, will only be trustworthy, if there are multiple people around the world maintaining and validating the database. If I'm the only one, that's a bad situation because you'll have to trust me not to manipulate balances in my favor.

So I can run my own confirmer account and collect fees?

Sure! I have published the Python code that @pocket-a is running here. It's not polished, but it does seem to work most of the time. Of course, I offer no guarantee that it faithfully implements the POCKET protocol or that it won't cause troubles. It's available with no guarantees or warrants of merchantability or fitness for any purpose and all that, naturally. Use at your own risk and don't run the code until you've audited it yourself! I'm not an experienced Python developer; as such, the code is likely not written to a standard that professional devs are used to.

What would be vastly better than running my code, of course, would be to write your own. In POCKET, code is not law; rather, protocol is law. I've published the POCKET protocol here, and you can use that to audit my Python code or create your own implementation.

Is there a block explorer?

Not yet. Please contact me if you're interested in helping to make one!

Is there a desktop wallet?

You can interact with Pocket via any interface to Steem. All the frontends like Steemit.com, Busy.org, and Chainbb.com. I believe someone has created a Steem desktop wallet, so that should work as well. The Steem cli_wallet would do it. You can also do it programmatically with any of the Steem libraries like steem-python.

So no, there's no wallet (yet) that's dedicated to POCKET, but the point is that you don't need one.

Is POCKET trading on any exchanges?

Not yet. If you're an exchange and you want to list POCKET, please contact me!

What gives POCKET tokens value?

As I'm writing this, we don't actually know yet if POCKET tokens have value or not. That will be up to the participants in the POCKET system to decide. Please keep in mind that I haven't given you anything but a protocol specification and a little hacky Python code attempting to implement the protocol. I'm not giving you tokens. When you resteem Genesis, you're saying "Hey world, I have tokens according to the POCKET protocol." If the world thinks that's a meaningful thing to say, then perhaps POCKET tokens will become valuable.

But this is a crucial thing to understand: I am not issuing tokens. The protocol is. If anything makes them valuable, it will be that fact.

What does the "K" stand for?

The K is silent.

That's so dumb.

It's a Nacronym, which stands for "Not an Acronym."

No, I mean I think POCKET is dumb. Why waste blockchain space with a useless token?

Steem has this wild untapped potential. You thought it was only good for social media? We can do anything here, we have the greatest blockchain sandbox ever created, and you're worried about a few extra bytes of storage? Have some imagination! If we don't try experiments like this, how will we ever get where we're going?

And in any case, if you don't like the idea of POCKET, don't claim your stake. That seems pretty simple to me.

TL;DR Links:

And finally, I'm on the job market!

I'm a PhD Candidate in the Center for Controls, Dynamical Systems, and Computation in Electrical Engineering at UC Santa Barbara, and I expect to receive my PhD in the first half of 2018. My interests are in the intersection of technology and society: I am interested in how social systems interact with engineered systems, studying incentive design, distributed systems theory, security, and robust mechanisms for influencing social behavior. If you or anyone you know is interested in my combination of analytical prowess (I expect my PhD dissertation to result in 6 journal publications), real-world experience (I helped design and build several biodiesel production facilities before I went back to graduate school), and hacking skills (have you heard of POCKET?), please contact me!

Sort:  

This is great! It appears to be the beginnings of Steem's Omni or Counterparty-like protocols.

That's exactly the notion! Pocket itself is extremely limited, but the more people we can get using it, the more we learn about what issues can arise when something more advanced like Counterparty actually gets going.

I don't understand but when bright people get excited and it's free to join. Why not?

lol yes!

Yes this is very simple yet the implications are quite profound. This is a great starting experiment to say the least!

Very interesting ... apart from myself my wife @kobold-djawa joined, too. :)

Nice!! I love that this can be done directly within a normal comment. Very cool. :)

Yea so cool!

amazing project, resteemed it to my 10k+ followers!

Thanks much! Thrilled to have you here.

Awesome!
Thanks for helping fuel this cool social experiment!
Helping this community explore what we have not explored before!
To Steemit and Beyond!

For sure an interesting experiment. I am really happy to see this kind-of research and development going on with Steem. I'm a little confused about some of your choices with the implementation. Considering that we are dealing with value here, why not use active-key+custom_json_operation instead? Consider if POCKET became a very valuable currency, but a popular posting-key accepting website got hacked and private keys were stolen. Every participant on that website would potentially get all there funds drained out. Also, consider that you're implementing a 60s block-time time on what could be a 3s block time. If you're familiar with C++ I highly recommend you go back and reimplement this as a Steem plugin for witnesses to run. As awful as that sounds, it's actually significantly easier to do what you're trying here. Thanks again for all the hard work and research on this project. I wish all participants a successful launch.

Absolutely agree with everything you've said. Active key, Custom_json, and a plugin will definitely the right way to do all of this.

I had essentially one reason for not doing all that: I wanted it to be completely interoperable with existing interfaces. Once you start using custom_json, you need to create a new interface or update old ones; I was trying to demonstrate that this is not necessary. Requiring active keys would rule out people who log in with their posting key; I wanted it to be as inclusive as possible. I agree, the security tradeoff is unfortunate.

A couple other notes:

  1. Perhaps the fee should be a percentage instead of flat. With the current fee structure outlined, these coins can really be 100% used up, which isn't a good property.
  2. Block mining algorithm isn't fair to miners. Witnesses have a distinct advantage as they know what's in the blocks first. If core-witnesses start running this application they will have an undisruptable oligopoly and there will be no incentive for anyone to run the blockchain.
  3. Distribution algorithm isn't fair, see Sybil attacks. I understand what you were going for. Everybody is equal, a fresh start, no whales. But in practice that's not going to happen. The noganoos and ubgs of the world are going to Sybil attack this coin to get as much as they initially can and in the process devalue everyone else's coins.
  4. comment-based tipping is still very possible. I would suggest a system where to bulk of coins is stored in a savings account and segments can be put into a tipping-account which can be spent with posting keys. To move funds out of the savings account requires active key permissions.
  5. Please make sure comment_options operation is considered valid in validators.py, otherwise this will not work with Chainbb or Busy as you've described.
  1. Fee is not burned; it's collected by confirmer account.
  2. If witnesses run the confirmers, that doesn't seem like a problem to me. If the witnesses are good enough for Steem, I suspect they're good enough for pocket.
  3. Pocket is weakly Sybil-resistant. Of the 300,000+ Steem accounts, fewer than 60,000 are eligible - you must have posted 5 comment operations before the creation of the genesis post. Crude, I know - but perhaps not totally ineffective. We'll see.
  4. Great idea.
  5. comment and comment_options are two separate operations, yes? The comment_options op will simply be ignored by the pocket protocol, which is fine - it's the comment operation that contains the command of interest.

Again, thanks for the comments.

  1. You're totally right. I've also come to terms with the fact it's not percentage based because the idea is 1 POCKET isn't ever going to be worth much. Not worth crying about for a fee. My concern was that if I'm tipping 1.5 POCKET because of how valuable it is that the 1 POCKET fee would be too expensive. With this flat fee system, we don't get any ugly decimal balances.
  2. My point was that there would literally be no incentive for anyone to run the POCKET DB at that point. Only the witnesses. Leading it to be highly centralized. I was also thinking, there is no penalty for falsely assuming that a transaction is valid and posting the verification message. The balance information can be found querying for previous comments mentioning the user's balance. No need to actually run the database. Even if it's only an effective strategy (found user's POCKET balances and made a verification comment in time) 33% of the time, it's virtually free compared to running a full steem node and validating the database. To combat the issues listed above I suggest that in order to claim a reward, you must post the hash of the database state. Since reliance on specific implementations is generally frowned upon, you would have to come up with some algorithm that defines how to hash database state. That could be something as simple as breaking the database down into a CSV file and hashing the CSV file. At least that shows you're storing the whole database and not using the strategy I outlined above.
  3. Fair enough. I think that's a fine measure.
  4. Thanks.
  5. You're so right. I was mistaken.

Point 2 brings up a couple very important things which I thought about informally, and I'd want to include in future iterations of this. I'll contact you if I get that far.

Really great points and questions. POCKET is already being refined.
I may be wrong but this seems like more of a social experiment than anything. To see what people do with it. Because regardless of if the coin becomes "valuable" the applications of which POCKET can be used are still vast.....
The experiment has already begun and look we have qualified intelligent people already discussing and refining the potential!
So cool!

Both of your points and reasoning are sound for different factors. Isn't there some way for this to be forked or changed in the future if it does become valuable?
I mean this is really cool and I am excited about the potential but it seems like more than anything its a social experiment right?
To see what people do with POCKET?

Spot on. It would be really easy to fork new projects off of this.

Cool, Im not a techie but this what my deduction abilities brought me to. Thanks for the answer!
Makes this project all the more awesome!
Excited to see what comes of this!

SteemON!

Thank you for your great points.

Cannot wait to participate on my first ICO via Steemit.

@biophil, how is your project going? Definitely interested in knowing because i would like to look at developing games on Steem

Afaik, pocket still works, and I learned a lot from it. I'd love to consult with you about the idea!

@biophil , please allow me to translate your content into chinese in order to spread this message to the Chinese community.
Upvote me if you like this
Link here:https://steemit.com/cn/@incrediblesnow/pocket-token

Interesting post. Thanks for share.

Very interesting project, another addition to STEEMOconomy :)