UPDATE: I’ve gone through a lot of design iterations. See how it works for the production system.
So, I’ve been thinking about doing a time-based currency to tokenize my own time and attention for a while. My friend Kevin Fox once said that in the future we’d all have our own personal cryptocurrency, and I registered evancoin.com soon afterwards, as a ha-ha-only-serious experiment. But I found creating cryptocurrencies to be pretty difficult, and I never really went anywhere with it.
Creating token currencies has gotten a lot easier with the launch of Ethereum. It’s led to a rash of initial coin offerings as people are working on new ways to tokenize assets and make them available for market trading. For my 30-day challenge for October 2017, I’m going to work on Evancoin and see if I can make it work.
What would people use an hour of my time for? A lot of things. First, I’m a pretty good software developer, so buying a few weeks of my time to create some software might be useful. But I’m also a startup entrepreneur and technologist, so advising startups, evaluating technology solutions, or speaking about technology are all options, too.
I think it will be interesting to see how the market supports these cases. If someone buys my time to get me to do something humiliating, illegal or unethical, and I refuse to do it, will that influence the token’s price on the market? What if I do a great job? How will it change how people pay me otherwise?
I’ve never created a contract for Ethereum before. I’m still trying to figure out how it works — it’s kind of a mysterious platform, and there seems to be a lot of magic. But here are the rough requirements of what I want to do.
Note that I imagine tokens I’m calling coins that can move from one account to another. I’m labeling accounts with names like ACCOUNT although I know they’ll be more complicated than that. I expect that there will be some initial accounts that are part of the system, and other accounts that will be created by me or other users over time.
Note also that this design is kind of complicated. Another way to do it is just have a big initial coin offering for all available coins, and then redeem them as people see fit. The problem I see there is that I don’t think there’s much confidence on people’s part to buy a coin at my current consulting rate, say, and I don’t think I’d like to work for $0.10/hour for the rest of my life. By having more controlled offerings, I can show previous value, and keep the price matched to my own expectations of my time’s worth.
- “Pre-mine” an initial pool of 403236 coins. I’ll be 49 years old in October 2017, and various estimates I’ve seen on the Web put my expected lifespan at a maximum of about 95 years.
(95 – 49) years x 365.25 days/year x 24 hours/day = 403236 hours.That’s a good maximum number of hours I have left. No guarantee I’m going to live to 95, so it’s pretty likely that a lot of those hours will never be redeemable.I’d like to keep these coins in an initial account called RESTOFMYLIFE.
- Monthly release of coins to a working account. I’d transfer somewhere between 28 x 24 and 31 x 24 coins on the first day of each month from RESTOFMYLIFE to an account called THISMONTH. This will be my working set coins to work with each month. Ideally this is something I can automate, so that it’s part of the contract.
- Transfer pre-committed coins. At the beginning of the month, I’d transfer 1/3 of the coins in THISMONTH to an account called SLEEP. Another 1/3 would go to my full-time job, FUZZYAI. That leaves me with about 1/3 of the coins left to offer for sale. Since these commitments might change, I’d like to leave this a manual process.
- Offer coins for sale. Based on my expectations for that month, I’d transfer some number of coins from THISMONTH to FORSALE. So, if I think I’m going to have about 5 hours a week to offer for use, I’d move 20 coins into the FORSALE account. Buyers would be able to purchase coins from the FORSALE account using Ether. I’d like to be able to change the price each month, based on market prices, previous sales, or how much I think I can get.
Buyers should be able to create new Evancoin accounts and transfer their purchased coins to those accounts. They should be able to keep those coins for as long as they want, and transfer to them to others as they wish.
(Note that there’s a tricky part here. Some buyers will hold onto coins or trade them. I’d like coin holders to be able to redeem coins months or years after they were bought. But there may be more coins outstanding than I have free hours that month. I think that this will have an interesting effect on the coin’s price — there is a different value to a coin you have to wait 18 months to redeem versus one that can be redeemed immediately. I’m not sure how this is going to shake out.)
I’d like the processing of moving coins from THISMONTH to FORSALE to be manual, but that it could be automated for people to buy anything in FORSALE.
- Accept coins for work. The last step is that there should be a fixed account, WORK, where people can exchange coins for my time. I expect that we’ll need to negotiate this transfer, but ideally it should be automated, without my direct interaction. It would be cool if each transaction was labeled with the work that was being done and for whom. It would be cooler if I was the only person who could read those labels.
- Make grants. I donate my time to Open Source projects and standards efforts as well as other civic pursuits. It may be worthwhile for me to set up accounts to track these grants, like W3C and PUMPIO. I’d transfer coins to those accounts directly from THISMONTH, probably at the beginning of the month, too.
People ask for my time as an advisor or volunteer for other projects. I might set up accounts for them to manage. If they want to, they could sell my coins on the market, just like any other coins in this system. Maybe those dollars are worth more to you than my time at some point.
- Flush temporal accounts at the end of the month. At the end of the month, anything in THISMONTH, SLEEP, and FORSALE is invalidated and goes into oblivion. (My full-time job should probably transfer coins for work I’ve done during the month to WORK. They might want to hold some back and sell it on the market, though!) Ideally these flushed coins would just disappear; another option is to have an account called THEPAST that can be transferred into but not out of.
I think that should just about do it. My next steps are to set up a Github repository to work on this contract, and hopefully get it deployed by Oct 1, 2017.