Re: [Bitcoin-development] Adding request/reply id in messages

2012-04-13 Thread Wladimir


 I don't understand why you say my proposal would make the protocol more
 stateful. I think it doesn't.
 Each reply is only  the result of the current request only, and there is
 no new session information.


I also wondered this. My first thought was that it's basically the same as
the PING message, a nonce that is repeated immediately on reply. This makes
it easier to multiplex operations over a single channel. I'm not against
this basic idea, and it is easy to ignore for clients that don't want to
use it.

I think the state comes in here:

  - inv sends back the requestid given in getblocks or a special value
in case of a notification.
  - addr sends back the requestid given in getaddr or a special value
in case of a notification.

*command1* sends back the requestid given in *command2*.

This requires keeping state on the connection between command1 and
command2. Arguably, this state already exists in the current protocol, but
I'd rather see it reduced than extended.

Also... Many of the described commands don't need this as they already have
a natural nonce. For example, the id of the requested block header. If
this is passed in the reply, and the caller can correlate the request and
reply without a special nonce administration.

Wladimir
--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Bitcoin TX fill-or-kill deterministic behavior

2012-04-13 Thread Andy Parkins
On 2012 April 12 Thursday, Jeff Garzik wrote:
 
 One of my From-Day-One complaints about bitcoin is that transactions
 behavior could be far more deterministic (predictable), from a user
 standpoint.  Transactions in the current system can easily remain in
 limbo forever.
 
 One big step in making transactions behave more predictably would be
 to remove transactions from the memory pool, if they have not made it
 into a block for a couple days.  i.e.

A change I've wished for for a while (but I suspect it is too big a change to 
ever make it) is that a transaction announcement include the block the user 
wants to base on.  It would only be in the protocol message, not the 
transaction stored in the blockchain.

The advantage is that (1) it protects against double spends without needing a 
confirmation period; as a merchant I can instantly spend a 1-confirmation 
transaction by creating my transaction with that 1-confirm as its base.  (2) 
your expiry from memory pool becomes easy -- if the base is more than N 
blocks below the current head, then that transaction won't be included.

Retransmission is possible with the base updated.



Andy

-- 
Dr Andy Parkins
andypark...@gmail.com


signature.asc
Description: This is a digitally signed message part.
--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


[Bitcoin-development] Announcing the IFEX Project

2012-04-13 Thread Walter Stanish
The Internet Financial EXchange (IFEX) Project is an open body for the
discussion and development of financial standards for the internet
community.  The project seeks to focus on enhancing interoperability
between financial settlement systems of all types, including
conventional financial systems, emerging digital currencies,
alternative financial communities, and financial service providers.

Interested parties are invited to review the proposals on the website
at http://www.ifex-project.org/ and join the mailing list at
http://group.ifex-project.org/

Two items on the site that may be of particular interest:

(1) The latest version of the IIBAN Proposal (v1) for financial
endpoint identification at
http://www.ifex-project.org/our-proposals/iiban.  This latest version
includes initial IANA registry contents and a reference mechanism for
financial endpoint transcription error correction. (Relevance: In
contrast to settlement system-specific financial endpoint identifiers,
IIBAN provides a democratically allocated, 13 character identifier
that is already familiar in format to users in Europe and other
countries and is theoretically compatible with conventional banking
infrastructure in those regions.  In addition, IIBAN is not tied to
any specific financial commodity or settlement system, and provides
strong protection against identifier transcription errors.)

(2) The IFEX Protocol is a *work in progress* that hopes to bridge the
gap between conventional financial systems, emerging digital
currencies, alternative financial communities, and financial service
providers by providing a standard protocol for transaction and
settlement path negotiation with arbitrary financial instruments,
currencies or assets.  (Relevance: better connectivity, lower
settlement fees, real time redundant financial routing, arbitrary
instrument/currency/asset handling)

How IFEX's proposed infrastructure differs from existing projects:
 - Not a currency, not a settlement-network, but a mechanism for bridging them.
 - Broader and more inclusive scope than existing vendor-specific APIs
and conventional finance industry networking protocols. Global focus.
No legacy 'features'. No artificial barriers to innovators.

The hope is to move towards an open source implementation of the (work
in progress) IFEX protocol that interoperates with major and emerging
settlement networks for the benefit of all parts of the community. We
have already had expressions of interest from representatives in a
range of communities (Bitcoin, CES, Ripple, W3C Web Payments, digital
currency exchange developers, etc.), and look forward your input on
the mailing list.

Happy Friday the 13th!

Regards,
Walter Stanish
The IFEX Project
http://www.ifex-project.org/

--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Bitcoin TX fill-or-kill deterministic behavior

