Jeff Garzik [ARCHIVE] on Nostr: š Original date posted:2012-08-16 š Original message:On Thu, Aug 16, 2012 at ...
š
Original date posted:2012-08-16
š Original message:On Thu, Aug 16, 2012 at 1:56 PM, Pieter Wuille <pieter.wuille at gmail.com> wrote:
> I suppose it is interesting in general for nodes to
> get a memory pool refill at startup anyway.
Yes.
>> An "inv" message is always returned, even if empty.
>
> I'm not sure about this last. What is it good for? inv packets can always be
> sent, even not in response to others, so it is not that this gives you an
> acknowledgement the mempool is updated?
A simple guarantee of 1:1 correspondence between request and response.
The bitcoin protocol sometimes simply elides a response when the
response would be empty, and this makes it difficult to know whether a
request is timing out or already processed.
Sending a ping(nonce) after each P2P command is another way of achieving same :)
> This seems safe, although it forces other full implementations that want to
> expose protocol version 60002 (or later) to also implement this. What do they
> think about this?
>
> I would like to suggest to allocate an extra service bit for this. We still
> have 63 left, and this is a well-defined and useful extra service that was
> not yet provided by any earlier node. Doing that would also mean that
> mempool-providing survices may be discovered before connecting to them, as
> the service bits are carried around in addr messages. Any opinions about that?
An nServices bit would be a better fit for this optional service, but
nServices bits seemed like a scarce resource, so I elected to be
conservative.
Absent the scarce-resource concern, I'd vote for an nServices bit.
--
Jeff Garzik
exMULTI, Inc.
jgarzik at exmulti.com
š Original message:On Thu, Aug 16, 2012 at 1:56 PM, Pieter Wuille <pieter.wuille at gmail.com> wrote:
> I suppose it is interesting in general for nodes to
> get a memory pool refill at startup anyway.
Yes.
>> An "inv" message is always returned, even if empty.
>
> I'm not sure about this last. What is it good for? inv packets can always be
> sent, even not in response to others, so it is not that this gives you an
> acknowledgement the mempool is updated?
A simple guarantee of 1:1 correspondence between request and response.
The bitcoin protocol sometimes simply elides a response when the
response would be empty, and this makes it difficult to know whether a
request is timing out or already processed.
Sending a ping(nonce) after each P2P command is another way of achieving same :)
> This seems safe, although it forces other full implementations that want to
> expose protocol version 60002 (or later) to also implement this. What do they
> think about this?
>
> I would like to suggest to allocate an extra service bit for this. We still
> have 63 left, and this is a well-defined and useful extra service that was
> not yet provided by any earlier node. Doing that would also mean that
> mempool-providing survices may be discovered before connecting to them, as
> the service bits are carried around in addr messages. Any opinions about that?
An nServices bit would be a better fit for this optional service, but
nServices bits seemed like a scarce resource, so I elected to be
conservative.
Absent the scarce-resource concern, I'd vote for an nServices bit.
--
Jeff Garzik
exMULTI, Inc.
jgarzik at exmulti.com