Andy Parkins [ARCHIVE] on Nostr: š
Original date posted:2011-08-04 šļø Summary of this message: A proposal to ...
š
Original date posted:2011-08-04
šļø Summary of this message: A proposal to add a new message type to the Bitcoin network to detect double-spending transactions is met with objections due to increased network traffic.
š Original message:On Thursday 04 August 2011 19:39:56 Matt Corallo wrote:
> But why? It results in slightly more network traffic which is exactly
> what we don't want, and it adds yet another message people have to know
> about.
"Slightly" is an understatement. It add more network traffic for every
double spend attempt. Which don't happen very often.
Also, I'm not proposing a new message, heaven forbid that we add a new
message type, I'm proposing that we do this:
enum
{
MSG_TX = 1,
MSG_BLOCK,
+ MSG_DOUBLESPEND,
};
Also, people don't "have" to know about it. And it's not "people" it's an
addition to the _one_ official client. _and_ it's backward compatible
because if they don't know about it, nothing changes... the TX gets dropped
just as it is now.
> > I think you've missed the point. Double spend transactions that enters
> > the network at two reasonably evenly connected points are each only
> > seen by half the network, since the first one locks out the second
> > from propagation.
>
> No one cares about what the network thinks is the right transaction, its
> only what miners believe that matters.
They do care because the network as a whole is what makes the eventual
decision about which is the block-chain-to-rule-them-all. Chain forks, and
eventual reorgs are also far less disruptive when each leg of a double spend
isn't on each potential chain. "Half the network" includes half of the
miners. It's perfectly possible for half the miners to be working on one
leg, half on the other. That means it's 50/50 which leg eventually gets
confirmed.
> Even if the vending machine doesn't keep the full chain and doesn't
> accept incoming connections, its still the target node. What other
> nodes on the network think doesn't matter as long as you get the target
> to think a transaction that won't be confirmed will be. If it doesn't
> accept incoming connections you want to find nodes that do that are
> connected to your target.
Well that's true enough; but how on earth you're going to identify an IP
address of a particular vending machine that isn't accepting incoming
connections is beyond me. If it is a target it's pretty close to invisible.
> Its much easier to create than to change the network code to relay info
> on double-spend transactions.
What? It's easier to trigger massive adoption and organisation of an
inherently disorgainsed network of miners than it is to write a few lines of
code? If that's true, then the bitcoin source is even more impenetrable
than I imagine.
> > Well that's what happens now. But that doesn't help the poor sap who's
> > just handed over some goods. I want it so that small businesses can
> > use the client to give them practical answers instead of this
> > "0/unconfirmed" stuff which requires understanding of the system.
>
> No, thats not what happens now. Currently if your node gets a
> transaction which conflicts with one it already knows about, it silently
> drops it without a second thought. My point is if you actually dealt
> with such cases and made good connections, you would be able to prevent
> double spends nearly perfectly.
It's not about prevention, they are already prevented. It's about
detection. Quickly.
> > I'm not really trying to prevent double spends -- bitcoin _already_
> > prevents double spends. Also: the only difference between your
> > suggestion (don't drop) and my suggestion (don't drop but mark with
> > MSG_DOUBLESPEND) is a single number in the inv. I really don't get
> > the objection.
>
> No, my suggestion is not to relay the second transaction. The second
> transaction should continue to not be relayed as it currently is,
> however receiving such a transaction should trigger the node to notify
> the user that the transaction should not be accepted until it makes it
> into a block (in fact, you could already do this if you implemented a
> debug.log parser and made well-placed connections).
How is this second transaction going to end up anywhere but on a few
isolated nodes if it isn't propagated? The only way _both_ can be in a pool
is if they are both received. If they aren't both forwarded then it won't
be in most pools. If it isn't in most pools then which how is the relevant
user going to get notified?
> Bitcoin is absolutely still an experiment and no one thinks that any
> kind of future is guaranteed. This was not meant as an argument, but
If it's still an experiment why is there such huge objection to pretty much
every change anyone proposes? Bitcoin is one of the most conservative
projects I've ever seen, even for the most passive of changes. I can
understand wanting to prevent potential financial loss, but it's not like
I'm suggesting we start broadcasting private keys on the network.
> simply as "if bitcoin does end up going somewhere, it will likely be
> done like this".
When you're using it as an argument for why a suggestion is unnecessary
that's not how it sounds.
Anyway; it's fine. You don't think it's a good idea; and I suspect none of
the other official client developers will either, they don't like protocol
changes. So be it; it was only a suggestion and I'm a nobody around here.
Andy
--
Dr Andy Parkins
andyparkins at gmail.com
Published at
2023-06-07 02:12:11Event JSON
{
"id": "b774bd8a24e8352c021dd86e1df32bc16e9cc196312bbbe6a816579f391cbdff",
"pubkey": "99bec497728c848e65549d1a5257d08de97621edcb4b77073269a45dac708d59",
"created_at": 1686103931,
"kind": 1,
"tags": [
[
"e",
"f7bac66510d148bc7cd5c36f79897fafe3410a2bc9df45238a65f8429b9407f0",
"",
"root"
],
[
"e",
"3d909e5712ee4651c213303995f58644c9fdfe64ef15ebc0bcc3efa97e319dc9",
"",
"reply"
],
[
"p",
"cd753aa8fbc112e14ffe9fe09d3630f0eff76ca68e376e004b8e77b687adddba"
]
],
"content": "š
Original date posted:2011-08-04\nšļø Summary of this message: A proposal to add a new message type to the Bitcoin network to detect double-spending transactions is met with objections due to increased network traffic.\nš Original message:On Thursday 04 August 2011 19:39:56 Matt Corallo wrote:\n\n\u003e But why? It results in slightly more network traffic which is exactly\n\u003e what we don't want, and it adds yet another message people have to know\n\u003e about.\n\n\"Slightly\" is an understatement. It add more network traffic for every \ndouble spend attempt. Which don't happen very often.\n\nAlso, I'm not proposing a new message, heaven forbid that we add a new \nmessage type, I'm proposing that we do this:\n\n enum\n {\n MSG_TX = 1,\n MSG_BLOCK,\n+ MSG_DOUBLESPEND,\n };\n\nAlso, people don't \"have\" to know about it. And it's not \"people\" it's an \naddition to the _one_ official client. _and_ it's backward compatible \nbecause if they don't know about it, nothing changes... the TX gets dropped \njust as it is now.\n\n\u003e \u003e I think you've missed the point. Double spend transactions that enters\n\u003e \u003e the network at two reasonably evenly connected points are each only\n\u003e \u003e seen by half the network, since the first one locks out the second\n\u003e \u003e from propagation.\n\u003e \n\u003e No one cares about what the network thinks is the right transaction, its\n\u003e only what miners believe that matters.\n\nThey do care because the network as a whole is what makes the eventual \ndecision about which is the block-chain-to-rule-them-all. Chain forks, and \neventual reorgs are also far less disruptive when each leg of a double spend \nisn't on each potential chain. \"Half the network\" includes half of the \nminers. It's perfectly possible for half the miners to be working on one \nleg, half on the other. That means it's 50/50 which leg eventually gets \nconfirmed.\n\n\u003e Even if the vending machine doesn't keep the full chain and doesn't\n\u003e accept incoming connections, its still the target node. What other\n\u003e nodes on the network think doesn't matter as long as you get the target\n\u003e to think a transaction that won't be confirmed will be. If it doesn't\n\u003e accept incoming connections you want to find nodes that do that are\n\u003e connected to your target.\n\nWell that's true enough; but how on earth you're going to identify an IP \naddress of a particular vending machine that isn't accepting incoming \nconnections is beyond me. If it is a target it's pretty close to invisible.\n\n\u003e Its much easier to create than to change the network code to relay info\n\u003e on double-spend transactions.\n\nWhat? It's easier to trigger massive adoption and organisation of an \ninherently disorgainsed network of miners than it is to write a few lines of \ncode? If that's true, then the bitcoin source is even more impenetrable \nthan I imagine.\n\n\u003e \u003e Well that's what happens now. But that doesn't help the poor sap who's\n\u003e \u003e just handed over some goods. I want it so that small businesses can\n\u003e \u003e use the client to give them practical answers instead of this\n\u003e \u003e \"0/unconfirmed\" stuff which requires understanding of the system.\n\u003e \n\u003e No, thats not what happens now. Currently if your node gets a\n\u003e transaction which conflicts with one it already knows about, it silently\n\u003e drops it without a second thought. My point is if you actually dealt\n\u003e with such cases and made good connections, you would be able to prevent\n\u003e double spends nearly perfectly.\n\nIt's not about prevention, they are already prevented. It's about \ndetection. Quickly.\n\n\u003e \u003e I'm not really trying to prevent double spends -- bitcoin _already_\n\u003e \u003e prevents double spends. Also: the only difference between your\n\u003e \u003e suggestion (don't drop) and my suggestion (don't drop but mark with\n\u003e \u003e MSG_DOUBLESPEND) is a single number in the inv. I really don't get\n\u003e \u003e the objection.\n\u003e \n\u003e No, my suggestion is not to relay the second transaction. The second\n\u003e transaction should continue to not be relayed as it currently is,\n\u003e however receiving such a transaction should trigger the node to notify\n\u003e the user that the transaction should not be accepted until it makes it\n\u003e into a block (in fact, you could already do this if you implemented a\n\u003e debug.log parser and made well-placed connections).\n\nHow is this second transaction going to end up anywhere but on a few \nisolated nodes if it isn't propagated? The only way _both_ can be in a pool \nis if they are both received. If they aren't both forwarded then it won't \nbe in most pools. If it isn't in most pools then which how is the relevant \nuser going to get notified?\n\n\u003e Bitcoin is absolutely still an experiment and no one thinks that any\n\u003e kind of future is guaranteed. This was not meant as an argument, but\n\nIf it's still an experiment why is there such huge objection to pretty much \nevery change anyone proposes? Bitcoin is one of the most conservative \nprojects I've ever seen, even for the most passive of changes. I can \nunderstand wanting to prevent potential financial loss, but it's not like \nI'm suggesting we start broadcasting private keys on the network.\n\n\u003e simply as \"if bitcoin does end up going somewhere, it will likely be\n\u003e done like this\".\n\nWhen you're using it as an argument for why a suggestion is unnecessary \nthat's not how it sounds.\n\nAnyway; it's fine. You don't think it's a good idea; and I suspect none of \nthe other official client developers will either, they don't like protocol \nchanges. So be it; it was only a suggestion and I'm a nobody around here.\n\n\n\nAndy\n\n-- \nDr Andy Parkins\nandyparkins at gmail.com",
"sig": "02667a09595a5cde7f6311c5523e116f612f0c5a83c280dab01230eedd3ae63bd43ab91a2e5953dba753d5d5aa0a5ffb8356f3f00ed60b88e5b49a8530d70c2d"
}