-
jberman[m]
to be clear, my "yep" was to kayaba's explanation. every view tag is independent and is constructed on a per-output basis. even if 2 outputs have the same view tag, it doesn't yield any useful about the outputs, it's just random chance. a single wallet can create a view tag of any value between 0 and 255 for each output when constructing a tx (each view tag in the tx is independent), and a wallet still has to check every single view tag
-
jberman[m]
when scanning
-
nantuk[m]
Hi there! Does anyone know if there is any software that can scan every new block and tell me if there is any output (with amount) going to a list of subaddresses I provide (along with the primary address and view key related to them)?
-
nantuk[m]
Reading the docs, I see it can be done with wallet-cli (to create wallet file restoring from primary address and view key) and wallet-rpc (to open and close wallet and get txs). But as I want to automate this, I would need to have one wallet-rpc running for each primary address, and query all of them every minute. It don't think it will work with 1k addresses
-
ofrnxmr[m]
Perhaps monero-lws
-
ofrnxmr[m]
I havent played with it extensively, but it does scan multiple address and view key pairs.
-
ofrnxmr[m]
But its meant to be used with wallets. I imagine there to be some functionality to parse the data without a wallet
-
jberman[m]
It doesn't support subaddresses yet
-
nantuk[m]
Thanks, I'll take a look at it
-
jberman[m]
here's the current proposal to support subaddresses in monero-lws/light wallet servers in general; I think that would enable exactly what you're looking for:
monero-project/meta #647
-
rbrunner
Was there a large testnet reorg in the last few days?
-
rbrunner
With "large" meaning 1005 blocks or something similarly dramatic?
-
rbrunner
Or maybe a fork of testnet which one of my daemons chased down for that many blocks?
-
sech1
I synced testnet two days ago and I don't see any reorgs in the log
-
rbrunner
Hmmm, strange.
-
rbrunner
My situation: I have two machines where I claim that testnet is running identically, daemon just compiled from master just this morning, and synced to top of testnet without problems
-
rbrunner
I have a wallet that opens and refreshed without problems on one computer
-
rbrunner
On the other it balks and tells me it wants to do a reorg 1005 blocks deep which is larger than the allowed maximum
-
rbrunner
Currently out of ideas where the difference and/or the problem could be :)
-
rbrunner
I found a little more: Running daemon and monero-wallet-cli without any special options beside "--testnet" works
-
rbrunner
If I bind the daemon to the static public IP of the machine like so: monerod --testnet --rpc-bind-ip <ip number> --confirm-external-bind
-
rbrunner
And then instruct the wallet to use that like so: ./monero-wallet-cli --testnet --daemon-address <ip number>:28081
-
rbrunner
Then the wallet reacts with, probably expected: Warning: using an untrusted daemon at 80.254.179.107:28081
-
rbrunner
But also gives an unexpected error:
-
rbrunner
Error: refresh failed: refresh error: reorg exceeds maximum allowed depth, use 'set max-reorg-depth N' to allow it, reorg depth: 520. Blocks received: 0
-
moneromooo
Possibly there is a reorg, but a smaller one ? When using an untrusted daemon, the wallet quantizes its current height, so will request earlier blocks.
-
moneromooo
(so a daemon cannot tell a returning wallet from that info)
-
rbrunner
Not sure I understand what you mean. The wallet is currently synced to almost top of chain, the daemon follows the chain normally
-
rbrunner
The wallet misses only a few blocks now
-
rbrunner
Where would a reorg sneak in here?
-
sech1
I always add --trusted-daemon when I connect to my nodes
-
Stnby[m]
Hello, is Monero Wallet RPC thread safe? Or should the RPC calls be synchronous?
-
sech1
it should be thread safe
-
moneromooo
I mean that the wallet will pretend its height, when starting is something like H - H % 1024 or so.
-
moneromooo
So if it needs to reorg for, say, 5 blocks, it might end up asking for 1005 blocks.
-
rbrunner
Yeah, but why should that be suddenly a problem?
-
moneromooo
I think the wallet RPC is thread safe because it handles one connection at a time.
-
moneromooo
Because there might be a reorg.
-
Stnby[m]
But it's single threaded right?
-
moneromooo
Try "status" in the wallet. It might give you a block hash.
-
rbrunner
I narrowed down further: The external IP seems to play no role, simply telling the CLI the daemon is untrusted triggers my problem
-
rbrunner
like so: ./monero-wallet-cli --untrusted-daemon --testnet
-
moneromooo
Yes, "one connection at a time" implies that, for "interesting" threads.
-
Stnby[m]
I tried hitting the wallet rpc with multiple parallel requests and shit went wrong
-
moneromooo
OK, that's odd. Maybe someone made it handle several calls at once then. Pretty sure there's a comment in hte source saying "don't do that".
-
Stnby[m]
Then I decided to make it synchronous which seemed to behave better
-
rbrunner
Another wallet wants to go back 153 blocks now, and again tells that this is too much.
-
Siren[m]
Stnby[m]: Seems like a lot of rpc binding libs allow this to happen, we should probably place those mutexes in our lib to make it safe
-
rbrunner
A third one 898.
-
rbrunner
How could they all hit the same reorg problem?
-
moneromooo
Did you use them all at about the same time ?
-
rbrunner
Probably not, no
-
moneromooo
How probably ?
-
rbrunner
I check
-
moneromooo
Within a day or so of each other.
-
rbrunner
No. I guess that also the reason they all want to go back a different number of blocks.
-
rbrunner
Because their caches do stand at different heights now
-
rbrunner
One is almost at top, the other two different numbers of weeks back
-
moneromooo
The comment's still there about threads. Maybe the underlying code now does a listen/accept/handoff which would be unfortunate. I don't think it's super likely though. So maybe the problem is elsewhere...
-
moneromooo
Did you run these wallets off a temporarily branched chain (ie, when using --fixed-difficulty etc for testing) ?
-
rbrunner
No, and they still sync properly, I just have to leave out " --untrusted-daemon" for the CLI wallet ...
-
moneromooo
Did you keep the old caches ?
-
rbrunner
Probably could fish them out of some backup.
-
moneromooo
Then change "status" or other to print the height and hash of the top block they have. Compare with the chain.
-
moneromooo
If it's on the chain, it looks like a bug. If it's not on the chain, it looks like a reorg.
-
moneromooo
print_block in monerod remembers old orphans, usually.
-
rbrunner
I synced now one wallet to top, without " --untrusted-daemon ". Started again with " --untrusted-daemon ", and now it want to reorg 555 deep.
-
moneromooo
All my alt chains are 1 block long. Very nice...
-
moneromooo
Then it is almost certainly a bug.
-
rbrunner
Somebody around with current master compiled who could check running the CLI wallet with " --untrusted-daemon " with that, with any wallet?
-
rbrunner
I have done a lot of dumb things in the last 5 years of Monero, who knows :)
-
sech1
-
rbrunner
Ok, so it's not me.
-
sech1
It works perfectly fine with --trusted-daemon
-
rbrunner
Can somebody please inform the CEO?
-
rbrunner
Monero is broken :)
-
sech1
BTW I'm testing p2pool + testnet right now -
SChernykh/p2pool #153
-
moneromooo
If it's only a problem with untrusted nodes, it's not a problem :)
-
rbrunner
Lol
-
sech1
so I have the wallet and testnet node at hand
-
moneromooo
But still, I'll try to have a look.
-
moneromooo
Are you looking at it sech1 ?
-
alexanarcho[m]
Are there any devs in here that have experience with monero-javascript?
-
sech1
Reorg error? No, I have no idea what to look at.
-
moneromooo
OK, I will then.
-
sech1
Plus I have to go now
-
sech1
I'm testing p2pool during testnet fork
-
moneromooo
-
moneromooo
(tests not run yet, but I don't expect they'll fail (but then I never do))
-
rbrunner
Thanks, that was fast. Is this an old error then, nothing to do with recent changes?
-
moneromooo
Since 2020 I think.
-
moneromooo
So not too recent, but not too old.
-
rbrunner
I wonder why I only hit that today. Before I was probably using an early 0.17 version.
-
moneromooo
Maybe because you usually use your local node ?
-
moneromooo
You could bisect I guess, maybe something else "hid" this before.
-
rbrunner
I caused that "untrusted" situation on my Monerotech.info webwallet by using the external IP maybe starting 1 year ago.
-
rbrunner
Anyway, I will try the fix.
-
sech1
Already fixed? Nice
-
rbrunner
Works.
-
moneromooo
Looks like it already broke right after the patch in 2020.
-
moneromooo
That might mean close to nobody uses untrusted nodes :)
-
moneromooo
Or, more likely, people mindlessly add --trusted-node for those.
-
moneromooo
Or just stop using monero.
-
sech1
I admit I do this:P
-
moneromooo
Stop using monero ? :D
-
sech1
Add --trusted-node. But I run my own nodes
-
plowsof[m]
in wownero cli it makes you pass "--this-is-a-malicious-spyware-node" before adding any remote node
-
moneromooo
Sounds like something I'd add.
-
moneromooo
UkoeHB: do you have a prefered wording for "multisig is disabled, enable with set x=1" ?
-
alt-web
i'm working on a monero node running on kicksecure (
kicksecure.com) on top of a debian 11 vps... you guys have a great day
-
AmeyaDeshmukh[m]
Hey! Want to start contributing to/working on projects in the space. I'm a CS sophomore in India good with C, C++ and Rust. Do tell me where and how I can start!
-
alt-web
very possible... i am a web designer, system admin, highly skilled in html/css, bash scripting, and gimp
-
moneromooo
You can look around at what floats your boat. There's monero, the GUI, mymonero, monero-lws, haveno, and more.
-
moneromooo
C/C++ means monero I guess.
-
moneromooo
If you want to hack on monero itself, it's easy: biuld the source, use it, find something that's a bit broken, not good enough, etc, that annoys you, and fix/improve it.
-
moneromooo
I suggest minimal changes (ie, no reformatting or changes just because you like it better the new way). Separate patches by self contained change if possible.
-
AmeyaDeshmukh[m]
Nice! Will do that. Any other projects using a C/C++ codebase other than Monero core?
-
moneromooo
There's a CONTRIBUTING.md file with that kind of guidelines.
-
moneromooo
The GUI has some C++, but it's mostly boilerplate IIRC. The meat is JS.
-
moneromooo
monero-lws is also C++.
-
AmeyaDeshmukh[m]
Yep got it. Hack around and find out and if I get a solution worth implementing at scale with proper security (with no reformatting or major changes), submit a PR?
-
moneromooo
Right.
-
AmeyaDeshmukh[m]
Great, that works very well. Thank you. 🙏
-
moneromooo
Major changes is fine once you're comfortable with the code. It's more like... no unnecessary changes.
-
moneromooo
Especially the "my editor reformatted the whole file" nightmare :D
-
AmeyaDeshmukh[m]
Will take some time to get comfortable with the code itself. Still in the learning process, but enjoying every bit due to the community. Probably the first time I've seen non gatekept research unlike universities etc where you require credentials
-
moneromooo
You can also look at github for issues, see if one of them looks easy and something you'd want to work on.
-
AmeyaDeshmukh[m]
moneromooo: Haha! Definitely not :D
-
AmeyaDeshmukh[m]
moneromooo: Don't necessarily need easy. Willing to be a long term contributor and grind on the problem if it has the potential to teach me a lot!
-
moneromooo
Well, you gotta start with easy bits. I did.
-
moneromooo
If you don't, you run the risk of losing interest.
-
moneromooo
Up to you of course.
-
AmeyaDeshmukh[m]
Oh! Would love to hear your journey if you could elaborate :)
-
moneromooo
Well... I just wanted to contribute, so I looked at something easy to start with, that's all.
-
moneromooo
I read code, and I found something that looked buggy, if memory serves.
-
moneromooo
So I patched it. Hopefully less buggy now.
-
moneromooo
And as I read code, I got more comfortable with it, what's where, what does what, etc. Allowing me to work on more complex stuff.
-
moneromooo
Pretty standard really.
-
alt-web
i'm learning python now, to create gui front-ends for running bash script... the masses need the gui... make it very pretty in gimp... large scale adoption is the key for monero's future... payment interfaces running as apps on mobile
-
quila[m]
Anyone managed to statically build monero, with `BUILD_GUI_DEPS` on?
-
moneromooo
Ah. I used to dream of some generic GUI maker that'd run --help on programs and auto generate a GUI from that.
-
quila[m]
On mac m1*.
-
selsta
quila[m]: what are you trying to do?
-
alt-web
a generic gui maker... interesting to say the least
-
quila[m]
selsta: I am want to build `libwallet_merged.a`. I managed to do in on Big Sur, but since Monterey I could not do it anymore.
-
moneromooo
Pipe dream I think. You'd end up with something verbose and not really usable in practice.
-
selsta
quila[m]: did you test release-v0.17 or master branch?
-
moneromooo
Paste errors to paste.debian.net and post the URL here.
-
quila[m]
selsta: Yes, I have.
-
quila[m]
moneromooo: Sure, let me grab the logs.
-
selsta
I mean which branch did you test? both?
-
moneromooo
Which of the two ?
-
selsta
there were some changes in master branch a while ago
-
alt-web
true... a gui for me is python executing script, nice logo, minimal, very clean css interface
-
quila[m]
I usually just do with the release branch, sorry.
-
moneromooo
It's fine. That branch ought to build.
-
quila[m]
I have also tried to change the arch to `apple-latest`/`apple-a14`/`apple-m1`.
-
quila[m]
Let build it again to share the logs.
-
quila[m]
selsta: do you run `make release-static` or `release-static-mac-x86_6` to build on M1? (btw I tried both)
-
quila[m]
Monero builds nicely, only GUI_DEPS on causes the error.
-
alt-web
on another tip... i created my first nft, sized for a twitter banner, as the musk-rat bought twitter and only a matter of time before nft format allowed as banner images there... going price: 10 xmr ;) made a screenshot and put up on one of my web pages if anyone wants to see it... very colorful :)
alt-web.xyz
-
quila[m]
<moneromooo> "Paste errors to paste.debian.net..." <- There you go:
paste.debian.net/1240950
-
moneromooo
The error seems to be: clang: error: the clang compiler does not support '-march=x86-64'
-
quila[m]
If I build it with arch `apple-latest` it can make it to 50% or somthing.
-
moneromooo
Unlcear where from due to -j10.
-
moneromooo
Can you try with -j1 so we see where it comes from ?
-
baro77[m]
<moneromooo> "There's a CONTRIBUTING.md file..." <- I guess this:
github.com/monero-project/monero-site/blob/master/CONTRIBUTING.md
-
moneromooo
I don't see anything setting x86-64 specifically for GUI deps.
-
quila[m]
moneromooo: Sure. Do you want me to change the arch to `apple-latest` also?
-
quila[m]
Or just same command?
-
moneromooo
Try same for now.
-
quila[m]
-
moneromooo
Hmm. Looking at the Makefile, release-static does assume x86_64.
-
moneromooo
Doesn't explain why the rest of moneor would build though.
-
quila[m]
Yes...
-
-
selsta
I don't use release-static on Mac
-
moneromooo
Fails in the first file with the "top level" biuld system. You sure the rest of monero built ?
-
quila[m]
These are the archs I got.
-
moneromooo
Oh, maybe only with apple-latest then ? If so, try with apple-latest nw please.
-
moneromooo
apple-m1 seems nice too.
-
moneromooo
Or you could wait for hyc, who built for m1, I never did so I'm blind here.
-
selsta
You can set ARCH=default
-
quila[m]
Weird, I don't know what I did overnight but none of those are progressing now.
-
quila[m]
Same error.
-
quila[m]
Let me try `apple-a14` and `default`.
-
moneromooo
You might need to remove CMakeCache.txt from your build tree, cmake is a bit of an ass when it comes to changing settings.
-
quila[m]
```clang: error: the clang compiler does not support '-march=apple-m1'```
-
moneromooo
Try default or native then as selsta said.
-
moneromooo
When you have something working, a new make target for M1 can be added :)
-
quila[m]
`default` seems to have gone through. 50% now.
-
quila[m]
moneromooo: it failed at 92%
paste.debian.net/1240955
-
moneromooo
Looks like it just needs extra libs to link against.
-
quila[m]
How this `default` works behind the scenes? It seems to corresponds to `arm64`.
-
moneromooo
EVP_MD_size sounds like openssl.
-
moneromooo
event_* is probably libevent
-
moneromooo
sech1: you had the libevent problem recently, no ? Fixed it ?
-
quila[m]
Building it with `native` results in the same error:
paste.debian.net/1240960
-
quila[m]
My libevent to have been built on `arm64`. Same for openssl.
-
selsta
quila[m]: did you install it with homebrew?
-
quila[m]
selsta: Yes...
-
quila[m]
Just to clarify, I have managed to build this in the past on Mac x64 Big Sur. It has then failed on mac x64 Monterey and now M1 Monterey.
-
quila[m]
I even innocently copied the `.dylib` from the old machine to this one but it seems Rosetta don't like it.
-
selsta
You might have to compile static openssl yourself? Not sure.
-
quila[m]
I do have the openssl static libs:
-
quila[m]
```/opt/homebrew/opt/openssl@3/lib/libssl.dylib: Mach-O 64-bit dynamically linked shared library arm64```
-
quila[m]
(static lib is also here, just can't run `file` on it)
-
selsta
try to install openssl⊙1
-
quila[m]
Let me try that.
-
selsta
and remove @3
-
quila[m]
Ok, I am building now with openssl1.1.
-
sech1
moneromooo I fixed it by compiling on another machine (I was able to fix libevent undefined symbols, but there was another library that gave linker errors)
-
sech1
nettle library: undefined reference to `nettle_rsa_public_key_init' and so on
-
quila[m]
<selsta> "and remove @3" <- Same error:
paste.debian.net/1240964
-
quila[m]
sech1: are you on M1?
-
sech1
no, it was an Ubuntu x64 VM
-
quila[m]
Hummm... It seems I will have to investigate further. If anyone if manages to build statically with `BUILD_GUI_DEPS` ON on M1 chip let me know. I will do the same if I find out.
-
quila[m]
Not sure if anyone from cake wallet is in the room.
-
quila[m]
That could help*
-
selsta
and compiling without build_gui_deps works?
-
quila[m]
selsta: Yes, it does.
-
moneromooo
That IS really odd since build_gui_deps is just an extra wallet lib. The binaries get build regardless.
-
selsta
quila[m]: how did you enable build_gui_depy?
-
quila[m]
selsta: I updated the line 1244 of CMakeLists.
-
selsta
can you double check by setting it to OFF on line 1244 to see if it compiles?
-
quila[m]
Sure, doing it now.
-
quila[m]
Ok, I get the same error. With `BUILD_GUI_DEPS` OFF. It seems it just `STATIC=ON` related. moneromooo sorry for the misleading info earlier, I probably ran some other command.
-
moneromooo
Yes, I can totally see that static would do that.
-
moneromooo
So you just need to find out what static libs link to those libs that aren't linked in.
-
quila[m]
I ran `debug-static-all` and got same problem:
paste.debian.net/1240968
-
moneromooo
Then detect and add them to the link line, either through the lib that depend on them (ie, if libX wants libY, detect libY and "set X_LIBRARY $X_LIBRARY $Y_LIBRARY" or so) or through EXTRA_LIBRARIES if it's "most programs need that system lib", like librt, libdl etc.
-
moneromooo
For an example of this, see how libpgm is detected and added to libzmq, since libzmq is sometimes built with pgm support.
-
moneromooo
That's why pkg-config was made, but cmake NIH obviously.
-
quila[m]
It seems I don't have `nghttp2` installed on my machine.
-
-
moneromooo
You can add it to the deps list in README.md. If there's none for Mac yet, you can add it.
-
quila[m]
Hopefully it's just that. Do you recognize `_event_base_dispatch` function?
-
moneromooo
Likely libevent/libevent2/
-
quila[m]
-
moneromooo
grep in /usr/include (or wherever on mac)
-
quila[m]
Ok, I can see problems here.
-
-
moneromooo
My internet might be off more than on for the next hour or so, good luck
-
quila[m]
Cool, thanks for the help.
-
quila[m]
Brew didn't install static libs for `libevent`.
-
selsta
that's why I thought you might have to compile the dependencies yourself
-
quila[m]
<selsta> "that's why I thought you might..." <- I assumed it was good practice to brew recipes include static and shared libs... But `monero/contrib/brew/Brewfile` is definitely missing `nghttp2`.
-
quila[m]
I need to come back to this later. Thanks selsta and moneromooo for the help.
-
hyc
I didn't catch everything in the scrollback. what's he trying to build on M1?
-
selsta
release-static
-
hyc
I'll give it a shot. unfortunately the apple version of compilers deviate from gcc/clang normal target names
-
hyc
gcc/clang want aarch64-apple, apple compilers want arm64-apple
-
hyc
that's one of the things I had to account for in #8312
-
selsta
-
selsta
that were the openssl linking errors
-
hyc
I just did make release-static and got
-
hyc
24%] Building CXX object contrib/epee/src/CMakeFiles/obj_epee.dir/byte_slice.cpp.o
-
hyc
clang: error: the clang compiler does not support '-march=x86-64'
-
hyc
something in CMakeLists.txt is still assuming darwin only has x86-64
-
selsta
hyc: you have to edit ARCH=x86-64" to default in Makefile
-
selsta
make release-static has the ARCH still hardcoded
-
hyc
ah I see. I changed it to native for now
-
selsta
.merges
-
xmr-pr
8046 8312
-
selsta
.merge+ 8315 8308 8307 8266
-
xmr-pr
Added
-
selsta
jberman[m]: did you run unit tests with
monero-project/monero #8330 ?
-
selsta
CI has timed out, seems it got stuck somewhere
-
selsta
hyc: something else, jeffro256[m] implemented your comment suggestions, can you take another look?
monero-project/monero #8322
-
hyc
ok
-
hyc
I kinda don't see the need for reorganizing sha256 into its own source & header files
-
hyc
that strikes me as gratuitous churn
-
hyc
anyone else have opinions there?
-
hyc
so I just ran into that nghttp2 symbols unresolved etc
-
moneromooo
A lot of those epee patches seem pointless, but since I don't contribute much anymore, I'm mostly keeping my mouth shut about it.
-
hyc
it's still basic principle of collaborative dev: minimize churn. do the least amount of changes needed to solve the problem, and nothing more
-
hyc
unless you decide up front that you're going to tackle a major refactoring
-
hyc
which afaik nobody here is trying to do
-
ooo123ooo1234[m]
hyc: refactoring just for the refactoring is bad aim too
-
ooo123ooo1234[m]
it leads to a lot of redundancy
-
hyc
this 8322 touches 14 files just to update the sha256 function
-
hyc
that's nuts.
-
ooo123ooo1234[m]
<moneromooo> "A lot of those epee patches seem..." <- like instead of fixing some problems inside, someone decide to polish front door
-
ooo123ooo1234[m]
hahahaha
-
UkoeHB
A nice front door invites people to look inside. Pretty simple concept tbh
-
hyc
so libunbound requires -lnghttp2 and -levent
-
hyc
^ as inviting as a venus flytrap :P
-
UkoeHB
hey at least they are trapped fixing bugs, instead of running away (which a lot of people do when they see uninviting code)
-
moneromooo
Well, since rewriting stuff to the format you like can involve unwittingly adding bugs... it's a neverending churnfest :)
-
moneromooo
I suppose differentiating between "I like this better" and "this is really bad code" can be a fuzzy line.
-
moneromooo
There was a recent patch for example, where some atomicity was mistakenly lost, and the patch's purpose was to have better atomicity.
-
moneromooo
(though the underlying intent was actually right, using std::atomic so you would not forget to call atomic read/write)
-
moneromooo
IIRC there were hangers on in the patch too, the "I like it better that way" type. Shrug.
-
UkoeHB
Well, surely there is some balance between code quality improvements and in-place changes. In-place changes lead to accumulated technical debt, which makes it harder to find bugs and easier to create bugs with future changes.
-
UkoeHB
And also harder to evaluate if new changes are buggy or not.
-
moneromooo
Right. And different people put the line in different places :)
-
moneromooo
I'm at one extreme, I'll readily admit.
-
moneromooo
But hey, I was young too. I once reformatted stuff to remove stray tabs in a code base. That's when I really learnt about conflicts ^_^
-
moneromooo
I mean, *really* learnt.
-
moneromooo
Like, learnt that they do not come up once and then never again. Unless you never use your VCS's history.
-
» moneromooo shuts up before going too hard on another rant
-
ooo123ooo1234[m]
UkoeHB: I don't believe in any kind of code quality. It always about reading code until you understand what is going on and then something can be changed.
-
ooo123ooo1234[m]
How many comments / code quality patches are needed to make code verification / audit easier ?
-
moneromooo
If you can afford to spend shitloads of time on code, I'd agree. I don't agree in practice though.
-
ooo123ooo1234[m]
Final code verification implies that everything is untrusted and should not be verified outside of context.
-
UkoeHB
ooo123ooo1234[m]: yeah, but why the hell would some want to read code if it looks like shit? Even if the reader is qualified and competent.
-
jeffro256[m]
Hey yall, sorry I'm late
-
jeffro256[m]
I saw that yall were reviewing the SHA256 PR
-
UkoeHB
It's just an enormous waste of time to translate shit code into comprehensible logic.
-
UkoeHB
I want to spend all my time thinking about the logic, not tracing out some bs execution flow.
-
jeffro256[m]
We would have to rewite that SHA256 code anyways because OpenSSL 3.0 doesnt support it anymore but I figured it it was going to be overhauled anyways, might as well make it look clean
-
hyc
I don't see how the particular source file its in affects its cleanness or code quality
-
moneromooo
What do we use SHA256 for btw ? I know of the update check, anything else ?
-
jeffro256[m]
Because we have a giant 2K+ file called "util.cpp" that is largely undertested and unorganized
-
moneromooo
If it is just that, we can just use keccak instead, since it doesn't have to be compatible with anything else.
-
ooo123ooo1234[m]
UkoeHB: any short example ?
-
jeffro256[m]
Sorry 1.4K
-
moneromooo
Hmm. Merge mining (can be changed, not too late), trezor (probably hard to change).
-
jeffro256[m]
It's used also in merge mining I believe
-
kayabanerve[m]
... does anything actively merge mine with Monero right now?
-
kayabanerve[m]
... I'd guess Wownero?
-
kayabanerve[m]
* guess Wownero if I had to pick a project to do so?
-
UkoeHB
ooo123ooo1234[m]:
github.com/monero-project/monero/bl…240a4/src/wallet/wallet2.cpp#L13504 . Figuring out if `update_multisig_rescan_info()` introduced a nonce-reuse bug was a waste of time that could have been avoided with a better design (i.e. code quality).
-
moneromooo
I was going to say nothing. I didn't knopw about wownoero.
-
moneromooo
That is interesting.
-
kayabanerve[m]
Yeah, me neither
-
selsta
as far as I know they don't merge mine
-
kayabanerve[m]
IMO, Monero shouldn't have any merge mining code. At all. If another project wanted to setup some merge mining system, that should be completely on them.
-
jeffro256[m]
Does townforge merge mine with Monero is it a seperate chain?
-
moneromooo
Tari was the one who wanted to merge mine. Townforge also will.
-
kayabanerve[m]
And I don't care to submit a PR removing the TX Extra byte, as it increases extra decode rate to have it, but if we're saying merge mining somehow has compatibility requirements...
-
moneromooo
Merging that code means any project can reuse it, which means more hash rate going into monero.
-
moneromooo
In theory anyway.
-
kayabanerve[m]
Isn't the code in question simply a cleanup of the sha function solely used for updating? How does this feed into merge mining anyways?
-
moneromooo
MM just uses sha256 because it was there and I needed a hash function I think. Not sure why I picked this one and not keccak.
-
jeffro256[m]
I would have to look deeper into it, but I believe that that the merge mining code uses it it validate the intgerity of the merge mined blockchsind
-
moneromooo
(hence "can be changed, not too late").
-
kayabanerve[m]
Tari is already proposing proxying the Monero mining RPC for its needs.
-
kayabanerve[m]
Considering nothing actively uses this, it personally sounds like MM should be moved to keccak256 at least, or we should drop code from it and leave Tari to augment their proxy to replace the dropped code.
-
kayabanerve[m]
Just to be perfectly clear, the MM code in Monero. It's solely indexing data and providing RPC methods, right? None of it actually affects node operations?
-
moneromooo
Right.
-
moneromooo
IIRC.
-
moneromooo
It's been a while now...
-
jeffro256[m]
sha256 is also used to verify the checkpoints.dat file , but that could easily be changed
-
moneromooo
It was meant as an incentive to other chains to start using MM.
-
moneromooo
But nobody seemed to care so far.
-
moneromooo
Probably too busy doing stuff for that ethereum house of cards before it crashes down under its own weight :D
-
ArticMine[m]
I can see this changing with tail emission
-
ArticMine[m]
MM with Monero could be seen as an option
-
jeffro256[m]
Does anyone know the comparison of cryptographic security between keccak and SHA256? Because we only "need" one good cryptographicly secure hash function
-
hyc
keccak is the basis for SHA3
-
hyc
I would say it's superior to all SHA2 algos in every meaningful way
-
kayabanerve[m]
I still prefer Blake2b :( But that's a derailment for another day :p
-
moneromooo
Was this a SHA3 candidate ?
-
kayabanerve[m]
But yeah, keccak is effectively SHA3. It's just minor padding changes from the submitted contestant to the released version that causes people to still call it keccak.
-
jeffro256[m]
@hyc that's what I figured since it was a SHA3 finalist , so maybe we could start to transition away from SHA256?
-
kayabanerve[m]
Blake2 and Keccak were both candidates. Keccak had lower performance but was more distinct and provided redundancy in case SHA2 was broken IIRC.
-
hyc
blake2 was also designed specifically to be fast on CPUs
-
kayabanerve[m]
Keccak was chosen and just had the padding changes I don't think affect its security in any meaningful way.
-
kayabanerve[m]
We should drop SHA2 though
-
moneromooo
So... if openssl drops SHA256, does it mean it doesn't support any suite that uses SHA256 ? Or did it just drop it from its public API ?
-
jeffro256[m]
Just the suite of APIs we were using
-
jeffro256[m]
You can still use it thru the EVP API
-
hyc
they totally revamped their hashmech API
-
ooo123ooo1234[m]
<UkoeHB> "ooo123ooo1234:
github...." <- A better design already known to a reader. Untrusted code verification will be always as hard as this (
en.wikipedia.org/wiki/Boolean_satisfiability_problem). Even if this state is reached at some point, with addition of anything new full verification will be needed again. The only way is to maintain knowledge about code in memory. Only code of dead project is easy to review.
-
ooo123ooo1234[m]
hehe
-
hyc
quila[m]: this makes the static build succeed on M1 Mac
-
hyc
-
UkoeHB
ooo123ooo1234[m]: how about a design where copies of nonces are never made, so even the question itself doesn't have to exist?
-
sech1
sha3 uses exactly the same keccakf1600 function in the main loop, the only difference is the initial message padding
-
UkoeHB
ooo123ooo1234[m]: plus, my complaint was about TIME, converting code into a comprehensible mental model takes time, and it takes less time if the code is cleanly written. Saying you don't want to write clean code is like saying you want to waste people's time (when clearly you are obsessed with other people wasting your time, quite the double standard).
-
moneromooo
I think this is an issue of "bandwidth". The code "cleverness" has to be high enough that it's good and able, but low enough than enough people can work with it. Too clever and only very few people can handle it, and it'll end up untrusted because few people can verify it. Too low and it's full of gunk.
-
moneromooo
You want a sweet spot.
-
moneromooo
And of course I've been advocating for keeping some of the gunk because churn in itself adds some gunk despite the apparent gunk removal...
-
moneromooo
Bandwidth should not be a bottleneck. You really want to avoid bottlenecks, of which there are many.
-
moneromooo
"Bandwidth" is probably not the best term here. For the purposes of this argument, I define it as "number of people times their ability to go through and grok the code".
-
moneromooo
Another bottleneck is the number of independent people being able to read and understand the code. Or at least parts of the code, realistically.
-
moneromooo
It's a balancing act, sadly. No magic bullet.
-
UkoeHB
There are so many simple things you can do to speed up reading code. Good naming, functions that do only one thing, small comments that help you orient yourself when re-reading code, whitespace that helps the reader parse language syntax. And advanced stuff like minimizing raw loops and conditionals, very judicious use of inheritance, strict interfaces and well-understood pre/post conditions, etc.
-
ooo123ooo1234[m]
UkoeHB: Do you know any code that meets all of this but is vulnerable ?
-
UkoeHB
ooo123ooo1234[m]: Where did I saw clean code is invulnerable? I said clean code is easier to read. Maybe you should re-read my reading rant.
-
moneromooo
It was not claimed you said that. It's just about shifting a probability distribution.
-
ooo123ooo1234[m]
UkoeHB: Does "easier to read" mean easier to verify correctness ?
-
sech1
Any code more complex then "hello world" has bugs/vulnerabiliteis, it's inevitable. The scale and severity of these bugs can be restricted by good coding/testing/reviewing practices.
-
moneromooo
Easier to understand means easier to verify correctness.
-
UkoeHB
It means easier to find people willing to verify correctness, and less cost for anyone who wants to verify correctness.
-
UkoeHB
because time = money
-
moneromooo
But "verify correctness" for large enough code is practically impossible since the combinatorics are just too large. It's *really* hard to keep a large state in one's mind, especially when it changes and rolls back.
-
ooo123ooo1234[m]
UkoeHB: There must be at least 1 example of code that was written in accordance with all of that subjective standards, audited but turned out to be vulnerable
-
moneromooo
And that's what's needed to *verify* correctness.
-
ooo123ooo1234[m]
or redundancy added by clean code standards helped to hide vulnerability
-
moneromooo
ooo123ooo1234[m]: you could ask, eg, trail or bits or similar for a bit of code where they found a vuln and the code was really clear/nice/etc.
-
moneromooo
s/ or / of /
-
sech1
ooo123ooo1234[m] just read articles at
pvs-studio.com/en/blog/posts/cpp - plenty of examples
-
moneromooo
People like that would likely remember such cases, as htey're their biggest successes.
-
sech1
-
UkoeHB
ooo123ooo1234[m]: surely there are many such examples. Are you going to ask for a statistical comparison between vulnerable shit code and vulnerable clean code? Maybe I should ask YOU for that statistic, since it's pretty easy to assume that shit code is more likely to contain bugs (i.e. not just conceptual errors, but literal software bugs that can be exploited).
-
sech1
For me, "clean code" is also code that doesn't trigger compiler warnings at highest warning level and is regularly checked by static analyzers. It helps to catch 90% of coding errors.
-
sech1
then come automatic unit tests and integration tests that catch 9% more bugs. 1% is left which are really tricky logic errors or thread races etc. - but no simple bugs.
-
sech1
also AddressSanitizer, ThreadSanitizer and UB Sanitizer are really helpful
-
moneromooo
As long as -Werror is not used. What a shit idea that one was...
-
sech1
-Werror works fine in p2pool. But I had a luxury to keep in like that from the start.
-
sech1
*keep it
-
hyc
there's a lot of subjectivity about what is readable and comprehensible
-
moneromooo
Hence the "please don't rewrite to how you like it better".
-
hyc
if you want to understand why something was done the way it was, the code itself may not be obvious
-
hyc
and so you may have to trawl thru the commit history to understand the evolution of the code and why
-
hyc
so what is *objective* is the fewer changes you make to the code, the easier the history is to grok
-
ooo123ooo1234[m]
hyc: don't know any example where code itself isn't obvious
-
ooo123ooo1234[m]
* itself isn't <del>obvious, * obvious</del> enough
-
hyc
these are pretty well established principles in colalborative software development
-
ooo123ooo1234[m]
I find it harder to read other people text than code
-
moneromooo
Did you every look at the IOCCC ? Some of that stuff is really clever.
-
hyc
ooo123ooo1234[m]: e.g. n wallet code there are some warnings for unused vars. why do they exist? were they put in for a yet-to-be-implemented feature?
-
hyc
or left over from a previous code removal "cleanup" ?
-
hyc
only the commit history can explain
-
UkoeHB
hyc: sure, there is subjectivity. There are also very obvious things that few people can disagree with. For example, you don't write a book with font size 3 if you want people to read it.
-
moneromooo
Oh, that one's mine IIRC. There was something I needed to get back to, and removing the warning would just lose the reminder. Never did :/
-
hyc
#1 rule in a project must be "change only what is necessary and nothing more"
-
wernervasquez[m]
ooo123ooo1234[m]: Isnt enough for what?
-
moneromooo
And tbh I doubt I'll get to it. If someone else wants to fix it...
-
moneromooo
ooo123ooo1234[m]: did you mean "I find it harder to read other peopls's written language than other people's code" ?
-
hyc
e.g., these are the guidelines we've used in OpenLDAP
openldap.org/devel/programming.html
-
moneromooo
(and yes, it's a good example of that, heh)
-
selsta
-
selsta
this one I think
-
UkoeHB
ooo123ooo1234[m]: so what, everyone should be like you (a C++ compiler or something?)? is that a realistic way to get anything done?
-
moneromooo
Yes. That one would just sweep something under the carpet. Very good example of mindless kowtowing to compiler.
-
moneromooo
ooo123ooo1234[m]: I am going to assume you are a competent coder who would like to make monero better here.
-
hyc
another rule of open source development is you never get to dictate the style of a project you join in-progress. you always adopt the existing coding style.
-
moneromooo
This is in a way similar at a high level to free software. There are constraints in the licence, so how can it be free ?
-
moneromooo
The point is that the freedom is that of the software, not of any particular user. And of users as a whole over any particular user. Though this is subject to interpretation and I'm not sure this is the right way of saying this, but anyway:
-
wernervasquez[m]
hyc: Or, depending on the license, fork it. Put in the work. And let the merits of your ideas speak for themselves.
-
moneromooo
This is my take on it, not the definite trust of course: In order to build a piece of software, I think you want the highest "bandwidth" of work on it. That bandwidth improves with the numer of people working on it, and also with the competency of people working on it.
-
hyc
wernervasquez[m]: sure, that's always an option
-
moneromooo
However, different people have different abilities. You can't improve everyone's competency.
-
hyc
if you want to contrinbute a patch to the linux kernel, you must code to the linux kernel coding style.
-
hyc
you can fork the kernel and reformat if you really want to, but that would be stupid
-
moneromooo
If people work on the same codebase, they have to settle down at roughly the lowest common denominator of competency, or the people who don't understnad the code will drop off.
-
moneromooo
So you either have to drop "cleverness" to include more people, or increase cleverness to drop them off and make up numbers for "good code".
-
moneromooo
This can to some extent be solved by having people work on only part of the code. Like, say, clever cookies work only on clever crypto, where people like me won't have to understand it.
-
moneromooo
Why the fuck am I doing explaining what's obvious. It's patronizing. I'll shut up.
-
hyc
I thought you were doing fine.
-
hyc
it seems a lot of newer contributors don't understand
-
moneromooo
But I know for a fact it's hard to dumb down your code. Some people I find useless, and it's difficult to constantly try to explain things agian and again.
-
moneromooo
But you need to do that or end up essentially on your own and you'll achieve... not much.
-
moneromooo
If you're after self development, it'll work fine. If you're after building something great others can help you with, you'll crash and burn.
-
moneromooo
And I'm here in the middle I think. I see shit people around, and people like sarang who are able to grok all the crpto and still write the C++ to go with it. So I think I see both sides.
-
moneromooo
So if you want the project to grow, and not just you, you need to allow others - up to a point. IT's not a kindergarten project.
-
moneromooo
And yes, that means others will just be blind to obvious stuff. Apologies to everyone who thought I was a dunce for asking obivous stuff avout crypto repeatedly.
-
jeffro256[m]
Yeah that's pretty well put
-
moneromooo
But if you try and let others be able to grok your stuff, it'll grow the project faster than you could have done alone.
-
moneromooo
Especially once you decide to fuck off :D
-
jeffro256[m]
If you look at the biggest, most popular libraries and codebases, thing that are actually used by millions on a daily basis, it's not the code that it the cleverest, it's the stuff that has the the most numbskulled, dead-easy API to use
-
moneromooo
I'm feeling conflicted saying that and writing some code that's not the easiest to read though :D
-
moneromooo
(sorry guys)
-
hyc
that's reality. some things are just hard.
-
moneromooo
Anyway. That explains why sometimes it's just best to kick someone in the butt out of here if they persist in being assholes.
-
hyc
if it's too hard to understand and you don't want to put the effort in, fine, nobody's forcing you. move on to some other project if you want.
-
moneromooo
Just not worth the bother. Try not to be that guy,
-
jeffro256[m]
That's okay honestly, but I think what has been missing so far is someone to come clean it up for the rest of us plebians
-
wernervasquez[m]
hyc: There is a tradeoff at somepoint though. Unless you goal is to work alone.
-
hyc
the goal is to solve problems. some problems are just hard by their nature.
-
moneromooo
Well, it's always a balancing act, isn't it... Sometimes shepherding newbies is just more trouble than you get back.
-
jeffro256[m]
I probably won't be able to contribute to critical code for a long, long time, I'm just not that confident in my abilities yet, but what I think is currently missing is like a two prong approach that a lot of companies take on where you have some people write the code and others that make it easier to grok
-
hyc
seriously. if this were easy everyone would be doing it...
-
moneromooo
That seems... dangerous...
-
ooo123ooo1234[m]
jeffro256[m]: are you talking about regular for-profit companies ?
-
hyc
^ yeah, shades of the debion openssl RNG bug
-
moneromooo
Heh. Exactly.
-
» moneromooo wonders if that was patronizing or helpful...
-
UkoeHB
There are risky changes, and there are not risky changes. Moving functions out of a bloated file is not risky.
-
hyc
open source s/w dev is not like commercial s/w dev. there are no assigned roles
-
moneromooo
Maybe not risky, but conflicty as hell.
-
jeffro256[m]
@ooo123ooo1234 yeah
-
jeffro256[m]
@hyc yeah there are no "assigned" roles but some people tend to focus on some things, and that's alright you gotta play to each other's strengths and we can use each other to patch each other's weaknesses
-
jeffro256[m]
No one has to write perfect code the first time
-
hyc
"bloated file" is also subjective. if you only need to look inside that file once every 10 years because some upstream dependency changed their API, it's hardly a problem worth spending time on
-
UkoeHB
maybe you don't need to look in that file, but any newcomer learning the codebase probably needs to look in it
-
moneromooo
The issue with size is compile time. If you read code, where hte code is is mostly irrelevant, no ?
-
UkoeHB
large files are incredibly hard to navigate
-
hyc
If someone needs to read the source of util.cpp on a regular basis, something is terribly wrong.
-
UkoeHB
the only way I can get around wallet2 is ctrl-f for things I already know about
-
moneromooo
Like, I created wallet2_cc.cpp for new stuff in my fork, but that's just for memory usage.
-
hyc
they should only need to read util.h to make use of its functions
-
moneromooo
Would you... not search for stuff if the file was, say, 500 lines ?
-
hyc
that's like saying someone needs to read the source of malloc() on a regular basis
-
moneromooo
Reading malloc as an exercise in working out why something that should be simple is fucking complicated :D
-
moneromooo
Or... printf...
-
hyc
it's a utility, you just use it and move on...
-
UkoeHB
moneromooo: it's not about the usefuless of searching, it's that searching is the ONLY way to navigate
-
hyc
there is such a thing as ctags
-
UkoeHB
and if you don't know what you're looking for, it's doomed
-
moneromooo
OK. I guess we just have different ways to work. I always git grep and / search.
-
jeffro256[m]
@hyc I tend to agree with UkoeHB here, you are a wizard and have spent a lot of time in the code. But for the rest of us, we can't see it as "just a utility:" because we don't know what ir does and its mostly undocumented and unorganized
-
moneromooo
So file size is irrelevant for me.
-
ooo123ooo1234[m]
moneromooo: the same
-
wernervasquez[m]
hyc: I know how you feel dero (scam). And I am not promoting or defending it as a project. But speaking solely about the code base, have you ever read their re-implementation of monero's stuff in Go? I think it is objectively better code.
-
jeffro256[m]
It just creates a lot of mental friction for someone trying to understand the codebase at large
-
hyc
jeffro256[m]: that's just the wrong approach
-
hyc
you can't understand the codebase at large.
-
sech1
"better code" is a subjective category unless we define some metrics
-
hyc
you find one piece and work from there
-
hyc
and in any piece of code - the header file is the interface. if you need to look beyond that, there's something wrong
-
sech1
"one piece" <- assuming the codebase is nicely split into independent pieces and not just one huge cpp file :P
-
hyc
with the interface
-
UkoeHB
moneromooo: for me, knowing the relative location of every function and piece of logic makes it easier to get things done
-
hyc
util.h is 259 lines, at least 30% comments
-
hyc
so it seems like not a big deal to grok, as someone who wants to use it
-
sech1
For me, file size is not a big ussue as well. I've seen huuuuge files in commercial codebases I worked on (I'm talking about > 50,000 lines)
-
moneromooo
OK. I have trouble understanding why it helps, but I acknowledge it does.
-
UkoeHB
I almost never read monero's headers, always look at the source functions to figure out what they are doing first.
-
jeffro256[m]
hyc All but one utility function in util.h has not a single comment
-
hyc
jeffro256[m]: you're exaggerating, quite a bit
-
jeffro256[m]
Ah well theres a few at the top actually but that still leaves 16 undocument functions
-
UkoeHB
I basically default to looking at source for most things (some of the ringct.h and crypto.h stuff is usable).
-
jeffro256[m]
Sorry I saw the ones between the class declarations but still
-
hyc
bool disable_core_dumps(); - you should be able to tell from the signature whether it's a function you care about or not
-
moneromooo
I should have called it discd so I could have added a comment.
-
wernervasquez[m]
The purpose of the project matters. If you are trying to write the most efficient miner or database, nobody really cares if the code is readable by a junior dev. They just was speed and correctness.
-
hyc
LOL
-
ooo123ooo1234[m]
<wernervasquez[m]> "The purpose of the project..." <- it's unreachable goal - different people have different experience / abilities / ...; What's the goal to tune code readability for someone who don't know it if such people can't even verify correctness of their changes ?
-
ooo123ooo1234[m]
<UkoeHB> "I almost never read monero's..." <- code is the most detailed source of info, what kind of detalization is ok for function header ? different cases require different detalization
-
ooo123ooo1234[m]
in the worst case function header should comment with it's source above
-
ooo123ooo1234[m]
hence it's the most detailed comment
-
ooo123ooo1234[m]
I did it few times at work
-
ooo123ooo1234[m]
hehe
-
ooo123ooo1234[m]
* header should have a comment with
-
hyc
C++ particularly sucks because so much of implementations are in headers anyway
-
hyc
you wind up needing to read header and source for anything you're trying to debug
-
UkoeHB
ooo123ooo1234[m]: the point was about navigating large code files and using stuff from them. It’s not as simple as looking in the header.
-
ooo123ooo1234[m]
UkoeHB: What did you use for source file navigation last time ? vim / some IDE ? Do you use advanced navigation features ? Does it help ?
-
UkoeHB
ooo123ooo1234[m]: the purpose of Monero is a private cryptocurrency that any person can use. How is writing code that any person can read for their own satisfaction, for the cryptocurrency they use, not also a good goal?
-
UkoeHB
ooo123ooo1234[m]: I mainly use the find-all feature in sublime text which works pretty good (I suck at remembering shortcuts, so vim won’t work for me).
-
UkoeHB
But I don’t use that for stuff whose location I already know.
-
UkoeHB
Location is just an easier way to navigate for me (and conceptualize) than named lookups.
-
UkoeHB
There is no ‘what’s that big generic file that has what I want? what’s the exact name to find it?’
-
jeffro256[m]
ooo123ooo1234 why not put all of src/common into one header file and make all the functions inline? That would make it easier to CTRL-F it
-
jeffro256[m]
@hyc @selsta UkoeHB I pushed to the Sha256 PR btw with a smaller test file and I wrap EVP_MD_CTX in a class so it never leaks
-
quila[m]
<hyc> "
github.com/monero-..." <- Thanks for the help. I have tested this and got less errors now:... (full message at
libera.ems.host/_matrix/media/r0/do…4da0e830f877f7d93699b1451bfa6460b0d)
-
jeffro256[m]
Also btw the evp.h file is not going to be a one-off file for sha256sum. There's other parts of the codebase that are deprecated by OpenSSL 3.0 but which the EVP-equivalent isnt
-
jeffro256[m]
-
hyc
quila[m]: strange, I didn't get those errors. those symbols are from openssl
-
hyc
that's a system library on macos. On mine it's actually libressl 2.8
-
hyc
hm. no I've got homebrew openssl 1.1.1l in /usr/local/lib
-
ooo123ooo1234[m]
hyc: There are too many environments to support all of them by default. It's enough to maintain at most one cross platform environment for all targets.
-
ooo123ooo1234[m]
It's just waste of time to figure out what decomposition of headers/libs is being used by some env
-
hyc
dunno which conv you're responding to
-
hyc
but yes, that's why we use gitian for official reproducible binaries. single env for all targets.
-
ooo123ooo1234[m]
hyc, "It's easier to make a correct program run fast than to make a quick program run correctly!"
-
ooo123ooo1234[m]
cool thesis
-
ooo123ooo1234[m]
-
hyc
yes
-
hyc
we've lived with that philosophy for ~24 years on the project
-
hyc
and also happen to perfectly conformant with protocol specs and world's most efficient implementation
-
hyc
correctness comes first.
-
quila[m]
<hyc> "hm. no I've got homebrew openssl..." <- I have set the FLAGS to use openssl 1.1, but got a problem with boost lib now.... (full message at
libera.ems.host/_matrix/media/r0/do…4e14f68121c2c9042381aae822b3392150c)
-
quila[m]
icu to be more precise.
-
garth
Testnet fork is tomorrow. If I want to help debug the switch I should git pull from master today?
-
quila[m]
hyc: how can I set multiple `CPPFLAGS`? Would something like `export CPPFLAGS="-I/opt/homebrew/opt/icu4c/include:$CPPFLAGS" work?
-
selsta
garth: yes
-
hyc
quila[m]: why do you want to change CPPFLAGS? that won't make any difference here
-
hyc
strange that my homebrew libboost doesn't have this problem
-
hyc
quila[m]: at this point it seems like more trouble than it's worth
-
hyc
the gitian build for M1 Mac in #8312 works
-
hyc
I have no idea what's different about your homebrew install that's breaking these library dependencies
-
hyc
not worth my time to help you figure that out when I've already created a reproducible build environment for M1 that everyone can use
-
quila[m]
No problem. Thanks for the help anyways. I will investigate further tomorrow.