SLP Development - part 1
I thought it might be fun and interesting to blog a little bit about our progress on the SLP project. First, what is SLP? It stands for Simple Ledger Protocol. It's a token system for Bitcoin Cash. Here is the spec you can read.
This spec came together in amazingly short period of time. I think 6 or 7 days. Magical things can happen with the synergy of working with a really powerful team. And I'm already seeing how we're going to get some incredible results as far as creating a working wallet implementation quickly. My goal is to have this wallet available by August 31st... a little over 30 days.
James is working on creating the Script transactions. Mark is on validation. Unwriter is building his layer, and I'm working on the front end of the wallet. The first thing I did was create the SLP addr, which is sort of like "Cash Addr" with a different prefix. Wasn't that hard but I tried to get too clever and use an upper case SLP instead of "slp" which confused some of the logic in the wallet and took a long time to track down. ah well...
Earlier today I completed most of the Send tab for tokens. As a prerequisite, I needed a bit of the storage layer. We need to store information about the different kinds of tokens that the wallet is going to manage. Each token has a hash identifier plus a more human-readable common name. There's also probably going to be a decimal precision associated with each kind of token.
I thought we might have a separate token file, but the storage/configuration system is passing around the config file in too many places to do it cleanly. It wasn't worth disturbing all that so I just put the token info in the config file. Then I added some widgets to the main screen. I added a separate "SLP Amount" field and also a drop down selector for which kind of token we want to send. I decided that it would still be a good idea to show the BCH amount being spent just for transparency to the user... but I also decided to make it safe and force the BCH amount to be the dust amount if a token was selected, plus freeze the amount field. If "NONE" is selected, the amount is zeroed out and unfrozen. The "max" button needed to get frozen and unfrozen as well.
I had to figure out some nitty gritty details of how I was going to display the human readable form of the token description on the GUI but pass the hash id behind the scenes to the transaction construction module, along with the SLP amount. It was necessary to test to make sure the code didn't blow up if there was no values in the config file. It did blow up. Fixed it. Finally, I added something in the preferences section to display the tokens (or not). The screen isn't 100% completed, but its pretty good so far. Here's what it looks like -- notice the amount of BCH is a dust amount:
Stay tuned... a lot more fun development coming and I'm looking forward to bringing the Simple Ledger Protocol to Bitcoin Cash.
12 of 12 reviewers say it's worth paying for
0 of 12 reviewers say it's not worth paying for