04:15:46 Delta 8 distillate for sale, XMR accepted: https://moneromarket.io/listing/3e43b22f-4830-45f3-9a0f-3f9c9813a8cc 06:46:07 I have a question. Does Monerod not constantly exchange i2p nodes? I notice that the number of such notes increases dramatically at 00 minutes 12:15:08 in the cli wallet is there a way to directly save a signed transaction to file so that it can be submitted later? 12:18:48 it seems to be possible to use a view only wallet to create an unsigned tx saved to file and then use a wallet with the spendkey to sign it but there doesn't seem to be a way to directly save a signed tx? 13:10:46 "Delta 8 distillate for sale, XMR..." <- THC is illegal in most countries. 13:10:46 In case you forgot, I remind you that it's against the Monero Community Guidelines to post or promote illegal content. 13:17:12 Doesn't matter if it's not illegal where he's from 13:17:39 People sell gun build kits on moneromarket, obviously not legal everywhere but that doesn't mean they can't offer them 13:53:57 maybe the CCS with the rust node could first implement the whole network stack and dandelion++ instead of building the whole node ... 14:19:01 starting the wallet with "--do-not-relay" seems to do what i want 14:19:14 hello everybody, i havent used monero since 2019 and im looking to import 2 old wallets, i used the macOS gui wallet back then and have walley.key files for each wallet along with a wallet file. 14:19:29 i have the seed for one of the wallets, easy to recover. 14:20:06 however when i try to import using the linux gui walet, i have to enter the public address and more 14:20:20 sorry, when i try to import using the key option 14:20:57 nm nm, user error 14:20:59 sorry 15:09:02 atomfried[m]: wouldn't dandelion++ require a functional node? 15:56:32 Boog900 has closed their CCS proposal without comment plus deleted their Reddit post and also user: https://www.reddit.com/r/Monero/comments/zzd19g/ccs_proposal_rust_monero_node/ 16:15:55 "atomfried: wouldn't dandelion..." <- i dont actually know, but isnt dandelion++ just the algorithm which decides how information is spread accross the network? 16:15:55 i dont think that needs all other stuff, but i could be wrong. 16:15:55 sure in the end it will be transactions which are broadcasted, but if a piece of software can broadcast anything with dandelion++, it can surely also broadcast transactions in that manner 16:16:32 it's how transactions are propagated 16:20:45 i don't think dandelion++ can easily be implemented as some isolated piece of code that can be later reused but maybe I'm wrong here 16:22:56 Right now it's pretty inter-twined with the rest of the code. Maybe if you started a daemon from scratch you could implement it as an abstract class 16:23:16 and then the actual transaction passing-on subclassed from that 16:23:34 right but that was also require you to know the daemon design first 16:23:57 Put it under the pillow, sleep over it, done. 16:25:25 Just to avoid misunderstandings: With my "hard no" comment on GitLab I spoke out against that particular proposal, not the person making it. 16:26:44 You could do many sensible things towards rusty Monero. Why not start with a good feasibility study? I think a solid CCS for that would have good changes to get financed. 16:27:02 *chances 16:27:14 And could be very interesting. 16:32:48 Sorry I should have commented, but I closed it because it was a bit ambitious and a couple comments were (rightly) a bit harsh so I thought I would save time and just close the proposal now, I deleted my reddit post for obvious reasons but my account is still active, I didn't delete it. 16:37:52 Can Rust code be called easily from C++ so more-or-less isolated current monerod code can be implemented in a Rust-fork incrementally? 16:38:03 good to hear! 16:39:58 First instinct would say no, not easily, especially given the less-than-ideal current structure of the code 16:40:21 But, again, that would be an interesting question to try to answer with a feasability study ... 17:22:58 I also commented in -community, but to summarize here: 17:22:58 I disagree with sech1, who I do, of course, respect. I'd guess a PoC, which is using P2P to exist on the latest HF, would be a few months of effort. It'd suck. It'd also exist. 17:22:58 With the existing amount of code out there, and my own understanding of it, I'd imagine a year as feasible to get everything up *as a node*, albeit poorly. 17:22:58 My issue with this proposal is an overall lack of documentation. I think clarity needs to be set on individual components, I'd hope for a better overall plan than just "node in Rust" (considering styles a la Erigon), before finally being broken down into much smaller segments. 17:23:25 I'd also say the current XMR codebase is filled with garbage and a pure LoC on it isn't a sane comparison. 17:26:01 "P2P to exist on the latest HF" means you have to implement all previous hardforks too, to be able to sync from scratch 17:26:08 which is a massive task 17:26:43 unless you do shortcuts with hardcoded block hashes up to the latest HF 17:29:28 kayabanerve[m] I've been working on medium/big/huge C++ projects since 2006, and I know how easy it is to underestimate the work. Once you actually start working on something big, it's suddenly one thing piling up on top of another which you never expected when you estimated 17:29:39 *working professionally 17:30:22 some PoC that barely works with a ton of hacks under the hood - sure, one programmer can do it in 9 months 17:30:30 but is it what's really needed? 17:31:49 LMDB, for example - just take it as is and make a Rust wrapper? Or rewrite in Rust? Same for Cryptonote's crypto math functions, same for networking layer. Rewriting just these is a huge task for each of them. 17:33:20 and if it's just Rust wrappers around all the base layer code, what's the point of Rust then? 17:34:35 Don't forget that nodes not only talk to themselves but have to serve wallets. Implementing the whole RPC interface with full compatibility alone is a big task. 17:35:34 sech1: I was thinking assume valid given a hash and just populate outs, yeah 17:35:54 And that still isn't complete as you need to be able to spend old TXs. I had to deal with that recently... 17:36:50 As for work experience and underestimating, yes, I totally hear you. I was basing this on spending 3 months on my current Monero work and having built a node before. 17:37:51 You can write P2P code in a few hundred lines. Is it garbage? Yes. Is it functional? Yes. Can you probably hook up to XMR's P2P lib, with no where near the same level of tuning, in a few hundred lines? Eh, maybe 1 or 2k I'd guess. I do have to caveat I have yet to look at Monero's P2P layer. 17:38:55 My premise was, even if it was 1-2k lines which is a minimal variant, that's not necessarily a hack. That's just a building block. So I wouldn't say with a ton of hacks, I would say as a minimal product. I'd hope after a year, the true 'hacks' are gone. 17:39:05 Also, the main selling point of Rust is memory and thread safety at compile time, right? I think it will be more productive to actively integrate C/C++ memory/thread runtime tools into CI 17:39:13 like memory/leak/thread sanitizer 17:39:26 yes, it's runtime, but it's almost plug and play for C/C++ 17:39:52 and add more tests with sanitizers to our unit tests 17:40:09 As for C++ code... I wouldn't support pure-Rust from the start. I'd point to wrapping LMDB/RocksDB (hides from hyc) and then in the future moving to sled. I'd care more about DB diversity than moving to a Rust DB tbh. 17:40:38 I'd also be fine grabbing C++ RandomX to start, if the current Rust rewrite isn't there. Then moving to the Rust rewrite. 17:41:19 When I did monero-serai, it initially hooked into C CLSAG verification. I knew it'd work. Then, I wrote a Rust version, labelling it as unsafe. Eventually, I traced through a variety of functions to ensure my understanding of behavior, corrected differences, and moved over. 17:41:29 If we really implement a second node in whatever language I think we should make damned sure we fully grab the chance to re-architect to the max, based on experiences made 17:41:41 Part of the benefit isn't just the language. It's client diversity. It helps to identify previously undocumented protocol rules. 17:42:13 Thus, no attempt to rush through it as fast as possible, but with a very thorough first phase of discussions and architecting 17:42:27 yeah, rewrite that produces new codebase AND detailed specs is what's really desired 17:42:28 For example, we don't have input sorting high-to-low nor low-to-high. It's std::sort. Sure, that's internally h-t-l or l-t-h, but it's also us picking C++ over some actual specification. I believe Rust default sorts the other way. 17:42:56 The main issue with specs is that by the time anyone struggles through the code, they no longer want to touch it anymore, and they don't write specs :/ 17:46:08 Yeah, the "good and complete spec" stands right next to the "good and complete user manuals" on the bookshelf :) 17:49:24 So what we actually want is: 1) Specifications 2) Proper planning 3) Not just doing bitcoind/go-bitcoin/whatever yet actually looking to projects like Erigon 4) Client diversity 17:49:38 It's just when we ask what language we want the client to be in, we love Rust :p 17:49:48 I can also propose PASCAL though if it'd be less controversial /s 17:50:22 Eh. That's a bit improperly ordered. Specs, Client diversity, planning, intelligent design. I'd say that for order 17:53:45 But as sech1 said, you would have to weight that against all the tons of good things we could do with such massive amounts of work and donations, based on the current codebase 17:54:05 ... possibly? I lean towards no? 17:54:24 And frankly, we don't find devs for a lot of things that are waiting, where would all those Rust Monero devs suddenly spring up? 17:54:38 I always consider this idea a separate project and that idea a bit of a fallacy. 17:54:59 I'm not trying to say I couldn't do anything for the existing codebase. I'm saying if I tried to replace our Ed25519 code with dalek, an industry gold standard, I'd get run out. 17:55:41 New projects allow full flexibility with the ability to make decisions outside of the entire community as a committee. That shouldn't be unappreciated. 17:56:38 Also, there are plenty of Rust devs in the community. h4shed, lederstrumpf, TheCharlatan, zkao, whoever's working on COMIT... 17:56:54 jeffro256, this guy who just made a CCS proposal, myself... 17:57:17 *guy intended as a gender-neutral term 17:57:38 ... also h4sh3d, not h4shed. 17:58:21 "that idea a bit of a fallacy" I don't understand. Which idea, and how a fallacy? 17:58:35 I have no interest in contributing to the current codebase because: 1) Lack of time 2) Lack of returned value (circling back to lack of time) 3) It's a monstrosity 4) It's in C++ 17:58:57 If the same amount of work was directed to the current codebase, it'd be great. Sure, if you could direct that much work. You can't. 18:00:01 I can justify my Rust code because I have a project in Rust which relies on this. I can't justify C++ contributions the same way. I'd also highlight integration accessibility as yet another reason to do such work. 18:01:04 I believe there are already complaints about wallet2 not playing well with API. I believe those calls are for a C wrapper, yet I can point to the hell which is statically linking wallet2. Even if it cleanly built to a C API, I'd still prefer a Rust lib if I was coming from Rust (though sure, a Rust crate around the C API would be tolerable). 18:03:16 Er ... you are aware that I lead a work group that tries to fully supersede wallet2 with new code? Just not in Rust, but in C++. 18:03:57 As for the current codebase being a monstrosity... I don't what it is and I understand why it is what it is. Most of my experience is with the cryptography and wallet side of things (and TX flow). I've stayed away from the P2P layer and generally don't bother with the blockchain. There's an insane (to anyone used to language's with a package manager) lack of vendoring. We frequently reuse code instead of creating modular functions. 18:03:57 wallet2 throws around tens of arguments with no consideration for logical thought nor runtime safety achieved at compile time. All of these make me feel overwhelmed when tackling the current codebase. And then personally, even ignoring C++'s memory safety issues, I haven't worked with it in years and can't claim to be current with it. I find it missing several basic functions for dev UX though. 18:04:24 I do know of that org/repo, hence why I knew of the C API discussions :p I didn't realize/rememeber you led it, sorry. 18:05:33 Well, so far there wasn't much proper discussion about writing it in C, or providing a pure C interface, because nobody so far except the proposer thinks it's feasible, given our constraints 18:06:08 I thought there was a call for a C API and it was shot down to the fact anyone already could have, already no one has, and it's an extra outside of current bandwidth 18:06:34 So not necessarily a lack of proper discussion, yet mainly a lack of bandwidth, which I'm not here to dismiss. 18:06:55 Not trying to be pedantic, trying to ack how it was a feature request 18:07:51 No problem. And no danger whatsoever - code does not care what people wish for, or what people tell and write. Only actually writing code helps in any way. 18:09:23 That I can agree with :) My main comment is people wanting to work on/contribute in Rust cannot be dismissed on the premise "they'd do just as much good contributing to the C++". While yes, they may (assuming equivalent C++ knowledge), they may not want to work in C++. There's also other benefits to client diversity and a better path for non-C++ integrations. 18:11:46 Donations, sure, possibly, until you reach an org using Rust who wants quality Rust tooling/an idealist who wants client diversity and/or memory safety/some rust fetishist :p 18:14:40 My very unprofessional opinion is that a better option might be to make transitioning to Rust a long term goal. As pointed out earlier, the current codebase could use some restructuring. The investment may be justified for the better long term safety, better accessibility, and better modularity/extensibility provided by a rewrite in Rust. 18:15:36 As the old hand that I am I worry a bit about the "grass is always greener on the other side" effect. 18:16:14 While I can argue for Rust FFI internal to the Monero codebase as viable, which is almost never, I cannot argue for ever commenting about the abandonment of the current C++. 18:16:14 A shiny, sexy "new daemon in Rust" project would probably suck dev capacity out of the C++ programming side, which would get strained even more than it actually already is 18:16:30 if we are not very careful 18:16:38 rbrunner: One of the benefits of it being separate is the ability to move fast and get ignored faster. 18:16:56 I don't believe anyone uses monero-serai and if no one ever does, it fades away. If people appreciate it... 18:17:04 as a side note, I do truly love its wallet handling <3 18:18:17 How would you manage a really separate Monero Rust daemon project? How would you finance that separately? 18:19:54 Seraphis implementation and a daemon in Rust fighting for scarce CCS money ... not the best of possible worlds, right? 18:21:00 https://docs.rs/monero-serai/0.1.2-alpha/monero_serai/wallet/struct.Scanner.html You can scan an individual transaction, and get it without global indexing, or scan an entire block and get it with global indexing. All returned outputs are always TImelocked<>, forcing you to ignore the timelock or accept within some range :D The global indexing is a privacy thing (grabbing an individual TX's index), the timelock is a safety thing. 18:21:16 Maybe anything "rusty" should take Seraphis as a starting point anyway, in a sensible longterm planning 18:21:22 *Some of those types aren't clickable for documentation. I'm immediately unsure why and will have to update that. 18:22:33 Someone has to sit down and do plans, I guess? For monero-serai, I just got to work... that's not an issue if you're one dev (especially when you solely do a TX library, not an entire daemon). I'd hate to suggest a project of this scope as one dev/without planning. 18:23:07 We had the Erigon dude, who effectively did have planning, yet went against the flow (causing community criticism, including from myself) and I don't believe is around anymore :/ 18:23:23 I don't think we chased him out, though sure, we could've been friendlier. I think it's a lot of work and they moved on. 18:24:04 Have some pointers? I hear "Eridon" for the very first time today, and wonder a bit about that fact 18:24:15 er, "Erigon" as it seems 18:24:16 As for finances... I can't comment there 😅 I worked for 3y on my own project (never taking finances) and am doing the same with Serai. I am paying some developers on Serai, yet out of pocket from former bug bounties. 18:26:53 Erigon was in the news recently as Paradigm wrote their own ETH node, based on the same design principles, and the dev got into a feud about that 18:27:04 (taking the ideas yet not giving back the code, whole thing, many opinions to have) 18:27:25 But if you pull up Paradigm's posts on why, it should be a decent shill piece on the design :p There's also Erigon docs somewhere... 18:28:08 https://github.com/ledgerwatch/erigon#key-features 18:28:29 I believe it's mainly about staging data inwards and highly efficient DB management. 18:29:53 https://www.paradigm.xyz/2022/12/reth for Paradigm's commentary, which is decent on both logical design, codebase design, and the scope the amount of work it is, is 22:20:21 * anarkiocrypto[m] uploaded an image: (25KiB) < https://libera.ems.host/_matrix/media/v3/download/halogen.city/9192de53bcae61a7de5ad1f4f1499b4ec7ab9604/monero-happy-new-year-2023-400x300.png > 22:20:25 Source: https://monero.graphics/all/monero-happy-new-year-2023/ 22:22:04 🎉 22:41:59 See ya folks 22:42:02 Happy new year 23:17:58 anarkiocrypto[m]: happy new year to you, too