Replying to Avatar cloud fodder

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

Reply to this note

Please Login to reply.

Discussion

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)

i am tryin to resist the urge to write a golang terminal UI for nip17 dms now 🫠🎇

the last one i did, i used tcell v2.. 🤔

er, no i guess it was gocui that uses tcell v2. it worked pretty good..

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🫂

I need to see a clip of you doing an impossible now!

haha, i probably can't land them anymore, but i think i was able to do it last time i had a board, about 6 years ago

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

I'll put again my head on math when I will be able to trash fiat job and regain my time.

i promise you won't regret it

you probably maybe are even right this moment getting an inkling that this knowledge is rare and valuable

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.

You’re like the best person on nostr

Awe shucks 🥰

Seriously, lemme know when you done. I will be your first tester/user

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..