2012-04-13 Thread Mike Hearn
It sounds OK as long as you exclude nLockTimed transactions.

That said, if you broadcast a transaction that does not meet the fee
rules, you should be able to notice that it wasn't accepted by your
peers immediately. Today it's painful because the protocol isn't very
chatty - in bitcoinj I plan to do this by announcing to half the
connected peers and waiting to see if the transaction comes back on
the other half. Getting a response from a peer that the TX was dropped
for reasons {x,y,z} is a better design but needs another protocol
change.

So having transactions expire would address the case where somebody
broadcasts a transaction that successfully propagates across the
network, but then isn't actually accepted by miners for some reason.
For instance due to a change in the default fee schedules. That risk
can be mitigated somewhat by being careful about such changes (timed
phase ins set multiple months out so people have time to upgrade,
alerts announcing it, etc).

I'm not sure we should be encouraging users to attach fees to
transactions though. Even if you can replace a transaction after a
couple of days, the user experience of trying to get the fee right
is atrocious. I don't think any sensible merchant will actually be
willing to put their customers through this nonsense. If somebody
broadcasts a transaction that successfully propagates across a big
chunk of the network but then gets stuck due to lacking sufficient
fees, the best fix is for the merchant to broadcast another
transaction that spends the first and increases the fees on it that
way. After this happens a few times, if I was a merchant I'd be
tempted to just ask buyers to submit the TX to me directly and I'll
handle keeping up with what miners currently charge and attaching
fees. I don't want my customers to have to think about this and have
trades spuriously fail when they forget.

That design requires a minor change to how fees are calculated inside
the memory pool, to include fees on un-included dependencies. But that
seems fairly uncontroversial to me. It's best for users, merchants and
miners to not leave chains of transactions in limbo when together
their fees add up to the minimum required amount.

--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Announcing the IFEX Project

2012-04-13 Thread Gary Rowe
Hi Walter,

This could be of interest to the XChange project. See GitHub:
https://github.com/timmolter/XChange

The aim of this project is to provide a unifed API for applications to
access financial exchanges. At present it supports Bitcoin exchanges (MtGox
and Intersango are the primary focus with others to follow). It is in the
very early stages of development, but is likely to be integrated into the
MultiBit Bitcoin client (see http://multibit.org) in the near future (early
prototypes are available directly from sources).

One problem that the XChange development team faces is that each exchange
rolls its own data model and uses its own protocol (web socket, socket IO,
direct socket and so on). To provide a reference implementation of how an
exchange should publish its data would be beneficial.

Kind regards,

Gary

On 13 April 2012 10:34, Walter Stanish wal...@stani.sh wrote:

 The Internet Financial EXchange (IFEX) Project is an open body for the
 discussion and development of financial standards for the internet
 community.  The project seeks to focus on enhancing interoperability
 between financial settlement systems of all types, including
 conventional financial systems, emerging digital currencies,
 alternative financial communities, and financial service providers.

 Interested parties are invited to review the proposals on the website
 at http://www.ifex-project.org/ and join the mailing list at
 http://group.ifex-project.org/

 Two items on the site that may be of particular interest:

 (1) The latest version of the IIBAN Proposal (v1) for financial
 endpoint identification at
 http://www.ifex-project.org/our-proposals/iiban.  This latest version
 includes initial IANA registry contents and a reference mechanism for
 financial endpoint transcription error correction. (Relevance: In
 contrast to settlement system-specific financial endpoint identifiers,
 IIBAN provides a democratically allocated, 13 character identifier
 that is already familiar in format to users in Europe and other
 countries and is theoretically compatible with conventional banking
 infrastructure in those regions.  In addition, IIBAN is not tied to
 any specific financial commodity or settlement system, and provides
 strong protection against identifier transcription errors.)

 (2) The IFEX Protocol is a *work in progress* that hopes to bridge the
 gap between conventional financial systems, emerging digital
 currencies, alternative financial communities, and financial service
 providers by providing a standard protocol for transaction and
 settlement path negotiation with arbitrary financial instruments,
 currencies or assets.  (Relevance: better connectivity, lower
 settlement fees, real time redundant financial routing, arbitrary
 instrument/currency/asset handling)

 How IFEX's proposed infrastructure differs from existing projects:
  - Not a currency, not a settlement-network, but a mechanism for bridging
 them.
  - Broader and more inclusive scope than existing vendor-specific APIs
 and conventional finance industry networking protocols. Global focus.
 No legacy 'features'. No artificial barriers to innovators.

 The hope is to move towards an open source implementation of the (work
 in progress) IFEX protocol that interoperates with major and emerging
 settlement networks for the benefit of all parts of the community. We
 have already had expressions of interest from representatives in a
 range of communities (Bitcoin, CES, Ripple, W3C Web Payments, digital
 currency exchange developers, etc.), and look forward your input on
 the mailing list.

 Happy Friday the 13th!

 Regards,
 Walter Stanish
 The IFEX Project
 http://www.ifex-project.org/


 --
 For Developers, A Lot Can Happen In A Second.
 Boundary is the first to Know...and Tell You.
 Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
 http://p.sf.net/sfu/Boundary-d2dvs2
 ___
 Bitcoin-development mailing list
 Bitcoin-development@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/bitcoin-development

