Announcing a preview release of SwapBill, an embedded protocol focusing on altcoin exchange features.
The release can be found here:
https://github.com/crispweed/swapbillThis contains a preview version of the SwapBill reference client, as well as some information about how to get this set up, as well as basic usage (in README.md).
The client is pure python, with minimal third party dependencies.
This is currently configured with litecoin as the host currency, and so litecoind is required as a backend (or litecoinQT running as a server).
The basic idea is similar to mastercoin and counterparty, but with some key differences.
An important fundamental difference, at the protocol level, is that swapbill transactions are controlled by unspent outputs in the host blockchain (in a way that very closely mirrors the way host coins are spent), as opposed to balances being assigned more generally to addresses.
This gives use the following advantages:
- we don't need to spend bytes on marking transactions as belonging to the SwapBill protocol, these are identified and authenticated as such automatically by the transaction inputs
- we don't reuse addresses - after each transaction, change is paid to a new address
- SwapBill clients don't need access to a full transaction history or transaction index, only the transactions in each new block need to be scanned
- outputs may be controlled by any encumbrance mechanism the host blockchain supports, so you're not limited to standard pay to address script types, and other script types such as multisig addresses can be used to control SwapBill outputs
SwapBill is created with scalability and efficiency in mind, and the process of scanning the host blockchain for swapbill transactions is designed to be a lot faster than for other embedded currencies.
And, on the coin supply side of things, a unique feature of SwapBill is that the value of one swapbill is *capped* at the value of the host coin.
(So, for swapbill embedded in the litecoin blockchain, the value of 1 swapbill can never exceed 1 litecoin.)
This avoids a lot of the boom and bust mechanics of other currencies, and helps to ensure that swapbill remains relatively stable, and suitable for use as a medium of exchange.
Building a protocol on top of an established blockchain (such as the bitcoin or litecoin blockchain) is good because:
- there is no need for any kind of 'critical mass' in order to launch the protocol successfully - it just works, and
- we can delegate complicated things like network management and validity checking to the reference client for the host blockchain
A lot of effort has then been spent on rationalising the protocol and keeping the SwapBill client as simple as possible, as we believe that code complexity is a key issue in making it possible to ensure that a system is robust. The protocol is designed to enable exchange features that would be difficult (or impossible) to implement *and* guarantee as robust in other cryptocurrencies.
We're looking for:
* feedback about the protocol decisions made up to here for the preview version of the reference client,
* and in particular about some fixed values built in to the protocol (we avoid hardcoded values as far as possible, but in certain cases hard coded values are required in order to implement the protocol robustly and efficiently, the values we've chosen for these hard coded values at this point are then almost certainly not the best possible choices),
* community involvement in moving SwapBill forward to actual release.
Known issues with the current preview client (version 0.3):
- the protocol currently creates unspent outputs that can't easily be pruned (ideally we would like to use OP_RETURN, but this is currently treated as non-standard by the litecoin reference client)
That's it for now. Questions here!