Ravencoin — To reissue or not to reissue

When you were experimenting with testnet and playing around with asset issuance, you may have seen a checkbox that said []reissuable, and you might have wondered what that meant. If you didn’t play with asset issuance on testnet, you really should. I’ll wait….. (https://ravencoin.com)

Ok, now that you’ve experimented with creating assets, you might have issued an asset or two but didn’t see any difference if you checked reissue or not. Why is that?

Checking reissue, which is the default setting, will set a flag on the asset, that says you can continue to change three things.

  1. Can increase the quantity of the asset issued.
  2. Can change the meta-data for the asset.
  3. Can increase the divisibility (units) of the token.

So who can change these things? Only the asset owner. So how does the system know who owns the asset? Ah, that’s the cool part. Every time assets are created (except unique assets), there is an additional token created. The additional token has the same name as the asset, but with an exclamation mark at the end. This is the owner token. If the LEMONADE token is issued, then a LEMONADE! token is also issued. This token gives the holder special powers, and among those powers are the ability to change the three attributes of the already issued token.

So you might be thinking, “That sucks” that the owner can increase the number of tokens willy-nilly. And, you’d be right. So, that’s why the reissue option can be unchecked. When the reissue option is unchecked, it locks the qty of tokens, the meta-data, and the number of divisible units — forever.

Now for the really fun part. Any asset can be created with quantity 1, non-divisible, with some meta-data that says it’s available for_sale. This is the most flexible a token can be. The name is reserved, but the other attributes are still in flux. Once the new owner has purchased the token you can send them the owner token and their single token. They can then use the owner token to increase the quantity, set the desired units (making the token more divisible), and set the meta-data to describe their token’s usage. At any point, they can uncheck re-issue and lock-in the new settings forever, or they can keep re-issuable checked and keep it flexible.

Why is it useful for the owner to make their token not re-issuable? The benefit isn’t really for the token owner, as most token issuers have enough self-control that they won't re-issue more tokens accidentally in a drunken stupor. The benefit is for each token holder to know that the published contract isn’t going to change from “Each token represents a 1kg bar of gold.” to “Each token represents a piece of spearmint gum.” Or in the case of the tokens representing a share of a company, that the shares are not being “watered down” by the issuance of many more shares. If a token represents 1 millionth of a company, the number of shares issues can be locked to 1,000,000, never to be changed.

If you are purchasing a token that has the re-issue flag still set to true, then you should ask WHY? Maybe there is a great reason to issue more tokens. Perhaps the token represents a gift card for a cup of lemonade, in which case it is pretty reasonable to leave it re-issuable. Who knows in advance how thirsty the neighborhood residents will be?

So what happens if the tokens are already sent out, and I increase the divisibility. Well, you can only make it more divisible, so those that have some of the asset already will see that they can send in smaller pieces. As an example, lets say you issued with units set to 0, which is non-divisible. So could send 3, 10, 1000, but not 2.1, or 9.99, etc. Now you increase the divisibility to 4 (0.0001). Now you can send 9.9999, instead of just integers. The math on this just works. If someone has 4, they now have 4.0000. You can’t reduce divisibility because what would happen if you’d already sent 3.5. It would have to destroy .5, or round up, or all kinds of weird stuff. Remember, assets are perfectly auditable down to the smallest unit.

So what if someone changes the meta-data on a re-issuable token? Well, the chain will store references to all IPFS documents because the blockchain is permanent and immutable, but the user interface for most clients will probably only show the latest document. Block explorers could show an audit trail of all the documents.

Is it possible to reduce the number of tokens? Yes and no. There isn’t a way to recall tokens, so the number issued can only increase. But, any holder of tokens, including the issuer can send assets to a provable burn address. A provable burn address is a valid Ravencoin address for which a private key doesn’t exist. These usually have a whole bunch of X’s in them. It isn’t that a private key couldn’t exist, but something like RXBurnXXXXXXXXXXXXXXXXXXXXXXWUo9FV would take millions of years to create on purpose, and since none of us have that kind of time, it’s safe to assume that any assets sent to this address will never move because nobody has the private key to sign a transaction. Why the weird characters at the end? Because the last few characters act as a checksum to make sure the other characters haven’t been mistyped. These characters at the end are calculated and must be valid for the address to work with Ravencoin.

So now you know the pros and cons of checking reissue when creating your own asset. Use it wisely.