--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Bitcoin TX fill-or-kill deterministic behavior

2012-04-13 Thread Jeff Garzik
On Fri, Apr 13, 2012 at 6:04 AM, Mike Hearn m...@plan99.net wrote:
 It sounds OK as long as you exclude nLockTimed transactions.

ACK, agreed

 That said, if you broadcast a transaction that does not meet the fee
 rules, you should be able to notice that it wasn't accepted by your
 peers immediately. Today it's painful because the protocol isn't very
 chatty - in bitcoinj I plan to do this by announcing to half the
 connected peers and waiting to see if the transaction comes back on
 the other half. Getting a response from a peer that the TX was dropped
 for reasons {x,y,z} is a better design but needs another protocol
 change.

 So having transactions expire would address the case where somebody
 broadcasts a transaction that successfully propagates across the
 network, but then isn't actually accepted by miners for some reason.

Correct.  As mentioned, this change should impact few TXs on the
existing network.

It's mostly about getting everyone to collectively agree that
transactions should expire, if they don't make it into a block.
(excl. nLockTime stuff)  A minor technical step, but also a useful
policy step.

 For instance due to a change in the default fee schedules. That risk
 can be mitigated somewhat by being careful about such changes (timed
 phase ins set multiple months out so people have time to upgrade,
 alerts announcing it, etc).

 I'm not sure we should be encouraging users to attach fees to
 transactions though. Even if you can replace a transaction after a
 couple of days, the user experience of trying to get the fee right
 is atrocious.

Yes -- I think there is near-universal agreement on this user experience point.

 I don't think any sensible merchant will actually be
 willing to put their customers through this nonsense. If somebody
 broadcasts a transaction that successfully propagates across a big
 chunk of the network but then gets stuck due to lacking sufficient
 fees, the best fix is for the merchant to broadcast another
 transaction that spends the first and increases the fees on it that
 way. After this happens a few times, if I was a merchant I'd be
 tempted to just ask buyers to submit the TX to me directly and I'll
 handle keeping up with what miners currently charge and attaching
 fees. I don't want my customers to have to think about this and have
 trades spuriously fail when they forget.

 That design requires a minor change to how fees are calculated inside
 the memory pool, to include fees on un-included dependencies. But that
 seems fairly uncontroversial to me. It's best for users, merchants and
 miners to not leave chains of transactions in limbo when together
 their fees add up to the minimum required amount.

So, to be specific... a A-B chain of transactions, that collectively
meet the network's fee requirements?  It seems quite reasonable to
accept that, sure.  ACK on concept.  A chain of length 2 seems like it
would be most common, and limiting total chain length (to 10? 100?)
for any one chain in the memory pool seems prudent.

As to the larger issue of fees...  I will readily admit I have no good ideas.

The user's experience is pretty poor:  while it might make economic
sense, from the network's standpoint, to charge for the service of
verifying and storing a transaction, the user has limited means to
determine an ideal fee.  There are also other valid economic models
(receiver pays fee) out there that may successfully sustain the
network.

Ideally the fee, if any, is market based and negotiated.  The current
method is loose-consensus, mainly aimed at (a) combating dust spam or
(b) ensuring it becomes increasingly more expensive to fill a block,
up to the current 1MB maximum.  I think almost everyone agrees the
current fee system is an ugly, warty hack.  Problem is... like
democracy, no matter how ugly it is, people have trouble finding a
better system :)

Furthermore, many of these ideas -- like sending TX's directly to the
merchant -- involve far more direct payee-payer communication on the
part of the wallet client than is currently envisioned by the bitcoin
P2P network design, which is broadcast-oriented.  So, it remains an
open question whether we want the base bitcoin layer to even worry
about real-time fee negotiation and direct TX transmission.

It is possible that an instant-payments layer evolves on top of the
base bitcoin block chain layer, with bitcoin transactions evolving
largely into settlements between instant-payment intermediaries large
and small.

-- 
Jeff Garzik
exMULTI, Inc.
jgar...@exmulti.com

--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net