Panel Discussion - Double-spend Proofs Versus Double-spend Relay
Watch on YouTubeVideo summary
The panel discussion centers on the technical and practical distinctions between Double-Spend Proofs (DSP) and Transaction Relay as mechanisms for handling double-spends on the Bitcoin network. While Transaction Relay involves broadcasting full transactions, which increases data usage and creates potential spam amplification risks where small fees trigger the relay of larger conflicting transactions, DSP offers a more efficient alternative by utilizing a new message type that only propagates small proofs once a transaction exists in the mempool. This approach mitigates bandwidth concerns and avoids the need to relay large non-priority data, as significant transactions are generally rejected by miners regardless of their status. The debate also highlights that relying solely on existing channels for notifications creates security gaps where non-standard transactions remain invisible until block confirmation, whereas DSP provides immediate alerts without altering core transaction relay logic.
A critical aspect of the conversation involves SPV wallet vulnerabilities and miner behavior regarding conflicting valid transactions. Current SPV wallets often fail to see unconfirmed transactions filtered by bloom filters, leading to risks where an attacker could theoretically bypass these filters if nodes were to change their behavior; DSP addresses this by requiring wallets to explicitly request proofs rather than passively receiving data. Furthermore, the discussion explores whether miners should mine the second conflicting transaction they receive, noting that relaying full transactions gives miners complete information to prioritize higher-fee options, while DSP aims to notify merchants of conflicts without directly influencing miner selection. Although implementing DSP presents engineering challenges due to the complexity of handling various ordering scenarios and defining rules for different actors, proponents argue it is less invasive than integrating new logic into existing relay rules, whereas critics point out that both solutions struggle with edge cases like block boundary timing issues.
The group further debated the implications of fee models and permissionless innovation, agreeing that fees can penalize spam but suggesting alternatives like input/output counting to support lower-fee transactions without relying solely on fee-based prioritization. A significant portion of the consensus emerged around the idea that DSP fosters permissionless innovation by allowing miners to relay non-standard transactions independently without requiring wallet upgrades or network-wide hard forks for every new transaction type. By keeping proof sizes manageable at approximately 4-5 KB, DSP avoids the bandwidth issues associated with relaying full non-standard transactions while maintaining robustness against spam and replay attacks. Ultimately, the panel concluded that neither solution perfectly solves all problems, but combining ideas from both proposals offers the best path forward by providing merchants with necessary notifications to handle double-spends effectively rather than relying on security by obscurity.
Read the full video transcript
[Music]
now you start technics speaking that
would be possible practically speaking I
don't think it makes much sense because
they're kind of connected to each other
they they interact better in their
specific in implementations I think the
main difference between the two is the
specific set of variables that make
something a super standard or a standard
yeah transaction that are more geared
towards their specific implementations
did the idea of choosing between these
proven TX relay and the implementation
of the priorities still makes a lot of
sense to separate in implementation
anyway you can choose to not do any
super standard if you want and still do
the TX relay but then as imaginary user
name mentioned non upgraded s between
wallets will not get the benefit from
from this protection
I absolutely think we need to combine
the proposals to some degree whatever
comes out specific things about the for
example there's things that are not in
the si SP SNP proposal such as
explorations not dealt with it all it
needs to be dealt with so seven things I
like about that the other proposal are
the standard replacing non-standard idea
I love that idea
so and and then the whole we have
different views on fees that the Rees
been relayed says fees is not part of
the solution the other one says it is I
I think I think whether what to do about
fees could wind up mixing and matching
the fees is is an interesting topic
because we we know that fees is and
concept really introduced by Corps in in
a way that moves it towards a specific
economic model that really wasn't part
of the initial Bitcoin and what we've
been discussing in the last two years I
think is to replace the idea of fees
with something slightly more complicated
because the original Bitcoin said that
the age of a transaction or an input
specifically is much more important the
specific code in the original satoshi
client says that if you have a
transaction input that is very old
timewise
and you your transaction is zero fee
that basically is seen as a very
high-quality transaction anyway so we're
I'm hoping we are going to is is not
have fees specifically in any of these
situations but we're go into a situation
where we for instance count the amount
of inputs or outputs so you you allow
more transactions to be used with lower
fees because they empty out the you th
offset that's just an example so it
sounds like fees were used early on to
effectively penalize transactions but
not to refuse they're being committed
right I think today these are being used
a lot for spam control and I was
wondering especially things like
non-priority transactions and of course
both proposals are sending more data
over the wire right so how does the
ability to create spam and spam
multipliers you know negatively affect
these proposals at this point the SI
proposal I feel hat has the boss attack
vectors very well locked down because
you limit to things you limit the number
of messages that can be relayed as
alerts against a transaction and you
limit the size so while earlier there
was a rate limiter in the old code that
was a NXT that's begin with we've
upgraded that in the implementation and
the spec so I think that it's totally
controlled as far as the toss vector
so there's two points here first of all
I think that if we allow transactions
whole transactions b2b relate you will
send more data the ability to send first
a small transaction as a simple example
and then send 100k transaction and and
suddenly you obligate the network for
its self-protection to send the 100k
transaction as well becomes an issue and
at the same time the whole concept of
transactions are bigger than proofs and
also means that if you have one original
transaction and 15 wristbands I'm kind
of wondering how many of those refunds
are being broadcast as well whereas in
just one okay that's good and whereas in
the double span proof concept the
message being sent is extremely small it
refuses to send anything broadcast or
propagate anything that doesn't actually
have a transaction in the mempool to
match it so you can't just you know
create hundreds of proofs and last if
just like in in in the relay apparently
when there is more than one REE spend
then you will not relay the second one
so I think the the spamming itself is
mitigated quite well because it is
directly connected to the amount of
transactions that that a note allows in
Zoo is mental TomTom Jim question so
yeah one question about it because it's
obvious that then relaying takes more
data but from the perspective of the
spammer is it easier to spend by
creating all these respects or just can
it just as well create different
transactions I mean what was just
transaction relay somehow increase the
abilities of a spammer over what it
already can do with ordinary
transactions
cost the real a proposal increases it
roughly by a factor of two because you
can relay one extra transaction that's
not gonna give mind okay so if that's
that's the risk in the past there was
some amplification but not now I just
want to respond to some of the things
Tom said
100k REE spend is not possible in an SI
proposal because it's not Stanton super
standard only a 2k transaction is super
standard well this we're talking about
this proposal though so it's not a
weakness of my proposal that you can
relay a large alert that large it is
however a weakness of your proposal that
you try to protect the transaction that
large I concede that the proofs are
smaller than relaying a transaction
because the real proof is the
transaction it's the thing that double
spender signed that incriminates him you
can read ACK the questions what can you
read act thanks to the sink hashed
algorithm in in BCH we can what's not to
be in Bitcoin in BCH we can read act
things from it and have it remain
improved so the proposal read acts all
the inputs that are involved which is a
good idea and makes it smaller it also
read acts all the outputs as I said
earlier I think that's a bad idea
because it reduces the address ability
of the of the alert so yeah one thing
just to say that I find fascinating is
there's a huge commonality here which is
that no one is arguing anymore to not
relay some form of alert right so
effectively you could imagine that the
DS proof is kind of like a more
efficient relay of the full transaction
and
one thing that I found interesting about
that is you know people have made the
observation that des proofs aren't
available for all transaction types so
perhaps if the more efficient version
isn't available we could fall back to
the the ultimate proof which is just to
relay the transaction imagine I use your
name Jeff question oh I just want to
point out because there was a discussion
about spam potential which is right now
as in first thing is this directly tied
to the fees that you pay per transaction
but if you are if you are doing a double
span double span transaction relay then
there is this potential to increase the
network load much larger than the fee
that is going to get confirmed so you
know you can relay a very small
transaction that is 192 bytes and pay
the appropriate satoshi fees 192 and
then you and then you put out a much
much larger transaction and that would
have to be related much much and your
question is is that correct or no no no
but I just I just want to point out that
that is one spam amplification factor
yeah so because 192 versus the the
reason could be 2 K in those 50 K or and
also the proofing well I guess the proof
would be smaller but yeah the the fees
if you if you if you bake fees into the
standard which could you just also
easily be done with any super standard
TX relay that's an option it's just we
have to make it we have to make that
trade-off between making the standard
brittle or making it adaptive to the
network
so it has a question for Tom Harting
it's kind of a little bit related you
had talked about the Reese penned gap
right and how important it was to
minimize that wouldn't the des proof
minimize that respect because the proof
will travel a lot faster for you know
non-trivial Willie sighs its
transactions today to the extent that
it's smaller I suppose it would yeah if
it Redux the other unseen inputs it
would be slightly faster you're supposed
to argue with me about this well ok so
if we say to K we're assuming that we
also deploy super standard right so I
think we need to sort of imagine these
as it's you know separate possibilities
we that we deploy like what we have
today is just respond right and now do
we move to super standard or not I would
say yeah to verify the proof you you
have to do well you have to verify the
signatures either way and do the hashing
either way yeah so it's just the size
Chris mentioned earlier yesterday did he
it would be nice crust you know come to
consensus on doubles been proof or
double spoon or Ebay what do we want to
put our effort towards but I'm wondering
like we already have T X relay and bu
and XT like do we really need to pick
can we not just implement both and kind
of see what happens is it really so bad
if we have both live on the network that
the
talk from you Peter a couple of days ago
implied that the way to get better
double Spence to actually land at the
miners was to use the relaying of
transactions and and I think it was
funny because the first comments already
it was hey it's interesting to see that
this relaying of the transaction is
actually the cause of the double spends
if you were to turn it off it will be
very interesting to know if your test
comes out differently and I think that's
the biggest issue I have with double
spend relay it it hurts the network it
has two major effects the first one
being a transaction that would currently
useful before B you implemented this be
completely rejected on the first seen
rule now suddenly does propagate through
the network and this is is ok-ish for
normal notes because they most likely
have a mempool see all the transactions
for SPV knows this is disastrous though
because if you have a fast wristband
where the second transaction is two
words an SPV user then there is no way
for that SPE user to actually figure out
it is a wristband because it never gets
the first transaction because the first
transaction is filtered by the bloom
filters it wasn't to him so he doesn't
get it and therefore the relay will hurt
SBV users exponentially and that is
supposed to be 99% of the users so um
I'd like to respond to that if I can um
and I think it brings up an interesting
topic which I think we're skirting
around I'd like to make it very clear
which is that it seems like in a lot of
cases the presence of a Rhys pend
needs to effectively mean that
that like both transactions have to take
on the qualities or the priorities of
the the other and in this case a
solution to the problem that you
proposed would be well even if one
transaction doesn't hit the bloom filter
it gets relayed to the SPV node anyway
due to the presence of the key you know
the double spend transaction and I think
we see that actually in a lot of places
because we're talking about like one of
the important parts of the des proof and
the transaction relay is to you know
relay these entities at high priority
right and Tom Xander you were talking
about what's great about the des proof
is that it's a separate channel from the
transaction relay and I took that to
mean effectively a separate high
priority you know will not be it's
throwing oh yeah sensor thrown out you
know it's just a channel right is that a
good assessment of the reasons
can can I first respond to this little
mistake so when you mentioned the SPV
nodes being at risk because of real
angry spends they may not seen the red
one the code out there doesn't do that
that was identified as a risk and so it
doesn't do that that was a in room for
that for now we're not really in
response at SPV nodes because we wanted
to fix that problem but also the correct
thing to do as Andrew said is to send
make sure before you send the proof of
whatever kind you send the original
transaction make sure they have it the
suggestion that relaying the Rhys Bend
is dangerous because it's bad and it may
get to it maybe mind is not correct on a
bunch of levels
first of all as security its security
through obscurity and that's not
something that we want to rely on I
mentioned earlier the double spender
himself could send it to hundreds of
nodes everyone needs to be prepared for
receiving it and the fact that we're
doing it now and it hasn't caused a ton
of problems means that generally because
it's even on the BTC Network at one time
XT was about 20% of nodes on the BTC
network so almost every node was getting
all the response with the normal
connection counts and it never cost a
problem they didn't have RBF back then I
think I remember imaginary user name
himself did it did a test to check
whether the mining of Reese pens was
increased by relaying them and they
believe he found that it didn't or was
the opposite so it does so that
simulation it addresses a specific thing
which is if it increases the chance of a
tx2 getting through the minor first of
in a upside down in a upside down
situation and the finding is that real a
double spend does not increase that by
any significant amount so that was your
partner that found that it did not it
did not however address the question of
whether a ill minded miner will who get
both would have a higher chance of would
have a higher chance of oh I got the x2
I might as well mine he has to first of
that one's not addressed for variety of
reasons but if such a minor exists and
the answer is probably yes
so yeah yes that wasn't the argument I
was making the argument I was making is
that it goes to SPV my users and and you
said that that's not the case because
the BU software doesn't send it SPG
miners s with three clients that doesn't
mean it doesn't reach sp3 clients
because if I send it if I send the bad
transaction
to a different note that one can itself
send it to an SP fee note as well it
doesn't have to come if it sees it first
because they don't really read spend
only if it sees it first or if it's not
standard you basically come back to the
original current setup where your your
transaction is not going to be seen by
the majority of nodes if you have a
lower fee for instance and therefore you
still have all the opportunities because
constantly instead of you needing to
contact hundreds of nodes like you
yourself suggested suddenly you just
have to send it to one bu node and they
will contact hundreds of note for you I
just want to say on a higher level
the idea that one the idea that one
transaction is contraband and the other
one is good the idea that because you
got something one millisecond later than
another one that it mustn't be relayed
and other nodes mustn't be able to draw
their own conclusions about whether it's
and users can't draw their own
conclusions about what the gap was isn't
a strong way of approaching it the
better way to do it is to make the
network transmat transparent to both of
them and then at the point of
consumption the decision has to be made
whether there's really a problem there
or not can't identify one as good or bad
you could be you can be seeing them
easily in fifty percent of the time for
assignment a time until you transmit it
you're making the wrong decision it's
not possible to do that I would like to
rebound on two things that that you said
the first one is that really that not
rallying the second transaction is
security by obscurity and we shouldn't
rely on that and I agree 100% but on the
other and that doesn't mean that like I
don't think that's an argument for word
insecurity and let me take like a
metaphor to try to explain that I D I
have a log on
you know on the door on my house right
because I do not rely on everybody being
nice and not breaking in that doesn't
mean that the person that break-ins is
not a giant douche bag and and that
doesn't mean that we should like
consider that behavior as normal so I
don't think that's a very strong
argument for the man's man Oh ever you
met another one that I think is usually
usually quite misunderstood but there is
no notion of this is the real
transaction and this is the double span
right because we are on distributed
network and all notions of time or what
haven't happened or did not happen is
inherently subjective it's not is gonna
have its own and there is literally no
way to ensure that like this is why we
need Bitcoin in the first place it's for
all the not to converge to what a common
state before that there is literally no
common state that exists and there is no
commented that can exist and and so as a
result that the idea that there would be
an original transaction and it would be
that double span and we need to block
that double span it's it's not wrong
it's actually completely meaningless
right it like it cannot be right or
wrong it doesn't like it doesn't make
any sense to begin with so yeah that's
yeah that's pretty much the idea I
wanted to run faces it's completely
agreed I can I just respond to this very
own um I also tend to agree with you and
obviously we need blocks and improve of
work to other transactions but I mean of
course we have this kind of gray area
where you say like okay first thing safe
it's like I mean the whole idea of
having this boundary of like let's say
okay after three seconds of not seeing
anything it's safe it's because we do
some ordering and assume that the total
network even though on a micro scale it
does not have
like in ordering of transactions that's
that's consistent between notes on a
scale of like 10 seconds it does have an
ordering right if you don't have a
transaction then you should it's it's so
does buy enough that comes after that I
agree with that go ahead so I wanted to
say that I do agree that security by
obscurity is you know never the best
pattern but also we have to be very
clear that when we give full knowledge
to a minor of a transaction twice we are
giving them a choice to choose between
two things where it's completely
ambiguous as to the in the intended
recipient or where what transactions
have valid transaction they're both
valid transactions they don't really
have any way to choose so the debate
really is is anytime you see to you know
that you have no idea to know whether an
what's actually going to get mind on the
network and that this is a case where
the merchant needs to consider it a bad
case for the merchant so they're either
going to need to refund payment or
they're going to need to just
acknowledge that something has gone
wrong and that is absolutely the
requirement so I think that trying to
minimize the case where a minor could be
bribed it's not necessarily security by
obscurity it's really just making sure
we don't make it easier for them just
handing them the keys and saying okay
here here C R so a way for you to cheat
the network and just get some extra
money there any profit driven minor if
we don't know what they're going to do
we can't assume that the minors are
going to behave well so this is really
just a risk analysis of do we want to
give them all the information so that
they can do try to be profitable or are
we going to try to just give them a
proof that something's gone wrong so
that the merchant has been notified that
this thing has gone wrong to me the main
difference between the double spend
proof and the TX relay is not whether it
provides the notification they both
provide the notification they both give
the data that's needed what is the
difference I think is the technical
effort to implement the specific
solution so double spread proofs we're
talking about using a different channel
to be able to send those proofs using a
nymphet
that is new and it requires some updates
in order for software to support double
spend proofs today where TX relay does
not require any real integration changes
inside of the ecosystem and I think
that's the main point
they both do work one has a slightly
higher attack vector and that the miner
can choose to grab the higher priority
transaction and could lead to that but
at the same time the merchant is going
to get notified and they're going to
reject the payment anyway so it's kind
of inconsequential at the end of the day
but it's the integration complexity that
I'd like to try to focus on and I really
haven't heard much of a discussion about
that part okay well to respond to your
your concern can the experiment you
would want to do ideally is to have a
world with only Delfin proofs or
attempts to have only Devils van proofs
and then have one that has free relay
and see if if fewer adverse confirms
happen and one of the other we I don't
know if we can do that we can't do that
experiment cuz we can't lock down the
relay FTX - even if we don't have relay
nodes the attacker can do it the node
restarts or even the wallet I think in
some scenarios could relay this conflict
because maybe or maybe not but but we do
have experiment experimental data that
Android Theater presented and that's
available you can just scroll through
the Reis pens on double spend cash and
see what does it seem like when do
surprising adversity x2 confirms happen
and it's when they were relayed very
close together the time is the is the
thing that makes it happen the fee is
not the thing that's currently making it
happen overall and today it's not
because they can't get it they can get
it I like to address what just just said
I mean I think there's one big
difference and that I think as not it's
not addressable versa takes relay is
that the big transaction case right like
you will get a faster real live as a
double spent proof and
I don't see how you can get around that
when you say big transaction you yeah
like it like a hammock a transaction
versus like a 100k transaction versus
the one ksi says 2 K is the max so you
wouldn't try that you what what do you
do with the 100k a spend do you just
assume it's not gonna be a problem it
would not be a zero conference so no
he's no but he's he's asking about the
responders 100k so the way I originally
retrospect the these super standard or
relay and the Super Center replacement
was actually tied together and I believe
that part was addressed by the fact that
the 2k is going to replace 100k at all
times that's how I read it
that is correct yeah because it's it's
it's yeah it's just it's defined to be
not part of the protected class and so
if it does lodge itself at a minor it
would get dislodged by I just really
really clicked I I like that idea then
like it makes sense like to say okay
like we only have like two up to 2k or
something for these transactions and
they get replaced but then we all this
other kind of forms that you have to
attack the first scene saves rule to
replace it this year replaced by 2k
super standard right so it seems to me
like this is like a path you could go
but it has the hurdle of more changes
that can break existing yeah existing
software
with with es proof we must also assume
and I think that's a point that Tom
hunting also made it we must assume that
these miners will get both transactions
so you always have that problem you have
to these are two different problems to
solve this is this is not correct
the miners are not responsible for
creating these proof and any node can do
that
no but if we're just gonna relay not
kind of relay transactions but kind of
relay the the proofs then an attacker is
still going to attempt to get it to get
there double spend transactions to over
a miners so we still must have the
policy of how to handle this second
transaction already so being aware of
them is already good for the merchant
right and I think that the problem is
that mr. TX realized you might get to
the point where the merchant is not
aware of the big transaction this goes
together with my talk an hour ago where
a double spent proof is not meant to
have any influence on the miners on
which transactions to to mine I
completely agree with the further with
the statements made earlier that the the
right transaction is is a judgment call
and can't be made by the system - can
decide however they want I don't I don't
mind the the point of double spend
proves is to let the merchants know that
something happened so they can lift it
out of the system and and take
responsibility so if I'm standing on the
street and you pay me something and you
double spend behind my back that I know
that hey I shouldn't give you an article
tears both from me that's the point so
it's it's not nothing more and and while
I have the mic I wanna respond to two
things that basically are the same point
it's about the way that if we deploy
this because there's one rather large
problem with the relaying because the
solution may suggest it for SPV wallet
to get the knowledge of a transaction is
for a node to change its behavior where
if you have the scenario my attacker
sends a transaction to himself and then
a couple of seconds later he sends a
transaction to the merchant the problem
with an SPF e wallet is it would never
see the first transaction therefore with
the relay it would never actually notice
there was a problem so the solution to
that was suggested the node changes
behavior it sends both transactions to
the SPV wallet this assumes that SPV
wallet is upgraded and will actually
detect this say hey there's a
transaction that not for me currently
that means that all SB wallets ignore it
and if you do this if you make the
network change this for a while until
all SP wallets have been upgraded and
patched you will actually create a
bigger problem because as before now
that transaction that is currently not
being relayed at all actually reaches
the SPF e wallet so you're actually
creating a problem and this is the
deployment issue if we could do a snap
replays and everybody's devices it gonna
be upgraded today then there is
something to be said but there is a huge
problem with rolling out
the relay for SBV Wallace right now and
we can't fix that in any way whereas you
can so I I omitted from the description
of the how that when we start doing that
how to address that we did identify that
you always need the SPV wallet will
request race pens nobody nothing will be
relayed to the wallet unless it requests
it and changes to the node and changes
to the SPV wallet are required under
both proposals and I think the magnitude
of the changes is similar also I want to
return to the wait um Tom's II do you
believe that the magnitude is similar as
well the that the change is needed to
the SPV wallet in in the double spent
proofs are currently and and this was
actually also mentioned in the
presentation from imaginary username the
changes needed are essentially that
nobody gets hurt because they get a
message they don't understand and
therefore they don't get the
notification and so we're I think and
wallet has the the reason to upgrade to
get notifications whereas in your
proposal the wallet needs to upgrade to
not get a diminished experience no
that's not correct because they don't
know no SPV wallets are currently
requesting double spins so no one nobody
would get hurt
also it's not true that the only changes
needed would be to ignore purse we want
them to use the purse they have to be
able to process the purse so that change
is needed doesn't exist right now
it does I like it from there was a
question about the engineering effort
which is why I wanted to stop you guys
right it does sound like we're coming to
the point where you know not counting
nickel and diming lines of code like the
that we need you know a certain level of
changes to all these certain you know to
the same components within the Bitcoin
network
SPB while it's full notes
someone who watches this video is going
to notice I never responded about the
100k Ries Bend which is a really good
question you so you pay someone with a
2k transaction and then you do 100k
Reece Bend so it's a reef and it's not
protected but that's not important it's
actually it's only function in every
spend relase and it's a serve as an
alert and the reason that's not a big
problem is because with an alert you
want it to go really fast or with it
sorry because it's it's not the alert
it's also if you're worried that a miner
is going to mine it you're worried that
it's gonna get to the miner fast but
it's not gonna get some minor fast it's
gonna go it's very slow so it's was that
rely on security through obscurity in
the sense that he could send 100k
transactions a minute to just get going
that I mean that assumes that the path
of the transaction to the miner and to
the merchant the same but like it could
be different so that the merchant
doesn't see it but the 9s world I think
you're speaking I'm not assuming a
best-case scenario for me I'm just
saying it's going to be on average 200
times slower so what about the scenario
when the attacker sends the 200k
transaction first waits five seconds and
then finally sends the transaction to
the merchant that's a big problem for
your proposal but not a problem at all
in mine because we don't protect hundred
K transactions that would not be relied
on why is it not a problem if you don't
protect them the merchant would say well
you didn't you didn't pay me with a
super standard transaction so I'm not
giving you the goods until it confirms
this second transaction is a stent super
standard transaction so fight okay so
you're saying five seconds later they do
like a reverse we spend kind of thing
but still that's that's five seconds but
you have you have
50 x times the other propagation that's
hence you wait the finished second so
all the minus or you have it and then in
your proposal you want the miners to
replace it that assumes that all the
miners follow this policy otherwise you
will increase the ability of merchants
to get robbed maybe maybe you can
diagram it okay imagine we have a
attacker that takes a hundred K
transaction pays himself and then he
sends the transaction to the merchant
knowing that the transaction to the
merchant is a much shorter path so
there's a good chance it doesn't have to
be a hundred percent chance that the
transaction that he pays the merchant
actually reaches the merchant and it's a
double spend and the hanukkah
transaction never reaches the merchant
and so your proposal also doesn't
actually do anything about the the the
relaying of the transaction in the first
place
so it falls out of it but it still is an
open hole isn't it did I miss something
okay so can i clarify for a sec so
you're saying the 100k transaction
doesn't get to the merchant within the
five second time window because it's so
big is that what you're saying also
you're saying it doesn't pay the
merchant it's the respect okay so
basically it's the same as the other
scenario but it's transmitted earlier so
basically you have the bad guy who's
trying to gain me he's trying to he's
trying to guess how much later it's
gonna rise at the minor so and transmit
it before that yeah so he could try to
do that he's trying to make a guess of
long does does the efficiency of double
spend proofs justify the engineering
effort alone without even discussing
these issues the engineering efforts I
mean this is based on the creation of a
hash that is going to be signed for
transaction this is the basic the core
part of Bitcoin this code is there might
need to be reflected a little bit to
make it reusable instead of copy/paste I
don't expect it to take a lot of time
and this goes for all implementations
because verifying signatures and the way
that signatures are verified is that it
takes it over a specific input a
specific output that's also that based
on the sick hash and those those lines
of codes are already there so it really
isn't a significant amount of work
somebody just needs to sit down and do
it which is probably the actual writing
of code is a much lower amount of work
than the actual you know creating over
new message in the network layer and
that kind of details which next beefy
client doesn't even have to do that I
want just to this discussion about
double spend transactions and which one
should be mine which ones shouldn't be
mined I think it's very important to
stress that the dub double spins don't
happen by accident that could
potentially happen by some sort of bug
you know in a wallet or something that
they are they're not by accident that
just doesn't happen by accident and so I
think that a clearer way to view the
double spin transaction is that they're
both double spin transactions they're
both unwanted transactions the double
the double spin proof approach why I
like it is it seems to be less invasive
and less
changing how things are running at the
moment it's a separatist notification
hey guys something's going on I'm not
sure what the relay of transaction adds
that doubles band of proof doesn't add
and to me the real cost and possibly we
don't talk about it enough yeah is there
is a significant cost in my mind as to
the perceived risk as to the eventual
result of further double spins occurring
and it's and I think it's more complex
than just social media exacerbates the
perceived risk but that the end result
is people lose people perceive a risk
and that's it that I mean that that's
that's why why double spending is an
issue or you know zero confidence
because it's a perceived risk even
that's not a major risk it's pretty it's
almost good enough today but there's
this perceiver so everyone holds back so
anything that increases that I think has
a significant effect in adoption has a
significant effect in in development and
just in people provide looking to
provide custom experience if there's
more perceived risk around it so that to
me is the cost with with the rely and so
I just wanted to chain yeah I'd like to
respond to that because the the idea
that it should be clear from what we've
discussed today that that addressing
this this area isn't just about the
format of the alert the format of the
alert
I agreed proofs can work but just
sending alerts is only a part of it and
that proposal if it's simpler it's
because it has skipped over a bunch of
things it says let's just protect all
standard transactions that's not a good
idea
it doesn't address expiration that's not
okay so we have to take all the ideas on
the table and so I to say that it's
simpler to do it is just because it
doesn't do enough
well what what risks or what
notifications aren't covered in the
devil spin it's not clear when aut X
will become spendable again in unless
you're gonna permanently make that UT oh
you take so and spendable that has to be
addressed
also it tries to protect hundred K
transactions well why is it like a
either all of us these two I I don't I
don't understand that like it's not I'm
just responding to the idea that one's
really simple I don't get how double
some proofs has anything to do with
exploration because it doesn't change
the the way that existing transactions
are relayed or mind it's separate from
the s PNP replacement who doubles BAM
proof proposal is a whole other channel
and layer and yeah it so there's nothing
to expire right but the person asking
the question I think is assuming that
just making a proof is the whole thing
and I'm not just it the proof itself is
more complex so
it's not it's not almost enough well
we're not talking I told you that the
format of the alert isn't the only
difference the two are very similar as
alerts it's the other parts of the
protection that are important I'm just I
I want to respond to the other question
that was asked about Oh
oh it was it was the answer that Tom
gave about the effort so he was saying
that implementing proofs is no big deal
and so I'm not gonna say that
implementing relay is no big deal
because it's obvious that it's no big
deal and it's already implemented I do
think that it's far too easy to
underestimate the effort involved in
implementing something like proofs it's
complicated because it's a new message
type and you have I had another slide
that I didn't wind up showing but today
I put up a slide in Tokyo where they
showed there's four different ways you
can get an ordering of TX 1 and TX 2 and
what can happen in those scenarios when
you add the proof in there and you and
you talk about what happens at the minor
versus what happens at the merchant
there's 36 different combinations of
orderings that can happen on both of
them and and that doesn't mean you have
36 cases to solve you you try to come up
with the rules like and there's some
rules specified in the in the spec which
say if I get a proof and I've never
heard of this UT X so before I throw it
away if I I think there's some risk
there after actually because if you
throw it away well I'm not sure that's a
Tom this is actually my question that
Tom's Anderson maybe I can just segue
into it so to attempt to throw a monkey
wrench into the
so double spend proofs we've kind of
agreed that it's much more efficient
right so let's say an attacker was to
create slightly more efficient it's it's
more it's um the size of a transaction
you know the data paths can be much
smaller right and it would therefore be
related faster so as an attacker let's
say I create 200 K transactions right
and effectively and they're they're
double spends of each other and
effectively then the double spend proof
will beat those transactions propagating
through the network and therefore be
dropped due to this this don't relay
double spend proofs if you don't you
haven't seen the transaction yet rule
right so I'm wondering what is the
source of that role I feel like you know
you've created this a high priority
alert channel but now you're you're
chaining it to a low priority channel
and you want to talk a little bit about
why that was needed and how maybe we can
solve this problem the basic reason why
this was needed is simple it's a to
protect from spam attacks because we
when we provide a no-questions-asked
high level transport we need to make
sure that somebody can't abuse it and
the simplest way to avoid abusing a
system is to make it have a cost and the
cost in this case is that there has to
actually be a minor bull transaction
which typically implies a cost mining
cost for instance or the the fees
specifically so that's the reason why
they are combined and and it's a good
point I think one of the reasons why we
have these questions I how many had a
fantastic question as well you know what
happens when you send
hundreds of double spent transactions so
you have one actual transaction and then
you just create a hundred to double
spent reductions and and you know this
is these are the kind of questions you
get when you start implementing it where
a simple thing that my idea about this
is that a double spend proof that comes
in will only need be kept on an old for
probably 10 20 seconds because I expect
like any mempool transaction that is in
a menthol I expect that we don't
actually send the double spam proof
unsolicited we send a nymph which means
that you have a round trip because
otherwise any note will get lots of lots
of duplicates lots of ways to bandwidth
so you need to cash it for some time
anyway
and as a result what you what you can do
is you have a first level cache where
you keep off your double spent relays
and then you you know you keep I have
seen this idea of double spend relay
till the transaction is mined something
like that and that side steps all of
these problems you don't relay that's
the rule
you do not relay the double spent proof
until you have in your memo one of the
two transactions yeah I'm just thinking
of a certain interesting scenario for
the for the TX relay model where you
know the miners are behaving properly
they doin first scene and they're
replacing non-standard transactions and
non super standard transactions by super
standard transactions which is a
requirement but that gets a little bit
weird if you have a block boundary so if
I go to a vending machine and I publish
a non-standard transaction to to a minor
that accepts it and I just wait until a
block gets mines then at that moment buy
my stuff with a super standard
transaction then the gap suddenly
becomes the entire block isn't that a
problem
isn't that too large
well the conflict that arrives so the
conflict will arrive in as part of the
block yes but then then you then needed
it itself propagation of the whole block
that is basically becoming your gap yeah
that's interesting
I haven't thought of that attack before
in general you do you would treat a you
would treat you treat you need to treat
all the transactions that come in a
block as how if they've just been seen
and that's and normally they would come
later you know because the block comes
much later so they would not they
wouldn't count as invalidating but say
your scenario is you wait for the block
and and then a minor is behaving
properly because he cannot you know he
has already done the non stare at
through session but hasn't seen the
super standard one and then you know
then certainly your cap becomes quite
large I would say but it only of course
applies to situations where you can wait
for the payment at an exact time like a
vending machine but it's still an
interesting scenario like risk voice
can't you simply model this like by
basically taking the ratio of block
polarization time to 600 seconds and
saying this is the kind of like floor on
the on the double spending avoidance I
can do and simply say okay there's like
a percent it's for less than the percent
is like a criminal chance that you have
this block and you can actually exploit
it but I mean if I look at the merchants
and customer interaction like you're not
going to wait at the checkout counter
although a block of ice right how does
that how does how does that question
distinguish between these two proposals
well with with a double spent relay that
the the of course the second transaction
would just be relayed as a double spend
anyway even if it's already in the first
one was already in a block or I might
yeah it's still double spent right but
maybe don't have your scenario right
okay so I'm publishing a non-standard
transaction and at the moment the block
comes in I'm publishing at the super
standard transaction so the the the the
super standard system
is doing nothing wrong because he's
including in a non-standard section
without having seen a super standard
transaction but for in your proposal you
would have to wait for the entire block
to come in in order to see the
non-standard transaction the first one
whereas in the in the NYADA proposal the
double spent proof would just be sent
immediately but there isn't there is
almost the same attack I mean if yes
almost a semi whatever the difference is
sending a double spell in this case the
difference is not sending a double
strength proof or a 100k transaction
there is attending a double spent proof
or sending an entire block in terms of
speed in terms of the gap but but you
could just as easily double spend
regardless of what the plan is if you're
going to get the miner to put the reece
penned in a block and then you're going
to immediately you mean processing the
entire the notification time for the
merchant like the gap use once yeah once
it gets to that transaction but it has
to process the whole block yeah the
merchant has to process the whole block
for he guess before he detects the
double spend instead of just receiving
the double spend so it's not it's not a
big timeframe here but it does increase
the gap I would say for this scenario
and maybe it's an edge case but it's a
good one
and this I think is the main reason why
I I would aim towards a separate system
a separate channel for notifications
like these don't build it on top of an
evolving system because you know these
kind of things
fantastic thinking I'm pretty sure
there's gonna be more little gaps in the
in the ideas of how these things work
if you reuse the existing channels
because it's gonna it's like a game
system a friend of mine worked for a
game site and and whenever there was an
update there was a certain group of
people that would always you know spend
a lot of time trying to find holes and
then you know for the next week after it
you end up fixing all the little holes
and there's gonna be unintended side
effects and it's gonna be in a
continuous problem as long as you keep
on using the existing channels because
you're any change to fix the problem
will end up being inside of the system
that you're trying to fix with
unintended side effects people who are
selling solutions that aren't created
yet are always able to do that and the
assumption is that the new system won't
have any problems but the new system
actually has a whole all of its problems
that haven't even been discovered yet
because it hasn't been written and has
it been used but at least they don't
interact with each other well the if the
idea of super standard is actually a
different channel it is it is also
asking what needs to be done to make it
efficient so it's not just reusing the
existing channels talked about super
chance to test standards the one thing
that I'm wondering about is how do you
foresee rollouts
imagine that the miners over the course
of three months will start introducing
super standards
and replacement when would have become
safe for notes to get doubles before for
SPV notes for su wallets to get the
double spend relays well what I said was
that you have to treat the activation of
the replacement real similar to a hard
fork it has to be something that is
everyone agrees to turn that on at the
same time if I turn it on it means we're
wallets would say that this transaction
is it's reliable fair enough
I don't think that's a good idea but
that's not my decision to make
yeah it's good just to understand the
dimensions of each problem right and so
looking on the other side on the non
priority transactions I find this
proposal pretty interesting and
completely new I haven't heard of it
before you know these last talks and of
course I have a few concerns one would
be could an attacker just effectively
fill completely spam the network with
transactions that he know will likely
not be committed until the mental is
full right and then the benefits of
relaying non-priority go away because
now we have to start rejecting
transactions from the mempool
maybe yeah we can give imaginary
username uh my um so the idea of
non-priority versus standard priority is
not to say that nodes would have to
start relaying non-priority now because
the realm of non priority is big and
there will always be a threshold no
matter where you dogs draw it there will
always be a threshold where no it starts
to be unwilling to relate it um the idea
is to draw a line between standard
priority and non priority where you know
above the line that is safe below the
line notes miners do whatever you want
just like they do today feel free to
play with it just don't affect things
that are above that line today we just
don't relay those transactions are some
law some notes and some miners do and
that is status proven to be your
problems oh ah so what you're saying is
to clearly and in a centralized fashion
define sort of when a transaction drops
into the non priorities well I mean I
mean on rueland
I mean today we also draw that line it
was not followed by a new by everyone we
also draw that line in terms of defining
a mineral a fee that is prevailing on
the network this proposal simply take
that line and make it a more solid one
death you know where where one side
would replace the other instead of just
a rule where one side gets real a and
one side doesn't because today we also
have a default min rule a rule that has
been default which is effectively just a
recommendation it's not right and that
default line has actually made you know
a lot of it created some problems but it
also made a lot of difference in terms
of making zero calm more reliable like
things that are below it it tends to it
tends to get blocked by the network and
tends to not get mind
so the non priority proposal is to
harden that line at least by agreement
and then um it's giving the option to
the miners that basically let's call it
minor cheese
let's basically allow a mind to say hey
I want to receive zero feed transactions
and mind them but they know that there's
opposition to it because you know
there's there's risk to zero comp
because the rest of the network doesn't
and you get into a situation where
either everybody moves and nobody moves
and that's just not healthy so we're
we're you now have the option for those
miners that want to move the line to
essentially say okay I'm going to make a
separate layer of an NP transactions
that allow you to you accept it but you
do it in a way that doesn't cause abuse
but so why do we need like this line at
all when the double spend proof can
handle those transactions as well
because they're not the deadline for
instance for the minimum fee is not in
order to protect against a replay the
double spends that's not the point
they are here to predict the network you
know it's easy to call them spam I
understand yeah uh in terms of
addressing double span I just want to
reiterate what say what was in my slides
they addressed two kinds of audiences
like I agree that if everyone adopts
that was improved and it will be fine
and the line is may probably not need it
um but um separately if miners draw that
line and harden that lines and it
protects wallets who do nothing at all
wallets can just sit back do nothing and
still get higher security in in in
double spent proofs the whole and
concept is optional yeah while it
doubles them proof you what you have to
get a wallet at half that gets those
alerts in order to benefit from it so if
we had to characterize you know out of
all the proposals which one would be the
most permissionless what do people think
and then maybe we can do a show of hands
and then they can argue it out what do
you think about that so if you think
that will spend proofs
you know enable more permissionless
innovation raise your hand yeah if you
think that double spend proofs allow
greater permissionless innovation then
raise your hand with respect to the
doubles man relay sure in mind I mean I
don't let's let's make that one optional
I'd say because you know that's that's
for a later time I it seemed like maybe
about three-quarters of the people spend
yes
yeah they are it's a free option
question at least right there because I
did not what yes but if you were asking
the opposite question I would not vote
no either I think it has very little
impact the most dimensional problem
unfortunately I'm trying to simplify it
but yeah but so so so Tom Harting you
first you want to do you want to sort of
respond to the fact that 75% of the
people think that double spend proves
create more permissionless innovation no
I'd like to hear why anyone in the
audience when a state why are Tom Zander
do you want to go I think the yeah you
voted yes so open your mouth okay so the
main reasons for me are I like the idea
of not having to have as many changes
forced on a wallet to implement features
a wallet can choose not to accept the
new double spend proof messages just
fine and it makes the standard behavior
that they're doing today for most
purchasing wallets just slightly more
safe based on that original proposal
with very few changes in the logic of
the wallet it also allows for the non
priority transactions to be treated very
independently by the miners and if those
are going out then they can choose how
to relay what's happening there but we
can still provide the proofs in a very
lightweight way to the wallets that
choose to subscribe to those messages so
it gives more flexibility to me on how
we handle non-priority transactions in
the future gives some flexibility to the
to the network to say well you know
these are non priority but these low
maybe they have some other conditions
that they say well these non priority of
transactions I am going to relay to
other parts of the network and gives
them a choice to do that while giving us
a way to give very small proofs that
these double spins are occurring
even in those cases so I just see it as
less complexity for the existing system
which means the people that have already
developed solutions don't have to make
that many modifications meaning that the
permissionless choices they made
previously don't get impacted and it
allows for the more flexibility on the
non priority transactions without having
to incur an additional size restriction
for relaying that transaction so since
the double spend proofs are smaller it
allows us to distribute those faster and
also cover the non priority cases in a
cleaner way as if I'm reasoning about it
correctly okay is that what you meant by
permissionless it's because I was I
thought permissionless would mean
allowing people to do that more things
without asking permission yeah so what I
meant was let's say you have a new
service you want to deploy it on the
network it requires you know weird
transactions right so can you just talk
to XT and have you know one node that
supports that transaction type or do you
need everyone to kind of acknowledge
that transaction in lockstep okay I
don't want to know what I said but I
think that I think the relay it's way
better for that because everyone knows
how to process them already but but it
so your point what a Josh's point was
that it's easier to ignore because it's
incremental it proofs are easier to
ignore
so responsibility let's say tummies
let's say you had a you know a
transaction that you'd normally accept
and you have one that looks weird and
it's a double spend would you now relay
the one that you normally wouldn't relay
because it's a double spend or would you
just ignore it
what does the speck say the the speck
says that they follow the same rules as
the standard transactions yeah then the
idea is because the miners aren't going
to treat them as protected so for me the
concept of permissionless innovation is
that you know if if one miner says hey
I'm gonna work with this big bank and
I'm gonna make lots of transactions that
completely fall within the consensus
rules but don't follow a standard then
that is one of the the big simple
examples of Michener's innovation
everybody will accept it and it doesn't
hurt anybody the blocks get bigger I
guess but that's about it
double spend proves basically don't hurt
that that's a very simple use case I'm
not saying that the relays hurt the
system either it doesn't hurt
permissionless innovation in in
practically all the use cases I come and
then this is probably the most extreme
one I can come up with I have a question
about something earlier about what Tom's
lands are you what you said about I'm
using also as a separate infamous it's
the new double Spence I'm just trying to
figure out a little bit how big these
double Spence can be but I mean I would
say that that's about four or five inch
maybe max a single double Spence is
really small doesn't really maybe it's a
bit of a technical detail but does
really make sense to the same same level
as as normal transactions we don't get
very big either where essentially what
you want to do is if if you have one no
that connects to eight or even 100 nodes
then you don't want to make that one
note send the full data to all of those
because if that one node itself is also
connected to honored nodes it would get
hundred duplicates
yes whereas if it only gets an in then
it might get a hundred in duplicates but
it doesn't matter too much
yeah the depends of course on how big it
is compared to an inch and that's
slightly bigger it is definitely bigger
but it's also bigger to send both an
infant and setting an additional
infinity there's no round-trip maybe
maybe a consideration I don't know I
don't know this is the original design
in Bitcoin and it's actually used quite
a lot in the industry because you know
if you have a hundreds of them you save
the difference in them nine times 99 so
it is definitely a benefit
I don't see why Josh why you see such a
big difference in wallet developers
experience did you had two major things
one was that the you said the proof
would be easy to support and and once
they decided to but they didn't have to
and the other was that you see an
advantage of the service that miners can
provide with the ESPE replacement the
second point I agree with that and I
think that should be done
I think it's an element of the of that
proposal that that's just a good idea
and I I don't think I don't I don't see
how you can be so sure that implementing
the proof so it's going to be easier
that seems to me like it's not going to
be easier for the SI if they wallet as I
said before I think all things
considered it's let's just say it's
about equal I like to point out a couple
things so first of all I think that we
should actually maybe not talk too much
about double spending transactions I
mean that up like a transaction is being
double spent as a result of being an
input being double spend right and I
think you should focus on this like
actually that was spending inputs this
is what what's happening but like it's
the data transactions now it's mainly
because it's like a atomic set of inputs
being that's been like but actually what
happens is the input and the other thing
is that on the on the spam case that
actually got me thinking and I think I
touched this area a couple times when I
was thinking about this like the that
whether double spend relay or whether
it's a transaction relay or a proof
relay in either case
it strongly depends on the the other
part that you brought up Tom that is Tom
Harding I mean and that is like what is
a super Senate or whether we have a
Super Stallion transaction and whether
they actually I know the member or not
because that depends on like the the
propagation of the proof or the
propagation of the relay it depends a
lot on the the rules we make for
actually accepting into the mantle so it
seems to me that you cannot even
separate these two cleanly so to just
address the point the main reason that I
feel like it's slightly more
permissionless is the treatment of the
non priority transactions and still
being able to provide proofs for those
transactions to give flexibility to
people that want to create more complex
transaction types the wallet integration
issue is a very minor one and honestly I
don't think there's a huge difference I
think it's a slight difference and I'm
still very cautious about the idea of
replacement transactions I'm not
completely sold that replacement
transactions are the correct way other
than just notifying that there is two
transactions that are happening a
certain way with transaction relays we
can relay that transaction but if it's
based off of the existing mempool rules
then a lot of nodes are not going to see
both the standard and the non priority
transaction relayed because the non
priority transactions by default are not
generally relayed so it creates this
slight gap that the proof fills in a
unique way because now we can provide
the proofs on those non priority
transactions and still not worry about
the high bandwidth thresholds that would
happen because those non priority
transaction may have extremely extensive
scripts or do something slightly
different okay so I think I get it
you're saying this is the argument that
in the with a proof system there this
opens up the possibility that
nonstandard can transactions can be
freely relayed things that are currently
non-standard they can choose to relay
them on their own merit so if I'm sure
besides that oh well this isn't a
standard transaction but I think that
this is reasonable enough that I am
going to relay it the
proofs allow for that flexibility for
the eat those types I don't exactly see
how the proofs allow that and also the
reasons why that's not done don't have
anything to do with have no more to do
with redouble spending or zeroconf than
or then relaying standard transactions
the reasons like I I think the reason we
don't relay one megabyte non-standard
transactions is because nobody's really
worked on what happens when you have a
mix of lots of 250 byte transactions and
bundt also a lot of mega byte
transactions I agree but under maybe
maybe it works fine but I say they are
allowed to try and if we're not going to
free lay the non-priority transaction
then there's nodes that are not going to
see both they're only going to see the
standard transaction they're gonna have
no evidence that this double spend
actually occurred until a block possibly
lands that has this non priority
transaction in it since it is not going
to relay both with the proof we can
reliably prove that this non-priority
transaction actually had a conflict and
actually relay that proof without
worrying about the burden of the non
priority transaction being super large
well but everybody's going to have the
proof generation so they have to parse
through it before they create the proof
so they also answer the final caveat
though which as Tom Harting says it's
interesting because it's it's the devil
we don't know is if we relay the double
spend proofs right and perhaps we don't
because we're worried about spam right
where is that exact line gonna fall
where we're relaying non-priority double
spend proofs and how much spam coming
this is where I like omni's thought
process on this is that it's about a
double spent input so if I only have all
I need is to provide one proof that I
saw two of that input I don't care if
there was 42 of that input I need one
proof that I saw it twice and that's all
I need and the bandwidth requirements
are extremely low so I definitely like
his thought process there where it's
really about the input being double
spent it's not about the fact that there
was two double spend transit
factions is that two transactions shared
an input so I don't know whether my last
comment could recursive L ask a question
yes sir right but I just wanted to
actually wanna attack on here but like
just what you said like the input right
but you have to make sure that like what
Tom's Anna said that there is this Pam
risk isn't thanks exactly baited because
there is now we have a very cheap
transaction and that creates a double
span right so this is whatever I think
that we have to make sure that that
these double spend proves I'm not cheap
to generate because we have some set of
transactions now that that are too cheap
like we exhausted this debate and to
follow up on the original question of
does it hurt
permission with permissionless
innovation and i think we kind of came
to consensus here
it does help permissionless innovation I
think double spend proves help
permissionless innovation because we
will always see weird things coming up
that we haven't seen yet and you know
the changing of policies the ideas of
what kind of transactions are standard
will most likely change over the next
couple of years as more people more
businesses and to this space and that
should be allowed where double spend
proofs essentially just don't don't mind
because it's just about the inputs that
gets double spends that's it I'm against
innovation and don't want anybody new
coming into the space
I guess that wraps it up oh sure
thank you guys