-
***
Buffer Playback...
-
UkoeHB
[21:53:41] jberman[m]: editing messages in matrix causes spam on the irc side
-
jberman[m]
[21:54:18] ah, ok sorry. I'll stop
-
sethsimmons
[02:20:17] Thanks for the context, jberman, very helpful!
-
sech1
[10:37:18] Are there any examples/documentation on how to use ZeroMQ RPC with monerod?
-
sech1
[10:41:10] or is ZMQ not maintained at all?
-
TC17
[11:22:46] Is there an archive for past chatperusal?
-
vtnerd
[14:47:43] sech1 : is it maintained
-
vtnerd
[14:47:49] *it is
-
vtnerd
[14:48:14] theres some docs about PUB/SUB in `docs/
-
vtnerd
[14:48:34] and
github.com/vtnerd/monero-lws has a working example of RPC and PUB/SUB
-
vtnerd
[14:49:08] fwiw, someone just contacted me about some CCS work, and gave them several options and they (may) be adding msgpack support to zmq
-
vtnerd
[14:49:48] I wanted to see the perf numbers first ... but zmq is json only and the frequent bin->hex conversions are a decent penalty among other things
-
vtnerd
[14:50:52] it'd also be nice to spit spit out schemas automatically, but describing how todo that task to others is difficult enough
-
vtnerd
[14:51:14] but src/serialization/json_object.cpp is currently the one way to tell the structure of the json
-
vtnerd
[14:51:31] for both PUB/SUB and RPC
-
vtnerd
[14:54:02]
github.com/vtnerd/monero-lws also uses zeromq but its abstracted a bit
-
vtnerd
[14:54:12] it uses both RPC and PUB/SUB Now
-
sech1
[14:57:15] vtnerd thanks. I'm mostly interested in using zmq to replace daemon polling when solo mining with xmrig. zmq has "new block on main chain" notification as far as I can see from the code
-
vtnerd
[14:59:35] correct, updating xrmrig was on my todo list, but if you did it awesome
-
vtnerd
[14:59:46] there's two block notification modes, one "light" and one "full"
-
sech1
[15:00:04] yes, polling is inefficient - it introduces delay between monerod getting new block and xmrig starting to mine on top of it
-
sech1
[15:00:12] it's on my todo list for next week
-
vtnerd
-
sech1
[15:01:09] I only need "light" notification, it seems. Then xmrig can just call getblocktemplate RPC
-
vtnerd
[15:01:33] yes, you get block height, previous_hash, and an array of hashes
-
vtnerd
[15:01:52] the array is in case of reorg it could (but not yet) send all of the blocks at once
-
vtnerd
[15:02:18] there's some code elsewhere in the daemon that I punted on that, but the made the schema support it
-
vtnerd
[15:02:25] *but then made
-
sech1
[15:03:34] I only need block height and previous hash to know if I need to call getblocktemplate
-
vtnerd
[15:06:14] yup, I made that mode for mining basically
-
vtnerd
[15:06:42] let me know if you need a "heartbeat", because one thing that is annoying with ZMQ is that it doesn't "out-of-the-box" tell you when disconnects occur
-
vtnerd
[15:07:15] I think there might be an option that does this though, dont remember
-
vtnerd
[15:07:45] otherwise you end up with "longer" polls (why hasn't a block happened in 5 mins?) or the daemon pushes something out every 30 seconds
-
sech1
[15:07:52] I have no idea how zmq work. Is it just a json protocol? Then xmrig has built-in support for json and can handle disconnects
-
vtnerd
[15:08:13] zmq is agnostic to the protocol format, so its whatever we want which is currently json
-
sech1
[15:08:35] I guess I'll find out when I start implementing it
-
vtnerd
[15:08:41] the zmq protocol itself is binary and has a length field for transmitting arbtirary data
-
vtnerd
[15:09:23] the PUB/SUB requires setting an option on the socket to "subscribe" to a topic
-
vtnerd
[15:09:44] the one requirement per the protocol is that this string must be present at the beginning of messages
-
vtnerd
[15:10:29] so the message as ZMQ provides will be `json-minimal-chain_main: {...}` where `{...}` is a JSON object
-
carrington[m]
[16:52:25] Community meeting in 8 mins to discuss CCS and other things:
-
carrington[m]
-
ErCiccione
[17:24:30] boy19: it definitely is. Take a look at
github.com/monero-ecosystem for example
-
vertion
[17:30:44] Hi! I was wondering if there was any conversation regarding code licensing for the CCS? I am waiting for them to be licensed before importing them into our vertcoin-project repository. As for the original dev's approval, I heard back from rehrar who believed it would be added soon and that it's up to the Core team to add it. I haven't seen xiphon around but can email them to join a conversation and I'm not sure who Devin is.
-
vertion
-
moneromooo
[17:32:10] Devin is an employee of one of fluffypony's companies (globee I think), so you want to ping the pony.
-
ErCiccione
[17:34:12] That projects collect a number of repo from different community members. Take a look at whatever catches your interest
-
ErCiccione
[17:42:12] sure. Depending by what you would like to help with, you could open an issue or ping woodser here
-
ErCiccione
[17:44:14] definitely, yeah
-
coinstudent2048[
[17:49:54] boy19: You will be fine with git. My only knowledge in git hahaha: fork the repo, git clone, do your thing, git commit, git push. git diff for edits, git status for added/removed files. Something bad happened: search for "Git Tools - Rewriting History" (then git push -f) hahahaha
-
***
Playback Complete.
-
vertion
Okay, I emailed xiphon the link to the ccs-front issue regarding licensing.
-
vertion
ping fluffypony
-
vertion
Could you possibly ask Devin to weigh in here regarding licensing for the CCS?
repo.getmonero.org/monero-project/ccs-front/-/issues/5
-
boy19[m]
I still need to learn how to use github, with that considered, is it still realistic that I can contribute?
-
boy19[m]
Aloha,
-
boy19[m]
I was trained as a programmer, worked in web design with PHP/SQL for a few years, but havent coded in 10 years. Is it possible for me to contribute if I try really hard?
-
boy19[m]
thanks for the encouragement.
-
boy19[m]
however, how can I find a task to work on?
-
boy19[m]
the projects are so big. Cant someone tell you what to do?
-
boy19[m]
-
boy19[m]
is there a way I can request to contribute?
-
boy19[m]
ErCiccione: Thank you, what section should I read first?
-
boy19[m]
can someone say "write this function...." and I go away and try and do it? Is such a structure possible?
-
coinstudent2048[
boy19: Sorry I am somewhat similar to your state right now. I can only do Python well right now (finding time to learn other languages like C++ and Java). I am also finding ways to contribute in. For now, in repositories, go to its "issues". Those are the repository's "problems."
-
boy19[m]
coinstudent2048: maybe we should study together.
-
boy19[m]
Oh, sorry for being a ass. Im just lonely.
-
t-900-a
<coinstudent2048[ "boy19: Sorry I am somewhat simil"> Advanced python? If so, this is a good issue:
monero-ecosystem/monero-python #73
-
moneromooo
"write this function" is possible in some cases, but usually not.
-
moneromooo
At first approximation, it's possible in some specific self contained domains, like crypto (write a fast function that takes keys and does whatever).
-
moneromooo
Or small bits really. But non trivial stuff typically requires more "interaction" with other code.
-
moneromooo
Unit tests are also well suited to that, but I think most parts that can be unit tested fairly easily already are.
-
moneromooo
Most other stuff tends to be about modifying existing code.
-
moneromooo
Though I'm talking about monero itself here mostly, maybe easier to find something like that where ErCiccione pointed to.
-
coinstudent2048[
t-900-a: well not very advanced, but I'll check this one and try to work on it! Thanks!
-
boy19[m]
moneromooo: Thanks for your reply.
-
boy19[m]
The key thing is, if you dont know what to do and you want to contribute, finding a starting point seems daunting
-
moneromooo
What I usually suggest (and it's what I did myself) is to use the software, find something small that doesn't work quite right, and fix it.
-
moneromooo
But it's modifying existing code typically.
-
boy19[m]
thats a good idea, that would mean downloading a desktop or mobile app right?
-
moneromooo
Yes.
-
boy19[m]
clearly crypto is a the future, so we need to be here
-
coinstudent2048[
boy19: Since you already have experience (web design right?), I think you just need to get updated in the tech. I also find that daunting, but hmm... sorry I don't know what to advice, so I'll just say good luck!
-
anarkiocrypto[m]
You can check here for Monero web development (e.g. Patreon, online stores, web wallets): #monero-punks:libera.chat I'm also a full-stack webdev including PHP/SQL.
-
boy19[m]
anarkiocrypto: coinstudent2048 thanks guys
-
boy19[m]
anarkiocrypto: you must be loving it with the current global situation, programmers are like kings now
-
anarkiocrypto[m]
I am doing the same type of remote work for crypto since 2016.
-
anarkiocrypto[m]
Increased corona statism is a negative for everyone, but this probably isn't a topic for Monero Dev chat.
-
jberman[m]
moneromooo: Do you have non trivial things in mind that would require large changes across core code? I’m talking to vtnerd about the aforementioned tasks he had in mind (zeromq supporting msgpack instead of json for performance + auto generating json-schemas) and thinking of including them + whatever else would be valuable in a CCS proposal once I’ve got a strong understanding of the scope
-
coinstudent2048[
boy19: afaik moneropunks also has forum.moneropunks.org . Ok I'll be out now!
-
moneromooo
Non trivial stuff requiring large changes.... Well... Not off the top of my head but I'm sure there are a number of these things :)
-
moneromooo
Reading github issues is sure to find a few.
-
moneromooo
Oh, yes: making the wallet cache a lmdb file would be nice. Someone said htey'd do that a few months ago, no news since.
-
moneromooo
And using a rw lock for the Blockchain class instead of a mutex.
-
moneromooo
That last one is probably best left to someone with good knowledge of the monero code though.
-
moneromooo
Ah, vtnerd had suggested authenticated encryption for the wallet cache.
-
jberman[m]
I've got decent knowledge of it :) will check these out as well
-
moneromooo
OK :)
-
moneromooo
The daemon RPC is also not really thread safe.
-
moneromooo
I'm not sure how much of a problem it is in practice though.
-
moneromooo
Stuff like getinfo can get you inconsistent data, technically.
-
moneromooo
Like, read curent height, block gets added, read current difficulty.
-
moneromooo
In fact, this one's trivial to fix.
-
moneromooo
If we want to fix it.
-
moneromooo
We probably do I think...
-
moneromooo
If you have two NICs, there's an old issue about being able to select which NIC to use for outgoing data.
-
selsta
wallet_api also seems to have thread related issues according to
oxen-io/oxen-core #1466
-
hyc
eh, getinfo should be using a single read txn around all of its steps
-
hyc
it shouldn't matter if a block gets added while it's executing
-
jberman[m]
-
hyc
looks like it
-
hyc
also, ideally there would be no blockchain mutex or rw lock. Just use the DB txns to control concurrency
-
jberman[m]
you're saying a single lmdb read txn, right? some of those functions inside on_get_info are reading from memory looks like, not touching lmdb
-
hyc
the blockchain_db implementation could use a mutex or rw itself if it didn't support txns. Both BerkeleyDB and LMDB support txns so no need for it here
-
hyc
yes, but those items they're fetching from memory appear to be unrelated to the blockchain anyway. like connection counts
-
hyc
so yeah, there ought to be a block_rtxn_start() call near the beginning and an rtxn_stop() call near the end of that
-
hyc
I guess that function has now been wrapped in db_rtxn_guard
-
hyc
so many layers of wrappers, geeze
-
jberman[m]
this seems simple enough
-
jberman[m]
thank you guys :)
-
jberman[m]
will look into all the above
-
gingeropolous
sech1, xmrig is using daemon polling? O_O
-
gingeropolous
perhaps we should add a "how to get started coding on monero" in the initial contributing header in the readme. all it currently does is link to contritbuting.md. moneromooo , do you mind if i paraphrase your words if i ever get around to it?
-
moneromooo
Sure.
-
sech1
gingeropolous as far as I know, even pools use daemon polling
-
vtnerd
there was no zmq stuff until recently
-
vtnerd
so the workaround was the process notification, usually a signal
-
vtnerd
jtgrassie's mining pool software was one of the few that supported such a thing before zmq was added
-
luigi1111w
.merges
-
xmr-pr
7349 7748 7753 7754 7761 7762 7764
-
luigi1111w
.merge- 7349
-
xmr-pr
Removed
-
gingeropolous
hrmm... chained tx churning ...
-
boy19[m]
anyone know a specific spot of contribute with php?
-
boogerlad[m]
this might be a stupid question, but why benefits are there of lmdb over the existing implementation?
-
boogerlad[m]
and also, why not sqlite?
-
boogerlad[m]
* this might be a stupid question, but what benefits are there of lmdb over the existing implementation?
-
selsta
we don't use sqlite, we do use lmdb already
-
boogerlad[m]
what uses lmdb currently? From the previous conversation, it seems like the wallet cache does not use lmdb atm
-
selsta
the blockchain
-
boogerlad[m]
I see. is sql in general not appropriate for all monero related stuff? I haven't used lmdb before, am curious about what its benefits are
-
selsta
performance is important
-
selsta
currently some custom serialization code is used for the wallet cache as far as I know
-
tobtoht
ringdb also uses lmdb (to name something specific to the wallet)
-
selsta
sqlite could be used for the wallet but we don't have any dependency on it currently so it doesn't really make sense if we can just use lmdb, sqlite for the blockchain would result in horrible performance
-
boogerlad[m]
what does the data structure "look" like? trying to wrap my head around how a key value store is sufficient for something as complex (to me)
-
boogerlad[m]
* what does the data structure "look" like? trying to wrap my head around how a key value store is sufficient for something as complex as monero (to me)