Bitcoin Forum
November 06, 2024, 03:38:22 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: SwapBill embedded protocol: preview and request for feedback  (Read 7828 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
May 28, 2014, 11:25:06 AM
Last edit: June 19, 2014, 03:47:13 PM by crispweed
 #1

Announcing a preview release of SwapBill, an embedded protocol focusing on altcoin exchange features.

The release can be found here:
https://github.com/crispweed/swapbill

This 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!
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
May 28, 2014, 11:31:23 AM
Last edit: June 18, 2014, 12:49:14 PM by crispweed
 #2

links:
github: https://github.com/crispweed/swapbill
twitter: @swapbill
subreddit: www.reddit.com/r/swapbill/
bri912678
Sr. Member
****
Offline Offline

Activity: 348
Merit: 250



View Profile
May 28, 2014, 11:35:15 AM
 #3

I just had a quick look at the github page. Do you have to use an installed litecoin qt to run this?
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
May 28, 2014, 11:42:48 AM
 #4

Do you have to use an installed litecoin qt to run this?

You need either litecoinQT or litecoind running as a backend.
(The graphical user interface of litecoinQT and the dependencies for this are not required if you use litecoind.)
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
June 18, 2014, 01:13:43 PM
 #5

A second preview release of the swapbill reference client is now available.

The main changes for this release:

* a mechanism for single transaction 'backed' exchange of host currency for swapbill
* protocol improvements to remove the concepts of 'active' and 'spendable' balance (so no need for collect transactions, the whole balance can now be spent at any time)
* protocol improvements to increase robustness with respect to potential blockchain reorganisations
* improved user interface for coin amounts and percentages (now formatting and parsed directly as decimal fractions without floating point conversion or approximation issues)

The focus of this version is really all on improving the mechanism for exchanging swapbill for the host currency.

The backed exchange mechanism enables you to obtain some *initial* swapbill without requiring any host currency burn transaction, as long as there's swapbill available for exchange.
And this means that exchanges can now be performed with single transactions *in both directions* (so without any risk associated with being unable to complete an exchange due to DOS attacks or random events such as an internet connection going down).
And, on the other side, it's now possible to exchange all of your swapbill back to host currency, without a requirement to leave a seed amount in your active balance.

The readme has been updated with a walkthrough for the new transaction types.

As before, we're still looking for feedback and community involvement in SwapBill, get in touch with me directly if you're interested..

Thomas
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
June 19, 2014, 03:46:39 PM
 #6

Preview version 0.3 has now been pushed to github.
This is essentially identical to version 0.2, but with a change to the way blocks are scanned that removes the requirement for a full transaction index (txindex=1)..
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
July 04, 2014, 07:57:50 AM
 #7

v0.4 preview client has been pushed
This is just a bug fix version for a bug in the order of transaction filtering checks that resulting in synchronisation failing with an assert about 'not UnexpectedFormat_Fast'.
(Not a protocol issue.)
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
September 11, 2014, 08:26:10 AM
 #8

A new version of the SwapBill client (v0.5) has just gone live on https://github.com/crispweed/swapbill.

Notable features for this release are:

 * support for bitcoin as a host blockchain
 * the client supports switching between host blockchains (to work with 'litecoin swapbill' and 'bitcoin swapbill')
 * trustless cross-chain trading is now supported across blockchains
 * usability improvements for the existing on-chain trading functionality (for trading between swapbill and host coin)
 * documentation at readthedocs.org (http://swapbill.readthedocs.org/)
Corleone1918
Sr. Member
****
Offline Offline

Activity: 248
Merit: 250


View Profile
November 05, 2014, 02:19:56 PM
 #9

keep watching.
slothbag
Sr. Member
****
Offline Offline

Activity: 369
Merit: 250



View Profile
December 19, 2014, 10:50:31 AM
 #10

This looks interesting.. I'm surprised you haven't had more interest in this..

Whats the status right now?
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
December 19, 2014, 11:01:52 AM
 #11

Hi there.

The status is that the currency is working, and usable for the intended purpose, but there just doesn't seem to be enough interest in this to justify taking it on to mainnet in a full release.

The fundamental cross chain exchange mechanism is pretty solid, and something that really should be applied more generally, I think.
I made a blog post specifically about this aspect, here:
http://upcoder.com/11/atomic-cross-chain-exchange/
slothbag
Sr. Member
****
Offline Offline

Activity: 369
Merit: 250



View Profile
December 19, 2014, 12:35:04 PM
 #12

Yeah, I read it. It looks good.

So from what I can gather SwapBill requires an intermediary currency (e.g SwapBill BTC) to provide the flexibility of creating these new Pay on reveal secret tx types.

And by using proof of burn on a 1 to 1 ratio you are hoping that 1 SwapBill BTC always equals 1 BTC? Or perhaps just stable enough to facilitate trades that might span 24 hours..


Feels to me like "hoping" the SwapBills BTC keeps its value pegged to BTC is a weak link.. especially if you have created a whole bunch for yourself free.. (not that I think you shouldn't be paid).

I like your suggestion about getting "pay on secret reveal" implemented as a standard tx type across all coins. Seems like an easy thing to do and could eliminate the need for 3rd party exchanges.

CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
December 19, 2014, 12:40:12 PM
 #13

Unless some major change has happened (to either SwapBill or to the thinking of the Bitcoin core devs) my understanding was that the ACCT (based upon TierNolan's approach) is dependent upon nLockTime which is not likely to become standard any time soon due to the fact that it creates a very simple attack vector (i.e. just exhaust the memory pool of every single node by flooding the network with future nLockTime txs).

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
slothbag
Sr. Member
****
Offline Offline

Activity: 369
Merit: 250



View Profile
December 19, 2014, 12:44:24 PM
 #14

I think by implementing his own "sidechain" tx types he doesn't need the nLockTime.. I may be wrong
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
December 19, 2014, 12:51:04 PM
Last edit: December 19, 2014, 01:08:09 PM by crispweed
 #15

> And by using proof of burn on a 1 to 1 ratio you are hoping that 1 SwapBill BTC always equals 1 BTC? Or perhaps just stable enough to facilitate trades that might span 24 hours..

The proof of burn setup provides a hard *upper cap* on swapbill value, but the actual market value of one swapbill will then float freely somewhere between 0 and 1 based on supply and demand.

The intention is that a hard upper cap will help a lot with making the currency stable, by avoiding the whole 'to the moon' thing, in a first instance.

But there is then also a bunch of functionality included to make it very easy to sell your swapbill for host currency, which should also help with stability.

The idea is that it should be almost as easy to get your initial swapbill by *exchanging* host currency for swapbill as it is to get swapbill by proof of burn. And then, as long as you think that people will want swapbill in the future, there is an incentive to buy any swapbill being offered far below the burn ratio.

The 'backed' exchange mechanism between swapbill and host currency is then also quite interesting, since this works with just one single 'atomic' exchange transaction being required in each direction. When obtaining host currency from swapbill this is naturally straightforward, but when obtaining swapbill from host currency (with a 'backed' exchange) this is based on some swapbill already being committed by a backer, and with the idea that there is a practical limit on maximum transaction throughput..
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
December 19, 2014, 12:53:29 PM
 #16

I think by implementing his own "sidechain" tx types he doesn't need the nLockTime.. I may be wrong

Yes, exactly.
The expiry times for SwapBill transactions are determined by the SwapBill protocol, and do not require nLockTime.
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
December 19, 2014, 12:56:31 PM
 #17

The expiry times for SwapBill transactions are determined by the SwapBill protocol, and do not require nLockTime.

Oh - in that case it must have changed quite a bit from when I last examined it - it is now implemented as a sidechain (in accordance with the spec. for those or are you just using the same nomenclature)?

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
December 19, 2014, 01:00:00 PM
 #18

Swabill is still an 'embedded' currency (so, right, they're not actually "sidechain" transactions), but transaction expiry is nevertheless determined by an independent protocol, and nLockTime is not required.
gjhiggins
Legendary
*
Offline Offline

Activity: 2254
Merit: 1290



View Profile WWW
December 19, 2014, 01:53:23 PM
 #19

Hi Thomas,

The status is that the currency is working, and usable for the intended purpose, but there just doesn't seem to be enough interest in this to justify taking it on to mainnet in a full release.

To be brutal, it's unfinished and advertises itself as such. A lack of polish and inadequate documentation exacerbate the unfinished feel and together, all three form the primary cause of the low level of interest expressed. The latter issues can be remedied relatively easily, leaving “just” the resolution of the described implementation issues to be addressed, either in code or in documentation.

Unit tests and coverage reports would go some way towards countering the project's current overall ambience of “mad scientist code dump”.

Cheers

Graham
crispweed (OP)
Newbie
*
Offline Offline

Activity: 27
Merit: 0


View Profile
December 19, 2014, 02:03:34 PM
 #20

Hi Graham,

> Unit tests and coverage reports would go some way towards countering the project's current overall ambience of “mad scientist code dump”.

There *are* a load of automated tests for SwapBill, in fact, including a host abstraction layer, and this all results in pretty good coverage.
This part of the project is excluded from the public release, however, at this time. Sad

> To be brutal, it's unfinished and advertises itself as such. A lack of polish and inadequate documentation exacerbate the unfinished feel and together, all three form the primary cause of the low level of interest expressed.

Brutal is good, but do you have any more specific suggestions for adding polish, or improving on the current documentation (which can be found here: http://swapbill.readthedocs.org/en/latest/)?
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!