BIP Draft: Atomic Cross Chain Transfer Protocol

BIP Draft: Atomic Cross Chain Transfer Protocol
2014-04-30 18:59 ` Luke Dashjr
  
From: Tier Nolan @ 2014-04-30 18:03 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 448 bytes --]

Due to "popular" demand, I have created a BIP for cross chain atomic
transfers.

Unlike the previous version, this version only requires hash locking.   The
previous version required a "selector" transaction based on if statements.

    OP_HASH160 OP_EQUAL_VERIFY [public key] OP_CHECKSIG

    OP_HASH160 OP_EQUAL_VERIFY OP_N [public key 1] ... [public key m]
OP_M OP_CHECK_MULTISIG

https://github.com/TierNolan/bips/blob/bip4x/bip-atom.mediawiki

[-- Attachment #2: Type: text/html, Size: 696 bytes --]

 permalink raw reply	[|nested]
2014-04-30 18:03 [Bitcoin-development] BIP Draft: Atomic Cross Chain Transfer Protocol Tier Nolan

  2014-04-30 20:48   ` Tier Nolan
  
From: Luke Dashjr @ 2014-04-30 18:59 UTC (permalink / raw)
  To: bitcoin-development

On Wednesday, April 30, 2014 6:03:59 PM Tier Nolan wrote:
> Due to "popular" demand, I have created a BIP for cross chain atomic
> transfers.
> 
> https://github.com/TierNolan/bips/blob/bip4x/bip-atom.mediawiki

Instead of TX0, TX1, etc, can you put some kind of meaningful identifier for 
these transactions?

TX1 and TX2 *cannot* be signed until after TX0 is completely signed by both 
parties. After TX0 is signed, but before TX2 is signed, either party could 
walk away or otherwise hold the funds hostage. The sequence of signing 
proposed in this BIP is *not possible to perform*. How did you implement and 
test this? :/

What is the purpose of the OP_EQUAL_VERIFY in TX4? I don't see a use...

IMO, there should be separate BIPs for the exchange itself, and the protocol 
to negotiate the exchange. I would recommend changing the latter from JSON-RPC 
to some extension of the Payment Protocol, if possible.

Perhaps it would be good to only support compressed keys, to discourage use of 
uncompressed ones..

Luke



 permalink raw reply	[|nested]
2014-04-30 18:59 ` Luke Dashjr

  2014-04-30 23:02     ` Tier Nolan
  
From: Tier Nolan @ 2014-04-30 20:48 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1789 bytes --]

On Wed, Apr 30, 2014 at 7:59 PM, Luke Dashjr <luke@dashjr•org> wrote:

> Instead of TX0, TX1, etc, can you put some kind of meaningful identifier
> for
> these transactions?
>

Sorry, that is the names come from the original thread, where I was
outlining the idea.  I updated the names.


> TX1 and TX2 *cannot* be signed until after TX0 is completely signed by both
> parties.


The bail in transactions are only signed by one of the parties.  They are
kept secret until the refund/payout transactions are all properly signed.

There is a malleability risk though, hence the need for the 3rd party.

It works on the same refund principle as payment channels.

After TX0 is signed, but before TX2 is signed, either party could
> walk away or otherwise hold the funds hostage. The sequence of signing
> proposed in this BIP is *not possible to perform*.


TX0 is not broadcast until the refund transactions are complete.


> How did you implement and test this? :/
>

This is a draft at the moment.

There is an implementation of (almost) this system but not by me.  This
proposal reduces the number of non-standard transaction types required.

A full implement is the next step.


> What is the purpose of the OP_EQUAL_VERIFY in TX4? I don't see a use...
>

That is a typo, I have updated it.


> IMO, there should be separate BIPs for the exchange itself, and the
> protocol
> to negotiate the exchange.


I can do that.


> I would recommend changing the latter from JSON-RPC
> to some extension of the Payment Protocol, if possible.
>

I wanted it to be as simple as possible, but I guess MIME is just a
different way of doing things.

>
> Perhaps it would be good to only support compressed keys, to discourage
> use of
> uncompressed ones..
>

I would have no objection.


>
> Luke
>

[-- Attachment #2: Type: text/html, Size: 3479 bytes --]

 permalink raw reply	[|nested]
2014-04-30 20:48   ` Tier Nolan

  
From: Tier Nolan @ 2014-04-30 23:02 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 2239 bytes --]

I updated again.

The new version only requires non-standard transactions on one of the two
networks.

Next step is a simple TCP / RPC server that will implement the protocol to
trade between testnet and mainnet.  Timeouts of much less than 24 hours
should be possible now.


On Wed, Apr 30, 2014 at 9:48 PM, Tier Nolan <tier.nolan@gmail•com> wrote:

> On Wed, Apr 30, 2014 at 7:59 PM, Luke Dashjr <luke@dashjr•org> wrote:
>
>> Instead of TX0, TX1, etc, can you put some kind of meaningful identifier
>> for
>> these transactions?
>>
>
> Sorry, that is the names come from the original thread, where I was
> outlining the idea.  I updated the names.
>
>
>> TX1 and TX2 *cannot* be signed until after TX0 is completely signed by
>> both
>> parties.
>
>
> The bail in transactions are only signed by one of the parties.  They are
> kept secret until the refund/payout transactions are all properly signed.
>
> There is a malleability risk though, hence the need for the 3rd party.
>
> It works on the same refund principle as payment channels.
>
> After TX0 is signed, but before TX2 is signed, either party could
>> walk away or otherwise hold the funds hostage. The sequence of signing
>> proposed in this BIP is *not possible to perform*.
>
>
> TX0 is not broadcast until the refund transactions are complete.
>
>
>> How did you implement and test this? :/
>>
>
> This is a draft at the moment.
>
> There is an implementation of (almost) this system but not by me.  This
> proposal reduces the number of non-standard transaction types required.
>
> A full implement is the next step.
>
>
>> What is the purpose of the OP_EQUAL_VERIFY in TX4? I don't see a use...
>>
>
> That is a typo, I have updated it.
>
>
>> IMO, there should be separate BIPs for the exchange itself, and the
>> protocol
>> to negotiate the exchange.
>
>
> I can do that.
>
>
>> I would recommend changing the latter from JSON-RPC
>> to some extension of the Payment Protocol, if possible.
>>
>
> I wanted it to be as simple as possible, but I guess MIME is just a
> different way of doing things.
>
>>
>> Perhaps it would be good to only support compressed keys, to discourage
>> use of
>> uncompressed ones..
>>
>
> I would have no objection.
>
>
>>
>> Luke
>>
>
>

[-- Attachment #2: Type: text/html, Size: 4323 bytes --]

 permalink raw reply	[|nested]