Closed Rucknium closed 1 month ago
Logs
_< m-relay >__ <rucknium:monero.social> Meeting time! https://github.com/monero-project/meta/issues/1068
_< m-relay >__ <rucknium:monero.social> 1) Greetings
_< m-relay >__ <vtnerd:monero.social> Hi
_< m-relay >__ <one-horse-wagon:monero.social> Hello.
_< m-relay >__ <boog900:monero.social> Hi
_< m-relay >__ <jberman:monero.social> waves
< rbrunner > Hello
_< m-relay >__ <kayabanerve:matrix.org> 👋
_< m-relay >__ <rucknium:monero.social> 2) Updates. What is everyone working on?
_< m-relay >__ <kayabanerve:matrix.org> Nothing of note on my end.
_< m-relay >__ <vtnerd:monero.social> Hackerone issues
_< m-relay >__ <jeffro256:monero.social> Hpwdy
_< m-relay >__ <rucknium:monero.social> me: I updated https://moneroresearch.info to use the latest version of WIKINDX. The Quick Search is improved. Instead of "OR" it now uses "AND" between words. So you get much more relevant results with multiple keyword searches. I will be on MoneroTalk at 22:30 UTC today: https://xcancel.com/MoneroTalk/status/1830994649730699491 , using a hired voice. I have been working on final <clipped mes
_< m-relay >__ <rucknium:monero.social> results for combining black marble attacks with the Dulmage-Mendelsohn decomposition.
_< m-relay >__ <jeffro256:monero.social> me: collecting Carrot audit proposals, hopefully should be done by next MLR meeting
_< m-relay >__ <jberman:monero.social> continuing fcmp++, working on trimming the tree on reorg/pop blocks
_< m-relay >__ <rucknium:monero.social> 3) Stress testing monerod. https://github.com/monero-project/monero/issues/9348
_< m-relay >__ <rucknium:monero.social> I have merged 0xfffc 's PR for dynamic block size sync: https://github.com/spackle-xmr/monero/pull/30
_< m-relay >__ <rucknium:monero.social> I have started to spam stressnet again.
_< m-relay >__ <jeffro256:monero.social> How's it going so far?
_< m-relay >__ <rucknium:monero.social> plowsof wrote a bounty to enable fast sync for testnet (this would enable it on stressnet since stressnet is a testnet fork): https://bounties.monero.social/posts/149/0-450m-add-fast-blockchain-sync-to-testnet
_< m-relay >__ <rucknium:monero.social> Currently the bounty is at 0.45 XMR
_< m-relay >__ <0xfffc:monero.social> Hi everyone. Apologies for being absent. Right now, I am working on an issue on stressnet side. But I will keep an eye on this chat too.
_< m-relay >__ <0xfffc:monero.social> My work past week was mostly on finishing dynamic bss and dynamic span. (L
_< m-relay >__ <rucknium:monero.social> jeffro256: Initial testing of dynamic block size sync has been good. But we haven't subjected it to big blocks yet.
_< m-relay >__ <rucknium:monero.social> Reminder that this stressnet will stop being "supported" in about a month. So it is a good time to test your code that fixes bottlenecks.
_< m-relay >__ <rucknium:monero.social> 4) Research Pre-Seraphis Full-Chain Membership Proofs. https://www.getmonero.org/2024/04/27/fcmps.html
_< m-relay >__ <rucknium:monero.social> kayabanerve: Do you have an update on the potential Veridise followup work?
_< m-relay >__ <kayabanerve:matrix.org> I believe we're planning to get on a call to organize within the next week or so.
_< m-relay >__ <rucknium:monero.social> Anything more on FCMP++?
_< m-relay >__ <jberman:monero.social> not exactly mrl, but tobtoht proposed considering dropping windows 32-bit support since windows 11 requires 64-bit (only >18 year old CPU's running windows 10 would be affected), and the 32-bit windows build will be a bit of a pain to get working. Seems reasonable to me but worth bringing up to a wider group
_< m-relay >__ <kayabanerve:matrix.org> the devs yearn for monero-dev meetings
< rbrunner > shrug :)
_< m-relay >__ <rucknium:monero.social> kayabanerve: Yeah lol
_< m-relay >__ <rucknium:monero.social> 5) Change how transactions are broadcasted to significantly reduce P2P bandwidth usage. https://github.com/monero-project/monero/issues/9334
_< m-relay >__ <rucknium:monero.social> vtnerd: Do you have an opinion about changing the fluff-phase tx queue timer to exponential distribution instead of Poisson?
_< m-relay >__ <kayabanerve:matrix.org> I see we're moving on but I'll note I support monero-dev meetings (distinct from NWLB) and have no objections to dropping first-party support from problematic archaic targets.
_< m-relay >__ <vtnerd:monero.social> It needs to be exponential, I don't have any other comments than that really
_< m-relay >__ <jeffro256:monero.social> I'd also tentatively say I support dropping official support for 32-bit windows unless it gets brought to our attention that more than a handful of people are actually using it
_< m-relay >__ <rucknium:monero.social> Maybe we are moving toward loose consensus to change it from Poisson to exponential. It could be a PR and discussed further in the PR
_< m-relay >__ <jeffro256:monero.social> I'd say we should converge on whatever the reviewed literature says , which is exponential , no?
_< m-relay >__ <vtnerd:monero.social> There is a pr
_< m-relay >__ <rucknium:monero.social> The Dandelion++ paper seemed to assume that the fluff phase has exponential timers.
_< m-relay >__ <rucknium:monero.social> I thought the PR only affected the embargo timeout?
_< m-relay >__ <vtnerd:monero.social> https://github.com/monero-project/monero/pull/9295
_< m-relay >__ <vtnerd:monero.social> Oh right, I thought I changed both in that pr
_< m-relay >__ <rucknium:monero.social> Here's what I said about the D++ paper: https://github.com/monero-project/monero/pull/9295#issuecomment-2260998091
_< m-relay >__ <vtnerd:monero.social> I'll just update that pr then
_< m-relay >__ <rucknium:monero.social> > I have been looking at whether the fluff-phase timer should also be changed from Poisson to exponential. The Dandelion++ paper doesn't explicitly say that the fluff timers should be exponential, but it strongly hints that way IMHO. Algorithm 5 "Dandelion++ Spreading at node v" in Fanti et al. (2018) ends with Diffusion(X ,v, H). The paper says "Bitcoin Core, the most popular Bit<clipped mes
_< m-relay >__ <rucknium:monero.social> coin implementation, adopted a protocol called diffusion, where each node spreads transactions with independent, exponential delays to its neighbors on the P2P graph." Fanti & Viswanath have an earlier paper about the privacy properties of bitcoin's transaction broadcast system. It describes diffusion: "In diffusion spreading, each source or relay node transmits the message to eac<clipped mes
_< m-relay >__ <rucknium:monero.social> h of its uninfected neighbors with an independent, exponential delay of rate λ. We assume a continuous-time system, in which a node starts the exponential clocks as soon as it receives (or creates) a message."
_< m-relay >__ <one-horse-wagon:monero.social> It is estimated that as of 2024, only 4.3% of Windows users are running a 32 bit version and that number is shrinking every year.
_< m-relay >__ <rucknium:monero.social> IIRC in PR #9295, the function named "exponential" takes the floor of the drawn values, which actually creates a geometric distribution. Probably there should be a true exponential distribution and the exp-turned-geometric distribution can be named something special for use when a discrete number is needed.
_< m-relay >__ <rucknium:monero.social> Do we want to discuss the ten block lock now? Put it on next agenda's meeting? Neither?
_< m-relay >__ <rucknium:monero.social> Always a fun one
_< m-relay >__ <rucknium:monero.social> Aaron Feickert and isthmus wrote a report on it: https://github.com/AaronFeickert/pup-monero-lock/releases/tag/final
_< m-relay >__ <rucknium:monero.social> AFAIK the new contributions are in Section 4 with the FCMP++ discussion
_< m-relay >__ <kayabanerve:matrix.org> I've prior stated my disagreement with the premise, and I believe there was a general agreement we needed a proper quantitative analysis of the odds of various reorg depths/natural likelihood/etc.
_< m-relay >__ <rucknium:monero.social> A quantitative analysis is on my CCS research agenda.
_< m-relay >__ <rucknium:monero.social> Do we think that block propagation will change significantly when FCMP++ is activated on mainnet?
_< m-relay >__ <boog900:monero.social> We use fluffy blocks, so probably not
_< m-relay >__ <rucknium:monero.social> Does it make sense to investigate changing it with the FCMP++ hard fork, or should we wait until we see the network behavior, then possibly change it in a future hard fork?
< rbrunner > Did stressnet unearth any block propagation problems as blocks became bigger? I don't think so, but I am not sure
_< m-relay >__ <kayabanerve:matrix.org> I've called for the FCMP++ hardfork being monolithic its set of changes.
_< m-relay >__ <one-horse-wagon:monero.social> There's going to be a huge change with FCMP++ and I would suggest waiting until everything is settled in before piling on more changes.
_< m-relay >__ <rucknium:monero.social> We figured out that some nodes rejected valid blocks since they didn't have the txs.
_< m-relay >__ <kayabanerve:matrix.org> I want to deprecate/prune RPCs, ship Carrot, etc, because if we're already forcing users to update for XYZ, adding A isn't much more (but forcing them to change twice, six months apart, is).
_< m-relay >__ <rucknium:monero.social> Then the nodes marked the blocks as permanently invalid. jeffro256 made a PR to stop the permanent invalidity of the blocks
_< m-relay >__ <kayabanerve:matrix.org> So if we're changing the n-block lock, I'd call for it at the hard fork.
_< m-relay >__ <kayabanerve:matrix.org> I'll also reiterate the n-block lock should be the depth reorganizations are infeasible, not unlikely, but I've rung that bell more than enough.
_< m-relay >__ <jeffro256:monero.social> I agree with one-horse-wagon: we should discuss after smoothing out details of the FCMP upgrade. Unlike kayaba, I think it can be reduced now with FCMPs without such a permanate loss to privacy under certain circumstances which made the 10 block lock privacy impact much more relevant, but we definitely shouldnt try from the get go
< rbrunner > The pessimist in me whispers that we will need a second hardfork to micro-adjust some things anyway that we did not yet get fully right with the original FCMP++ introduction ...
_< m-relay >__ <rucknium:monero.social> kayabanerve: The only way to do that is a rolling checkpoint like BCH has
_< m-relay >__ <rucknium:monero.social> If you do that, you add a liveness assumption to the network
_< m-relay >__ <rucknium:monero.social> Or to nodes I mean
_< m-relay >__ <kayabanerve:matrix.org> jeffro256: The private option is the depth reorgs are infeasible. To suggest we can reduce it is to disagree with my premise or to say reorgs aren't feasibly by an adversary at 9 blocks.
_< m-relay >__ <rucknium:monero.social> Since a node that has been shut down for a while can wake up to two blockchains because it never saw the Nth checkpoint block
_< m-relay >__ <kayabanerve:matrix.org> It's not about if a reorg actually happens. It's about the tree root selection being a fingerprint.
_< m-relay >__ <kayabanerve:matrix.org> Rucknium: If we assume you're not eclipsed, and no adversary has 51%, then the probability of a n-block reorg goes down with each additional block.
_< m-relay >__ <kayabanerve:matrix.org> An adversary with just 49% can only pull off any reorg with random chance.
_< m-relay >__ <kayabanerve:matrix.org> I'm calling for the n-block lock to have n be the soft finality depth, where we define soft finality as an adversary having infeasible likelihood of performing a reorg. This is generally done in practice with the hash power percentage of the top mining pool(s).
_< m-relay >__ <rucknium:monero.social> Allowing nodes to leave and re-enter the network was part of the bitcoin design in the white paper
_< m-relay >__ <kayabanerve:matrix.org> I'm not claiming it's hard finality, even though that can be a discussion for another day. I'm saying PoW coins for years have evaluated reorg risks for minority adversaries and recommended amounts of confirmations accordingly.
_< m-relay >__ <rucknium:monero.social> What's your infeasibility probability?
_< m-relay >__ <kayabanerve:matrix.org> (and also higher confirmations for situations of higher criticality, I'm not blind to that)
_< m-relay >__ <rucknium:monero.social> Those have usually been heuristics. Satoshi had the wrong minority attack formula in the white paper anyway
_< m-relay >__ <rucknium:monero.social> Recommendations are just risk management. Everyone has a different risk preference
_< m-relay >__ <kayabanerve:matrix.org> If you want to say they're heuristics and have me call them such, I'm fine doing so.
_< m-relay >__ <kayabanerve:matrix.org> I'd call for at least 1% odds by the largest mining pool.
_< m-relay >__ <kayabanerve:matrix.org> Specifically for the n-block lock.
_< m-relay >__ <rucknium:monero.social> Over what period of time? A year? And what is the resource of the adversary? Can it keep trying every block?
_< m-relay >__ <kayabanerve:matrix.org> I guess we'd have to define how long until we expect users to realize they've been so repurposed. I am scared to ask what the confirmation count needs to be if we say over a day though.
_< m-relay >__ <kayabanerve:matrix.org> I said > largest mining pool
_< m-relay >__ <kayabanerve:matrix.org> And if they have a finite amount of hash power for attempts, can't they only start an attempt occasionally? Having attempts in parallel would mean they have more hash power than assumed.
_< m-relay >__ <kayabanerve:matrix.org> Or we simplify to a singular attempt. I don't have all the answers here and I'm not trying to claim I do. I'm solely saying that even if a non-trivial adversary attempts a reorg, it should be agreed sufficiently unlikely at some confirmation depth. I believe that depth should be lock depth.
_< m-relay >__ <kayabanerve:matrix.org> (not just unlikely naturally, yet unlikely by an active attacker so infeasible)
_< m-relay >__ <kayabanerve:matrix.org> If we want to reduce the lock depth, I'd call to reduce the depth at which we consider reorgs infeasible. I wouldn't call to alternatively define the lock depth.
_< m-relay >__ <rucknium:monero.social> I have a question about this sentence in the paper: "[In Zcash] There are few network consensus rules governing the age of this anchor; it must be at least one and at most 100 blocks old."
_< m-relay >__ <kayabanerve:matrix.org> If I can pay 10k over a year to invalidate TXs once a month, some wallets will default to more stable tree roots and we will end up with fingerprints though.
_< m-relay >__ <rucknium:monero.social> Would FCMP++ have a maximum age of an anchor? If it doesn't any tx that stays in the txpool longer than the max anchor depth would be permanently invalid, right?
_< m-relay >__ <kayabanerve:matrix.org> No, doing so would invalidate TXs as you say.
_< m-relay >__ <rucknium:monero.social> Unless there are objections I will put the 10 block lock on the agenda for next meeting. It has been about a year since it was on the agenda. Right on time for its annual appearance.
_< m-relay >__ <rucknium:monero.social> We can end the meeting here.
< isthmus > I don't think Zcash has any consensus rules regarding the anchor depth.
< isthmus > The 100 blocks thing is just a limit on what parameters the wallet uses
< isthmus > It defaults to 3 but allows the user to specify 1 to 100
< isthmus > And of course it would be trivial to fork the wallet and change that range to 200 or 1000 or whatever
_< m-relay >__ <rucknium:monero.social> Thanks, isthmus
< dEBRUYNE > Having had experience in the past with network upgrades, the ecosystem will not be able to cope with successive network upgrqdes in a short time-spqn
< dEBRUYNE > Even when Monero was much smaller it was already difficult to get everyone to upgrade properly and on time
Location: Libera.chat, #monero-research-lab | Matrix
Join the Monero Matrix server if you don't already have a Matrix account.
Time: 17:00 UTC Check in your timezone
Main discussion topics:
Greetings
Updates. What is everyone working on?
Stress testing
monerod
Research Pre-Seraphis Full-Chain Membership Proofs.
Change how transactions are broadcasted to significantly reduce P2P bandwidth usage.
Any other business
Confirm next meeting agenda
Please comment on GitHub in advance of the meeting if you would like to propose an agenda item.
Logs will be posted here after the meeting.
Meeting chairperson: Rucknium
Previous meeting agenda/logs:
1063