-
jeffro256[m]
> @sech1 jeffro256 for once I agree with ooo123, deprecated methods are not relevant for this PR review. As selsta commented there somewhere, boost 1.59 is still supported in Monero code, so we can use these methods.
-
jeffro256[m]
We support Boost 1.58+, which means we should work to support newer versions as well, since most people's Boost build is going to be newer than 1.58. We already do this in practice with compatibility macros such as GET_IO_SERVICE, and since @ooo123ooo1234567 is completely rewriting all these connection methods, it should be done correctly THIS time
-
jeffro256[m]
I know its annoying, and I know that how it was before this PR, but we don't want 2 giant rewrites: "connection: fix implementation" and "connection: fix implementation: fix implementation" :D
-
jeffro256[m]
> "
monero-project/monero #7760#discussion_r889421565", "potentially infinite while loop" potentially shallow comment
-
jeffro256[m]
This is not a shallow comment because infinite while loops will waste CI build time and slow down feedback. Not to mention if you're running the tests locally trying out somone's new PR who touches the server code down the line and it deadlocks and then you sit there and sit there and then kill it early and then lose debug informatation
-
jeffro256[m]
Also I'm getting to the "Correctness" soon™, I was just pointing out the glaring surface issues I see
-
ooo123ooo1234567
<jeffro256[m]> "I know its annoying, and I..." <- It would be better to want working code firstly, before anything else including "glaring surface issues".
-
ooo123ooo1234567
jeffro256[m]: 100% you're underestimate hardness of this part, otherwise you wouldn't waste time.
-
ooo123ooo1234567
s/underestimate/underestimating/
-
ooo123ooo1234567
<jeffro256[m]> "I know its annoying, and I..." <- There will not be even alternative implementation of fixes to added tests. Since my patch is correct and glaring issues are easy to fix, unlike correctness issues in PRs of others.
-
jeffro256[m]
> jeffro256: can you stop writing those subjective comments and focus on checking whether problems from tests are solved and no others were introduced ?
-
jeffro256[m]
With all due respect, I sense a double standard here in regards to PR #8365. PR #8365 passes all tests, solves a small, but well defined issue, and doesn't introduce any new problems. Of course, it is arguable if it is the BEST solution (I don't think it is). However you called the devs who approved "incompetent" and that they "blindly approved" of it. Yet when people scrutinize your PR, you become rather defensive. Please, it's a
-
jeffro256[m]
large, complex PR, and I appreciate the work you're putting into it, but you have to be open to some review when the PR is so large
-
selsta
jeffro256[m]: we will close 8365
-
jeffro256[m]
@selsta Cool
-
selsta
while it is correct, removing the RNG in the first place is even better
-
ooo123ooo1234567
> <@jeffro256:monero.social> > jeffro256: can you stop writing those subjective comments and focus on checking whether problems from tests are solved and no others were introduced ?... (full message at
libera.ems.host/_matrix/media/r0/do…7c8907d56c14267b94f9e51c00d0208e6a4)
-
jeffro256[m]
> while it is correct, removing the RNG in the first place is even better
-
jeffro256[m]
+1
-
ooo123ooo1234567
All future PRs will be only bigger.
-
ooo123ooo1234567
Even bigger than whole p2pool
-
ooo123ooo1234567
hahahaha
-
kayabanerve[m]
<sech1> "Switching away from libuv..." <- But what if I told you there was a Rust libuv with minimal testing and minimal real world usage... but in Rust 👀
-
kayabanerve[m]
/s. Let's not suggest replacing entire frameworks :p
-
jeffro256[m]
> > <@jeffro256:monero.social> > jeffro256: can you stop writing those subjective comments and focus on checking whether problems from tests are solved and no others were introduced ?... (full message at
libera.ems.host/_matrix/media/r0/do…4be92d1bea0696a424c664f644cd6ec6c80)
-
selsta
all i know is that all current nodes run completely broken ssl code
-
selsta
and it results in bad user experience
-
kayabanerve[m]
Regarding infinite loops, the issue for me is they're impossible to debug. You have no idea if it's processing a small data set slowly, processing a large data set legitimately, or processing infinitely. There should be a specific message localized, as two infinite loops means you don't even know which triggered (assuming a lack of contextual logs)
-
ooo123ooo1234567
> <@jeffro256:monero.social> > > <@jeffro256:monero.social> > jeffro256: can you stop writing those subjective comments and focus on checking whether problems from tests are solved and no others were introduced ?... (full message at
libera.ems.host/_matrix/media/r0/do…c69fe2850e3a27012dc0b7a38ff93abbf5b)
-
jeffro256[m]
> all i know is that all current nodes run completely broken ssl code
-
jeffro256[m]
Yeah, firefox will not accept any connections to our nodes over SSL
-
ooo123ooo1234567
* If there is at least 1 subjective change not present in old code with side negative effect then write test to demonstrate it.
-
selsta
ooo123ooo1234567: i think with your code it's better but not fully solved yet
-
ooo123ooo1234567
kayabanerve[m]: You're talking about code outside of context. You and jeffro256 didn't even try to run test. facepalm
-
kayabanerve[m]
ooo123ooo1234567: Yes. I'm solely commenting on the theory of infinite loops.
-
ooo123ooo1234567
kayabanerve[m]: Don't do it. Code can't reviewed outside of context. Should i prove it ?
-
ooo123ooo1234567
* prove it or it's already obvious ?
-
ooo123ooo1234567
* Code can't be reviewed outside, * prove it or it's already obvious ?
-
kayabanerve[m]
Based on the comment "potential", it sounds like it should never be practically. I'l saying it should therefore have an explicit execution boundary in case:
-
kayabanerve[m]
1) Context of how it's used is changed, as this means we have a context-dependent infinite loop
-
kayabanerve[m]
2) A bug is introduced within itself
-
kayabanerve[m]
It's a harmless change in your case which massively improves development work flow in the worst case.
-
kayabanerve[m]
I'm advocating for more robust development practices. The end.
-
selsta
jeffro256[m]: our code is full of deprecated boost code. if something gets removed we will have to update the code anyway. i don't think adding a large amount of #if is a good idea currently
-
ooo123ooo1234567
kayabanerve[m]: How did you make conclusion whether it's harmless or not outside of context ?
-
kayabanerve[m]
If your loop should never be infinite in practice, you should be able to define an execution boundary. Any value outside of that boundary would be harmless yet cover the case where it is infinite.
-
kayabanerve[m]
If you can't define a boundary, you can't say it shouldn't be infinite because you can't say it should be finite.
-
ooo123ooo1234567
kayabanerve[m]: context free comment; facepalm
-
kayabanerve[m]
I'm not saying place the limit directly on the boundary. I do understand a practical n=100, yet due to RNG, n may be much higher, yet then set a limit of 1000. We shouldn't be able to flip a coin 10 times in a row and always get tails unless the code is truly that poorly written.
-
jeffro256[m]
I didn't say there was even a side effect, just that there are a lot of lines which were changed largely for stylistic reasons and not for practical reasons, despite you being such a strong proponent of minimal diffs. In these cases it would not make sense to be defensive of "shallow" criticisms of such changes
-
ooo123ooo1234567
jeffro256[m]: if there is no side effect then it's not related to correctness
-
ooo123ooo1234567
* is no negative side effect
-
kayabanerve[m]
-
kayabanerve[m]
-
jeffro256[m]
> > <@kayabanerve:matrix.org> Regarding infinite loops, the issue for me is they're impossible to debug. You have no idea if it's processing a small data set slowly, processing a large data set legitimately, or processing infinitely. There should be a specific message localized, as two infinite loops means you don't even know which triggered (assuming a lack of contextual logs)
-
jeffro256[m]
>
-
jeffro256[m]
> You're talking about code outside of context. You and jeffro256 didn't even try to run test. facepalm
-
jeffro256[m]
I have tun the tests? I'm saying that it could very easily become a problem in the future. The entire point of a test is that you are challenging the code. You should NOT assume that it will pass by default
-
jeffro256[m]
*run
-
ooo123ooo1234567
-
kayabanerve[m]
If you can't propose bounds and successfully add a finite limiter to any theoretical infinite loop, I'll tell you right now it should be assumed infinite, and those aren't acceptable
-
kayabanerve[m]
jeffro256: Your replies are screwed up and it's horrible for everyone D:
-
ooo123ooo1234567
> <@jeffro256:monero.social> > > <@kayabanerve:matrix.org> Regarding infinite loops, the issue for me is they're impossible to debug. You have no idea if it's processing a small data set slowly, processing a large data set legitimately, or processing infinitely. There should be a specific message localized... (full message at
libera.ems.host/_matrix/media/r0/do…aa4b4d5f2cd5db2800dd5e5e5b06e5ee6ad)
-
jeffro256[m]
Sorry :/ . What does it look like ?
-
kayabanerve[m]
ooo123ooo1234567: You cannot assume people using your code will know its quirks to the degree you do
-
kayabanerve[m]
You should be able to define code with well established boundaries and expectations and know how to program defensively for when they are exceeded
-
ooo123ooo1234567
kayabanerve[m]: can you look into code you're talking about at least ? it's context free comment; facepalm
-
kayabanerve[m]
If this should never be infinite, there should be no issue with a finite limit, and we should be able to move on. If there is an issue with providing a finite limit, you cannot successfully argue it's a safe to deploy infinite loop.
-
kayabanerve[m]
Do you want to link it? It really doesn't matter for the comments I'm making. If it's a potentially infinite loop, I will always have this comment.
-
jeffro256[m]
one of the large issues tackled in #7760 is *deadlocks* and *race conditions*. These become a problem when you wait on them in an infinite loop
-
jeffro256[m]
You need a backup condition in cases like this. Multithreaded code is not deterministic
-
ooo123ooo1234567
kayabanerve[m]: there is infinite loop; it's just comment from jeffro256 which have even tried to verify; facepalm
-
kayabanerve[m]
jeffro256[m]: It's not actually replying via Matrix yet copying the entire original message and adding > to it to quote it. IRC gets the original message repeated and I got tagged because you replied to a message replying to me, yet your quote re-included my message as well including my nick
-
ooo123ooo1234567
* there is no infinite loop;
-
ooo123ooo1234567
* there is no infinite loop; it's just comment from jeffro256 which you haven't even tried to verify; facepalm
-
kayabanerve[m]
It may be your client is bugged. If it is, just stop using replies though.
-
kayabanerve[m]
And I don't blame you for it :p Just trying to stop multi-line IRC spam and extraneous pings
-
kayabanerve[m]
ooo123ooo1234567: There isn't one. Great. Then my commentary is void
-
jeffro256[m]
Using fractal right now, I think it's in beta
-
jeffro256[m]
noted
-
kayabanerve[m]
You never said there wasn't one. Jeffro commented there was a potential one and I commented on that.
-
ooo123ooo1234567
kayabanerve[m]: Are you kidding ? You wasted my time with debate without understanding the context; is it ok ?
-
kayabanerve[m]
You could've just said Jeffro was wrong, and that there wasn't an infinite loop, instead of debating my commentary on the potential infinite loop.
-
jeffro256[m]
-
kayabanerve[m]
Except I do want to hear jeffro256's comment still as I'm not convinced there isn't a potentially infinite loop. I think there isn't one with the context you've created, but...
-
ooo123ooo1234567
kayabanerve[m]: It doesn't work with people. I tried
-
jeffro256[m]
-
kayabanerve[m]
jeffro256: That looks like a sleep statement
-
kayabanerve[m]
So I have two comments.
-
kayabanerve[m]
1) That is potentially infinite.
-
kayabanerve[m]
2) Use sleep statements instead of maxing out a CPU.
-
jeffro256[m]
The "potentially" part comes from calling some logic, then expecting a value to converge on something in the future. And doing a hard wait with no exit condition
-
kayabanerve[m]
You're assuming the rest of the code will successfully trigger those events. If it doesn't, the code is wrong. Your test should say it's wrong, not infinitely loop in wait.
-
jeffro256[m]
This is not ideal for unit tests and can be easily changed
-
kayabanerve[m]
I'd make it a for loop with an inner sleep. If at the end, that condition still isn't met, panic.
-
jeffro256[m]
> You're assuming the rest of the code will successfully trigger those events. If it doesn't, the code is wrong. Your test should say it's wrong, not infinitely loop in wait.
-
jeffro256[m]
+1 you understand
-
kayabanerve[m]
kayabanerve[m]: I really feel like this is the definitive statement which jeffro256 has been trying to communicate
-
kayabanerve[m]
Yeah, still bugged, get a different client :p
-
selsta
in practice i've run this code for 1 year now on multiple nodes, it has been bug free
-
ooo123ooo1234567
kayabanerve[m]: infinite loop in case if code is broken, which is not desired state of things. Why does it matter to optimize something for this ?
-
ooo123ooo1234567
are you expecting that code will be broken again and don't want to waste time in that test ?
-
jeffro256[m]
> in practice i've run this code for 1 year now on multiple nodes, it has been bug free
-
jeffro256[m]
That's good, but it might not stay that way with future PRs and you may just not have hit a snag
-
kayabanerve[m]
ooo123ooo1234567: > infinite loop in case if code is broken
-
kayabanerve[m]
I explicitly said your test should error if the code is broken
-
ooo123ooo1234567
Maybe it's better to focus on how to make code correct instead of optimizing test case for future broken code; facepalm
-
kayabanerve[m]
Your have a poorly written test.
-
jeffro256[m]
Okay I'm getting on a flight so I'll talk later
-
kayabanerve[m]
Also, this is waiting for a condition. If that condition is 50ms away, you'll hammer a CPU thread for 50ms.
-
kayabanerve[m]
If you instead sleep for 10ms, you only make 5 requests.
-
kayabanerve[m]
If that condition should already be met, so this shouldn't need to be a loop, then make it an if statement. If it's not the case, panic
-
ooo123ooo1234567
kayabanerve[m]: code with patch will no trigger that test ever again, why does it matter ?
-
kayabanerve[m]
Tests are written on the assumption code is wrong to prove it's correct
-
ooo123ooo1234567
you're suggesting polishing of test that reproduce deep problem instead of learning the problem and studying the code that fixes it; facepalm
-
kayabanerve[m]
You're arguing for a test written on the premise the code is correct
-
kayabanerve[m]
That is a fundamental disagreeance with why tests exist which invalidate them
-
kayabanerve[m]
You've spent longer debating this then it would take for you to make your code more robust while reducing CPU utilization
-
kayabanerve[m]
If that condition should already be true, `while (condition);` -> `if (!condition) { panic(); }`
-
kayabanerve[m]
If that condition should be true in the near future, `for (int i = 0; condition; i++) { if (i == n) { panic(); } sleep(x); }
-
kayabanerve[m]
* If that condition should already be true, `while (condition);` -> `if (!condition) { panic(); }`
-
kayabanerve[m]
If that condition should be true in the near future, \`for (int i = 0; condition; i++) { if (i == n) { panic(); } sleep(x); }`
-
kayabanerve[m]
* sleep(x); }`
-
kayabanerve[m]
It's a simple change which makes your test more robust as it now tests for additional error cases it would've previously not brought up, simplifies debugging by explicitly erroring, and reduces CPU utilization (in the second case).
-
ooo123ooo1234567
just to summaries: you're debating about minor detail in reproduction for a deep problem that is already solved; you didn't participate in identifying it, didn't participate in fixing it; do you really thing that it's useful to talk about it ?
-
kayabanerve[m]
This should not be a lengthy debate, and you shouldn't have claimed this isn't an infinite loop.
-
GnetDotcom[m]
where to start in monero source code?
-
kayabanerve[m]
I literally just sent you a proposed set of modifications as my way to help you fix it
-
kayabanerve[m]
I can't comment on what n/x values you want as I don't know the timing on this.
-
kayabanerve[m]
GnetDotcom[m]: Depends on what you want to do! The GitHub is
github.com/monero-project/monero
-
ooo123ooo1234567
s/thing/think/
-
kayabanerve[m]
ooo123ooo1234567: So I do hear you saying this, which you briefly brought up in the past yet in a different way.
-
GnetDotcom[m]
kayabanerve[m]: I want to understand the code
-
kayabanerve[m]
Will the test be deleted?
-
selsta
in general i think focus should be on getting current code reviewed on correctness, optimizations to existing tests can be done at a later date
-
kayabanerve[m]
selsta: Considering this is solely in the tests, I'm fine with it being merged. I'm more debating the theory around infinite loops.
-
selsta
if the whole code isn't approved yet focusing on minor test cases isn't going to bring us forward
-
ooo123ooo1234567
kayabanerve[m]: it isn't infinite loop, read code or run it
-
selsta
it just ends in debate ans it is wrong focus
-
selsta
and*
-
ooo123ooo1234567
it's more like synchronization barrier to trigger race condition
-
kayabanerve[m]
I'm willing to walk away from this. Thanks for refocusing selsta
-
kayabanerve[m]
GnetDotcom[m]: Right, yet the question remains, *why*
-
selsta
kayabanerve[m]: sorry, i just want these issues fixed :) and i think these loops aren't a good focus currently
-
kayabanerve[m]
Because it's a very large project and it'll take you a long time to understand every component. Is there a specific bug you want to fix, a specific feature you want to discuss, a specific part you want to work with...
-
ooo123ooo1234567
kayabanerve[m]: it's called context free changes
-
ooo123ooo1234567
s/changes/comments/
-
ooo123ooo1234567
s/changes/comment/
-
kayabanerve[m]
selsta: No, no, nothing to be sorry about. It's a pointless conversation created by people who care more about arguing then solutions. Thanks for being the latter
-
ooo123ooo1234567
kayabanerve[m]: you and jeffro256 are discussing unimportant test and avoiding to discuss solution; facepalm
-
ooo123ooo1234567
s/to/checking/, s/discuss/actual/
-
ooo123ooo1234567
kayabanerve[m]: it would enough for the beginning to check actual code, you've joined jeffro256 without understanding what you're talking about
-
ooo123ooo1234567
* it would be enough for
-
selsta
anyway sech1 said he would do a review with focus on code correctness so we should wait on that
-
UkoeHB
selsta: might be good to cleanly document all the things people want to follow-up and fix
-
ooo123ooo1234567
<selsta> "in general i think focus..." <- this isn't even the case of optimization in test; there is no infinite loop
-
UkoeHB
or improve*
-
selsta
UkoeHB: i think to know if this is even something to optimize it requires full code knowledge
-
selsta
that's why we have to wait for a full review
-
ooo123ooo1234567
selsta: is it how public talk supposed to work ? everyone is telling without understanding and others blindly agree and shut up those disagree
-
ooo123ooo1234567
* up those who disagree
-
UkoeHB
selsta: the PR is never going to get updated unless there is a critical flaw, so you might as well start a list of all the code quality things to PR as follow-up
-
ooo123ooo1234567
in the mean finding polite excuses to cover their incompetence
-
GnetDotcom[m]
Where is located the PRNG in the source?
-
kayabanerve[m]
GnetDotcom[m]: The PRNG is one from keccak. I'll grab it now for you
-
kayabanerve[m]
src/crypto/random.c
-
ooo123ooo1234567
UkoeHB: No. the only 1 important comment from vtnerd was included instantly, everything else will be included only after confirmed correctness, since it's optional and much easier changes
-
selsta
yes, ooo123ooo1234567 already offered to change code style later
-
selsta
UkoeHB: but sure, if anything remains that isn't a microoptimiization we can keep a list.
-
UkoeHB
oh surprising
-
ooo123ooo1234567
UkoeHB: there is no value in talking with people that can't firstly done the hardest part before leaving unimportant comments
-
ooo123ooo1234567
<UkoeHB> "selsta: the PR is never going to..." <- with ability to exclude critical flaws it's possible to move very quickly in right direction, but with these unimportant comments even 1 such PR can't be merged
-
ooo123ooo1234567
s/merged/verified properly/
-
ooo123ooo1234567
* with ability to exclude all critical flaws it's possible to move very quickly in right direction, but with these unimportant comments even 1 such PR can't be verified properly
-
Elijah[m]
<ooo123ooo1234567> "there is no value in talking..." <- You're perfect daemon I presume?
-
ooo123ooo1234567
<selsta> "it just ends in debate ans it is..." <- it's another time when someone is commenting on something without looking into it closely. it isn't wrong focus if others will stop commenting on something without looking into it closely.
-
ooo123ooo1234567
> <@selsta:libera.chat> it just ends in debate ans it is wrong focus
-
ooo123ooo1234567
* it's another time when someone is commenting on something without looking into it closely. it isn't wrong focus if others will stop writing context free comments.
-
ooo123ooo1234567
<selsta> "anyway sech1 said he would do..." <- there is no need to wait for anything after that
-
selsta
yes, but we have to wait until he gets to it
-
ooo123ooo1234567
selsta: who are we ?
-
ooo123ooo1234567
* we ? and wait for what ?
-
selsta
well everyone has to wait until there is one full code review (e.g. done by sech1)
-
ooo123ooo1234567
<kayabanerve[m]> "Your have a poorly written test...." <- define measure of poorness, It would be interesting to compare it across different tests
-
ooo123ooo1234567
"
monero-project/monero #7760/files/925c0364d2d8823132cda8cdc84619828c8e4607#r889636515", what's the reason to add any sleeps if correct should run as fast as possible ? it will be redundant and will slow down test with arbitrary sleep constant
-
ooo123ooo1234567
you clearly don't understand the context
-
kayabanerve[m]
ooo123ooo1234567: I appreciate the PR. This is a minor nitpick about the test which isn't important. While I maintain all my theoretical commentary on infinite loops, I don't feel a need to debate this further.
-
ooo123ooo1234567
I have no questions to your comments in general, but in that particular context it isn't right
-
ooo123ooo1234567
kayabanerve[m]: I don't have questions to your theoretical opinion about infinite loops, it may be even equal to mine.
-
kayabanerve[m]
I already said I was fine moving on, this shouldn't be considered a blocker, and the discussion serves more to argue due to our struggles communicating than to accomplish anything. Dragging me back in after I've made all these statements is pointless.
-
ooo123ooo1234567
kayabanerve[m]: If it's fine to move on, then don't add into the last reply something like "I think opponent is completely wrong, but I will not continue".
-
kayabanerve[m]
I said people, not you.
-
kayabanerve[m]
I acknowledged my own faults.
-
kayabanerve[m]
But when you drag me back into this, then yes, it is you specifically
-
kayabanerve[m]
*I said people in my original message walking away from this when I deferred to selsta's accurate dismissal.
-
ooo123ooo1234567
kayabanerve[m]: without some conclusion it isn't clear even who is right or wrong, maybe it's me who wrong. But since you added supposition into your last reply, I've replied that it isn't true.
-
kayabanerve[m]
The only thing I said in the message you replied to is that dragging me back in was pointless because we settled this 20 minutes ago.
-
kayabanerve[m]
I also tried sending you a message privately to give my opinion on your communication, as I have before, because it seems a lot of people believe your skills there are much lower than your skills as a developer. I tried to reach out, in a non public setting where we wouldn't spam monero, and further acknowledged your talents and that this nitpick shouldn't be a blocker.
-
kayabanerve[m]
You can do whatever you want in this channel (including pinging me on old conversations). I'm truly done here for tonight. Feel free to reach out privately, where we don't damage this channel with off topic discussion.
-
ooo123ooo1234567
kayabanerve[m]: acknowledge through achieved objective goals is more than enough for me, I don't expect anything from others. It isn't even clear who is better without explicit competition.
-
GnetDotcom[m]
where is the BIGINT library?
-
GnetDotcom[m]
* BIGINT library located in source?
-
selsta
GnetDotcom[m]: in general you can use `git grep` to find things
-
selsta
in the codebase
-
GnetDotcom[m]
is there a backup source of entropy other than "CryptAcquireContext()" in src/crypto/random.c ??? because it might get outdated any date (
docs.microsoft.com/en-us/windows/wi…pt/nf-wincrypt-cryptacquirecontexta)
-
GnetDotcom[m]
s/outdated/removed/
-
moneromooo
There almost certainly is. They'd be really dumb to remove access to entropy without a replacement.
-
GnetDotcom[m]
<GnetDotcom[m]> "is there a backup source of..." <- This API is deprecated. New and existing software should start using Cryptography Next Generation APIs. Microsoft may remove this API in future releases.
-
moneromooo
Feel free to file a bug about this btw, so someone can add code to use the new one.
-
MeowingCat
hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
-
GnetDotcom[m]
<MeowingCat> "hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii..." <- hi
-
MeowingCat
what is CheckLinkerFlag.cmake?
-
MeowingCat
i have never seen a code like Monero
-
MeowingCat
really interesting
-
MeowingCat
i think things i have to link correctly are libsodium and boost with libwallet_merged.a
-
MeowingCat
how should i use Monero source in my CMake configuration?
-
AK5
Hello! I had a very specific question, if monerod is running from an ssd, does that ssd need 256-bit AES hardware-based encryption as some ssds lack that? Or would you insist my SSD have that feature? SSD is running on linux. Are there any dependancies in the Monero protocol that rely on 256-bit AES hardware-based encryption or can I use an SSD
-
AK5
without that safely?
-
moneromooo
It is not needed.
-
moneromooo
It is recommended that you encrypt your filesystem, but how you do so is your own business.
-
moneromooo
Monero has no idea whether your filesystem is encrypted in the first place.
-
moneromooo
monerod does not encrypt the chain itself, but monero-wallet-cli will encrypt the wallet data.
-
moneromooo
If mining (or verifying PoW), you'll want a CPU that has hardware AES if possible. Maybe you confused the two ?
-
moneromooo
In general, I would not trust a disk's encryption myself, I'd use software encryption (ie, dm-crypt).
-
moneromooo
In any case, encrypting's one filesystem is recommended.
-
AK5
I see, thank you for answering that. No, I understand that some CPU's have hardware AES (mine does), and SSD's most do have hardware AES but are expensive. The SSD is was looking at, not for mining, but for running a full node via monerod only. I will look into dm-crypt.
-
AK5
Since hardware level encryption is not necessary for running a node, I will be able to use a relatively inexpensive ssd which is still quite fast.
-
AK5
As a follow up question, in this instance running monerod, are there any read/write bandwidth recommendations?
-
moneromooo
Yes, as much as you can get.
-
moneromooo
monerod does a LOT of random acccess reads and writes.
-
moneromooo
At least for the initial sync. After that you should not have any trouble keeping up, but still.
-
AK5
I understand, thank you for confirming that. I was essentially tageting a minimum random read speed of 240000 iops and random write of 500000 iops
-
AK5
Also for capacity and performance, the most expensive 250gb with decent read/writes are the same cost as a 500gb which outperforms it, making more sense
-
AK5
I have been looking at 250gb for running a full node, but am debating weather to switch to 500gb as standard simply for the performance gain (capacity increase being incidental)
-
AK5
Wonder what recommendations you would have about minimum capacity
-
AK5
Considering that TBW (terabytes written) is also a concern
-
AK5
as well as the increasing blockchain size, efficient as it is
-
moneromooo
The chain's something like 140 GB IIRC. Or 47 GB pruned.
-
moneromooo
I don't have a size increase rate to offer.
-
AK5
Yes, I am aware. I am also estimating a growth of 40GB per year in my calculations
-
AK5
Not sure how accurate that might be
-
AK5
In any case cost is still a concern, and with significant perfomance gains with negligeble incremental costs from 250GB to 500GB, my thinking a switch to 500gb might be justified
-
moneromooo
Anyway, you may want to continue in #monero. You're in #monero-dev, which is for monero development.
-
AK5
Oh right, sorry about that. Thank you for answering my questions
-
MeowingCat
i think i found static libraries that i should link
-
MeowingCat
libwallet_merged.a, libepee.a, libeasylogging.a, liblmd.a, libunbound.a, libboost_serialization.a, libboost_thread.a, libboost_system.a, libboost_date_time.a, libboost_filesystem.a, libboost_chrono.a, libboost_program_options.a, libboost_regex.a
-
moneromooo
Might also need openssl.
-
MeowingCat
moneromooo, yesssssss
-
MeowingCat
and zlib
-
MeowingCat
g++ -std=c++14 src/monero_api.cpp $(find ../monero -regex ".+\.a" -printf "%p ") -o monero_api.exe
-
MeowingCat
im doing this
-
MeowingCat
i have to make it correct order but
-
MeowingCat
im curious about libsodium
-
moneromooo
Yeah, take it with a grain of salt.
-
MeowingCat
there is no anyting for libsodium in Monero build
-
MeowingCat
is that included in Monero static objects?
-
» moneromooo goes git grep sodium
-
moneromooo
I found it. There is something for libsodium in Monero build.
-
MeowingCat
you mean static objects???
-
MeowingCat
im looking for .a extension
-
moneromooo
If you need that and you don't have it, you'll need to build it.
-
UkoeHB
kayabanerve[m]: there is also boost multiprecision for uint128
-
moneromooo
Doh. I was thinking "there's no bigint code in monero..." and I forgot this one -_-
-
kayabanerve[m]
Thanks for the heads up. I'm honestly not sure where that's used, unless it's the difficulty code. I was aiming to give an answer comparable to ethereum
-
kayabanerve[m]
Technically the block hash is considered an integer when checking difficulty
-
UkoeHB
due to tail emission, the total supply can exceed 2^64
-
kayabanerve[m]
And scalars/field elements are just really big integers :D
-
MeowingCat
moneromooo, okiiii
-
kayabanerve[m]
UkoeHB: Also true, yet not currently coded in monero
-
kayabanerve[m]
In fact, I'm pretty sure the node will panic before then
-
kayabanerve[m]
It explicitly has a max blockchain height iirc
-
UkoeHB
kayabanerve[m]: moneromooo updated it a couple years ago so there's no overflow (the block reward part I think(
-
moneromooo
That's WAY in the future (the block height hitting max).
-
kayabanerve[m]
To think we coded in planned obsolescence and 2022 nodes won't work in 2200 :(
-
moneromooo
I'm reasonably sure it's more like tens of thousands of years at least. I looked long ago.
-
kayabanerve[m]
moneromooo: Idk, doesn't seem scalable. Will the gw basic rewrite make this a priority?
-
moneromooo
(less than tens of thousands of years ago)
-
kayabanerve[m]
I think we can easily justify an extra 10% in funding if so. It's our future!
-
kayabanerve[m]
But yeah, absolutely not a concern in practice :p
-
moneromooo
Also, while I updated the thing to handle large supply, I wouldn't bet my life there are no bugs. There's always one more bug.
-
MeowingCat
g++ -std=c++14 src/monero_api.cpp ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/lib/libwallet_merged.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/contrib/epee/src/libepee.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/external/easylogging++/libeasylogging.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/external/db_drivers/liblmdb/liblmdb.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/external
-
MeowingCat
/unbound/libunbound.a -lsodium -lboost_serialization-mt -lboost_thread-mt -lboost_system-mt -lboost_date_time-mt -lboost_filesystem-mt -lboost_chrono-mt -lboost_program_options-mt -lboost_regex-mt -o monero_api.exe
-
MeowingCat
-
MeowingCat
im getting these linker errors :((((((
-
MeowingCat
added more libraries
-
MeowingCat
undefined reference to `randomx_dataset_item_count'
-
moneromooo
Jesus... git grep, or copy the link line as I said yesterday. Pull your weight.
-
MeowingCat
moneromooo, :(( i don't understand what should i loook for in git grep?
-
MeowingCat
g++ -std=c++14 -fstack-protector src/monero_api.cpp ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/lib/libwallet_merged.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/contrib/epee/src/libepee.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/external/easylogging++/libeasylogging.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok_/release/external/db_drivers/liblmdb/liblmdb.a ../monero/build/MINGW64_NT-10.0-22000/_dal_yok
-
MeowingCat
_/release/external/unbound/libunbound.a -lsodium -lboost_serialization-mt -lboost_thread-mt -lboost_system-mt -lboost_date_time-mt -lboost_filesystem-mt -lboost_chrono-mt -lboost_program_options-mt -lboost_regex-mt -lssl -lcrypto -lz -lwsock32 -lws2_32 -o monero_api.exe
-
MeowingCat
undefined reference to `cryptonote::get_transaction_prefix_hash(cryptonote::transaction_prefix const&, crypto::hash&)'
-
MeowingCat
i have cryptonote objects
-
moneromooo
In a loop, if you get an undefined symbol S, git grep "S". If it's not a monero one, search on the web for which lib it's from. Add lib. Repeat.
-
MeowingCat
cryptonote_basic/libcryptonote_basic.a, cryptonote_basic/libcryptonote_format_utils_basic.a, cryptonote_core/libcryptonote_core.a, cryptonote_protocol/libcryptonote_protocol.a,
-
moneromooo
Or, as I said, look at what libs monero-wallet-rpc links against, and use that list.
-
moneromooo
And make sure it's in the right order (that is a pain in the ass).
-
MeowingCat
randomx_dataset_item_count thing is coming from a library called as "librandomx"
-
moneromooo
Right, you're doing it good now.
-
MeowingCat
im googling names found everything but librandomx looks like not a common thing
-
MeowingCat
i need to build it
-
MeowingCat
because there is no a MSYS2 package
-
moneromooo
It's in monero. git grep, again. It's in external, this one.
-
MeowingCat
oh okii but
-
MeowingCat
i need to do something to have its object file right?
-
moneromooo
Yeah. Build monero.
-
MeowingCat
i already built
-
MeowingCat
im looking at *.a files
-
MeowingCat
but there is no anything like librandomx
-
MeowingCat
ohh foound
-
MeowingCat
undefined reference to `google::protobuf::internal::WireFormatLite::UInt32Size(google::protobuf::RepeatedField<unsigned int> const&)'
-
MeowingCat
google????????
-
moneromooo
I'm *not* googling that for you.
-
moneromooo
Didn't know we used protobug though
-
moneromooo
lol, nice typo.
-
MeowingCat
-
moneromooo
Oh, that's probably trezor. You might want to configure without it.
-
MeowingCat
-
MeowingCat
protobuf??
-
MeowingCat
looking
-
MeowingCat
installed
-
MeowingCat
gooood libusb
-
MeowingCat
hidapi
-
MeowingCat
this thing
-
MeowingCat
unbelievable
-
MeowingCat
third party things are making me crazy
-
moneromooo
< moneromooo> Oh, that's probably trezor. You might want to configure without it.
-
moneromooo
(trezor is a hardware wallet, support is optional)
-
moneromooo
(unless you want it ofc)
-
MeowingCat
i should find the correct order of cryptonote libraries
-
MeowingCat
damnnn
-
MeowingCat
tooo few undefined reference errors
-
MeowingCat
undefined reference to `__imp_CertFreeCertificateContext'
-
MeowingCat
undefined reference to `GetNetworkParams'
-
MeowingCat
only this left
-
MeowingCat
i can't believe
-
MeowingCat
it is done
-
MeowingCat
built
-
MeowingCat
-
MeowingCat
build command
-
MeowingCat
this is unbelievable
-
MeowingCat
damn static libraries
-
MeowingCat
i think it would be easier with seeing build commands doing by build system
-
MeowingCat
now it is time to codeeeeeeeeeee
-
moneromooo
VERBOSE=1. Did I not say that yesterday ? If not, I hould have :)
-
moneromooo
Otherwise, ^Z while it links, ps.
-
MeowingCat
Monero::WalletManager::recoveryWalle() wants a "path"
-
MeowingCat
what is that?
-
MeowingCat
moneromooo, thank youuu
-
moneromooo
A path is a string of directories, separated by /
-
MeowingCat
ohh damn a filesystem path?
-
moneromooo
So either the path to the wallet file, or to the directory the wallet's in.
-
MeowingCat
for what? wallet data?
-
MeowingCat
i don't want it
-
moneromooo
What else. recoveryWallet ain't about an jpeg file is it.
-
MeowingCat
i have private seed
-
MeowingCat
im using the same private seed for ETH and BTC
-
MeowingCat
it is encrypted and stored in Godot's abstracted resource filesystem
-
MeowingCat
i just need to recover wallet from seed
-
MeowingCat
and build/sign a TX
-
moneromooo
If you do not want to store that wallet in a file, you can pass "" IIRC, and it'll keep it in memory.
-
moneromooo
I added that for tests mostly, but it works also outwith tests.
-
MeowingCat
i will use libwallet for only TXs because i already implemented key derivations in C# i will use it
-
MeowingCat
Monero::Wallet* w = wm->recoveryWallet("", "...");
-
MeowingCat
im doing this
-
MeowingCat
butt std::string result = w->mainAddress(); is causing SIGSEGV :((((((((((((((((((((((
-
moneromooo
I assume you were taught about checking for errors ?
-
moneromooo
Like, returning NULL...
-
MeowingCat
ummmmmmm
-
MeowingCat
you mean
-
MeowingCat
w is NULL?
-
moneromooo
Oh, good point! It might be!
-
MeowingCat
i didn't think thattt
-
moneromooo
Monero logs various things, if you ask for them.
-
MeowingCat
i can't use my debugger for Windows
-
MeowingCat
because it doesn't support Windows :(((((((((((
-
moneromooo
OK, maybe monero is a bit too advanced for you then.
-
MeowingCat
i will use VSCode
-
MeowingCat
-
moneromooo
(set MONERO_LOGS=2 and you'll get logs)
-
MeowingCat
you can use it on Linux for Monero development
-
moneromooo
(an env var)
-
MeowingCat
if you have specific feature requests for Monero debugging tell meeeeeee
-
moneromooo
Fixing the logged stack traces. They tend to stop being useful and output just addresses, not symbols.
-
moneromooo
That could do with being more dependable.
-
MeowingCat
ummmmm wdym with logged stack traces???
-
moneromooo
nvm
-
MeowingCat
ohh you mean GDB shows only function addresses for stack traces?
-
MeowingCat
my debugger has more features than usual things
-
MeowingCat
i will do Windows support too buttttt i have to implement async mode for GDB on Windows
-
MeowingCat
because GDB doesn't have async execution mode in Windows
-
MeowingCat
here is a demonstration for an old version
youtube.com/watch?v=4SezdE2Z130
-
moneromooo
nevermind, it's not about gdb
-
moneromooo
and not worth the time
-
MeowingCat
Monero is huge im curious about how my debugger would work for Monero debugging
-
MeowingCat
i will try it on Linux to understand the creation of Monero transaction
-
MeowingCat
and i will implement it in C with zero dependencies
-
MeowingCat
zerooooooo third party thingssssss
-
moneromooo
That'd be a worthy achievement.
-
MeowingCat
i prepared VSCode for debugging
-
MeowingCat
wallet is not NULL
-
MeowingCat
Monero::Wallet::mainAddress() is causing SIGSEGV somehow
-
MeowingCat
std::string mainAddress() const { return address(0, 0); }
-
MeowingCat
here
-
MeowingCat
is this thing an HD wallet thing?
-
moneromooo
Well, you get to debug. I'm not familiar with the wallet_api API.
-
MeowingCat
maybe this is about empty path?
-
MeowingCat
isn't Monero memory-safe?
-
MeowingCat
why am i getting segfault
-
MeowingCat
is there a place to broadcast signed transactions?
-
kayabanerve[m]
MeowingCat: There's remote nodes and
xmrchain.net/rawtx
-
MeowingCat
thank you
-
jeffro256[m]
> is there a place to broadcast signed transactions?
-
jeffro256[m]
If you run a node, I'd say that