hell yeah
i'll make sure to attend to nip-17 in replicatr once i get this thing hummin
nostr:nprofile1qqsdlumwtmnqqdqnhzn2yc2azuftg57z380wq47fp62pds7tme2n7gsppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgnwaehxw309ahkvenrdpskjm3wwp6kytcjt2gde i just got nip17 workin in golang btw. there waz libs for it and somehow i did it🦍🦍🦍. it seems insane but then it starts working and its like 😎
hell yeah
i'll make sure to attend to nip-17 in replicatr once i get this thing hummin
ya, theres actually support for it in go-nostr which was copied from this other library but slightly easier to use.. anyway... should prob PR the nip44 docs or something.. lol
well my code has diverged a lot so good heads up i'll go look at the state of go-nostr and drop the nip-17 stuffs into my new codebase stat
i learned about go vanity import URLs btw... just a meta tag with a special syntax that go tool reads and redirects to a different URL, so you can make nice ones like the one i've made, https://git.replicatr.dev
https://github.com/nbd-wtf/go-nostr/tree/master/nip44
yeah, this is the thing you refer to
you go to nip-17 and it says "see nip 44 and nip 59" i see no nip-59 in go-nostr so it must only be about nip-44
yeah, not surprised, the original #golang implementation did not work, it created or incorrectly validated the HMAC
that is why i have been so salty about the whole thing for a while... the proof of concept in PYTHON? wtf bro who writes serious cryptography in python?
oh yeah, bip-340 also had this shit
ffs write it in C or gtfo lol
really, the Go version is the easy one to read and understand

well, the orig one *did work after having to decode the pubkeys and compress/serialize them with a "02" added and i had no idea why just saw that in the test.. to generate conversation keys. go-nostr is nicer cause it just accepts the keys without having to do all the decoding yourself..
it was github.com/ekzyis/nip44
ah, yeah, that would have broken the damn hash lol
anyway, i have to rewrite this to work with binary forms of the keys, i was already looking at the ecdh function in there thinking to myself "this should not be working from hex because i've changed everything to use the actual bytes internally now)"
there's gonna be a lot of proofreading and checking for me to do to get rid of all this hex shennanigans... in my nostr library and in replicatr code the hex is wire encoding and internal encoding is native bytes... there should be a way for me to do the ECDH for this stuff without any stupid translations, i guess i'll be stuck half a day looking through the secp256k1 C library to add this to my p256k library... it is worth it - the verification is 5x faster and the signing is like 3x faster so for serious usage it's a no brainer (eg network transports)
that thing is totally stupid though because that's how BIP-340 works, all the keys are even numbered, so the 2 is there implicitly, it is the second parameter, which only says if the point is negative or positive, it is the Y coordinate iirc, you may have seen "x-only pubkey" somewhere, that's what it means
the way it works is when you make a secret key, you derive the pubkey, if it is negative (would have a 03 prefix in hex 33 byte standard version) then you invert the secret key and it makes the key even and 02 and then you can do standard operations without needing that extra stupid bit
Speak English you nerds
my words are more english than the retards who i had to decipher the meaning of this so i could work with it
Dev talk is not English 😂 I like to ease drop on threads so I would appreciate if yall would dumb it down a bit
it's all just arithmetic, in fact, sign, odd/even, special forms of multiplication and division, the way that they write about it makes it a lot more confusing than it actually is when you cut through that
i don't obfuscate my meaning, i simplify it, because that's how i remember these things
one of the things that i think would help a lot with teaching people how cryptography works is scaling it down - they should show how a 32 bit elliptic curve signature works, then you would grasp it much easier what happens at 256 bits
Nostr ted talk? I want slides 😂
yeah, it would be cool
i had an awesome spanish cryptographer lady doing a presentation once at my job with dusk.network - she explained arithmetic groups in such a beautiful way, from first principles
it was so good and good luck finding an explanation of arithmetic groups as good as hers was
i understand it abstractly as a kind of "overlay number matrix" but yeah it's the basis of elliptic curve signatures and shared secret derivation (diffie hellman)
all the concepts can be compared accurately to simpler versions that you can work in small numbers of digits and simple junior highschool algebra
anyway, it's not important to know it in detail to use the libraries written by the galaxy brains who understand the big versions in detail
The abstract concepts are my strength in development comprehension.. the literal/technical components; however, 💩💩💩💩💩💩💩💩💩💩
🤣 it’s definitely not English
Right? I’m like, “TELL ME WHAT YOURE TALKING ABOUT BEFORE THE COMPUTER GETS SQUIRT” 🔫🔫🔫
i can't have a conversation with someone who doesn't have basic algebra skills about this, it's fundamental
2x+2=6
x=2
*drops mic*
ok, next thing you need to understand is clockwork arithmetic
this is math where when the number blows past some boundary it wraps around to zero
it's called clockwork arithmetic because the field (set of numbers or range of numbers) is finite, thus they call them "finite fields"
when you make a calculation with these numbers, as they overflow they create a "trapdoor" where you can't guess where it started but you can easily find the way there if you know the starting point and the factors in the equation
this creates entropy, or randomness, that cannot be undone without knowing that secret, but also, in the case of elliptic curves and RSA/DSA signatures you can check that the source number was a secret someone else has, without being able to reverse the secret
it's too complicated for me right now, i have to fix this stupid code to use binary instead of hexadecimal... it's actually removing code i'm doing here, because it's just fucking retarded, like code passing around numbers as decimal strings and then converting them into binary to calculate and then back to decimal to return
anyhow, enough!
suffice it to say, that the "experts" use ways of describing what is going on that makes it seem like voodoo but really it's just algebra and arithmetic
Oooooooooo I think I’m getting some of it. Y’all aren’t talking just normal development. That’s whyyyy you’re talking about algebra and then entropy, because you’re implementing cryptographic elements for verifying identity and signing events?
yup, it's what makes this stuff unruggable
users authenticate themselves, you can verify everything, it isn't "trust me bro", it's MATHEMATICS!
lmao, this is too funny, im always surprised when anyone be reading this is.. is it nostr shitposter's day off in your feeds that bad? 😂😂😂 embrace the insanity, amethyst should maybe support labels for #devtalk like it does for #nsfw 🐛😇
well, these are our fans! they don't know what we are saying but they like what we are doing, sometimes they try to join the conversation
it's a good thing, in normie world, this kind of stuff is incomprehensible and should not be talked about, keep it separated!
which is stupid because it's just math and logic and shit, and if that's not inside the overton window we truly live in idiocracy
so i say, good i don't mind having brainy people who aren't good at math or logic but sorta grasp it come and ask questions, it brings the teaching side of it in, and it's important
i have needed to teach several key concepts to my junior colleague in my work and this is like practice
I tried to hide it long enough, but yeah…obviously I’m a little interested in what y’all are up to and learning at my own pace😂
teaching and training are things i have spent a fair bit of my life doing, especially during the time i did tech support, and i think i have a talent for explaining things in ways that make learning easy and fun
i remember one especially proud moment when i was like 17, and i had mastered the Ollie Impossible, a trick that involves making the board spin around your back foot above the rear trucks, sideways, and this dude asked me to teach him, and before half an hour he was landing them because i watched him and perceived what he neded me to explain how to modify his movement so he could do it
but yeah, many times taught people to use computers, it's not well paid work compared to troubleshooting, which is way less well paid than programming, but i am good at it, if i had a chance at a long term tenure in such a job i'd go for it, it is very satisfying when you see the lightbulb come on in someone's mind
It’s gonna take a long time and I don’t necessarily want to participate in development, but we are probably heading towards needing to run our own instances of everything to comprehension will probably be quite useful. I also appreciate it when yall take the time🫂
Is this hard problem around arbitrary-base big numbers factorization or I didnt understood?
well, my understanding of it is simply that by overflowing the numbers you break the reverse relation to the source numbers
you can easily compute them if you know the numbers, but if you don't, and all you have is the outputs, the number of possible guesses required to find the numbers is impossibly large
but yes, i think it's called the "discrete logarithm problem"
i think that is a deceptive name because as far as i can tell, it's the finite field that defines the math, not the integer part, the integer part is sorta encoded in the expression "discrete" meaning - more or less - integer arithmetic
if you did the same calculations but didn't make them overflow at an arbitary field length they would be reversible
No worries, working on something that might cater to adhd - learn dev code and terminology as you continually dive down the rabbit holes you find most interesting.
ah, yep i was trying to understand why it kept saying x of pubkey was not on the curve.. then adding "02" to make it work.. yeah lol, the stuff is a bit beyond me im just trying to use the encryption not be a cryptographer. cool that you understand this stuff. 😎 go-nostr was nice enough to just use the damn keys 😅
i did not expect it to be so retarded it expected the fucking sign byte prefix to do its stuff, i specifically have written all kinds of code to avoid that necessity in all my BIP-340 schnorr signature code
it's unfriendly code, and whoever wrote it wosn't thinking about anyone else using it
ya 59 just describes the giftwrapping technique i think, which you can see how that works in the nip17 anyway so not really a lib there just nested eventing..