-
sgp_
sarang: Thorchain is expecting to use multisig. They modified the Monero wallet to include parallel generation
gitlab.com/thorchain/tss/monero-sign
-
sgp_
this sort of RPC functionality is going to need to be better integrated to the extent possible since I know a few projects plan to run with this implementation
-
dEBRUYNE
sgp_: Is this referring to the Triptych research sarang is conducting?
-
sgp_
dEBRUYNE: yeah
-
sgp_
looks like Thorchain is doing some pretty interesting things, but also that it could have inadvertent effects on the network. Some initial context first:
-
sgp_
They modified the Monero wallet to add additional RPC commands for multisig wallets. You can see that here:
gitlab.com/thorchain/tss/monero-sign
-
sgp_
Then, they are hoping to require users to send transactions to Thorchain using a long tx_extra string
-
sgp_
I've been speaking with them for a few hours trying to figure out how to solve this out of band so they don't have to use tx_extra, but they are shooting down many of the other ideas. They seem intent on wanting to use it
-
sgp_
I will keep trying to come up with something else that works for them
-
moneromooo
Is this a bullshit use or an actual interesting use of extra ?
-
sgp_
it's the simplest way to integrate what they want to do for an actual use-case, so it's not totally bullshit. But there are should be cleverer ways to communicate without using tx_extra
-
moneromooo
But what do they want to do ? :)
-
sgp_
they want the sender of the transaction to indicate their intent in the transaction itself, since the recipient is a consortium of nodes that need to be able to verify that the other nodes are acting non-maliciously
-
sgp_
tx_extra would look like ADD:XMR.XMR:<thorchain_address>
-
moneromooo
How much data in the intent ?
-
sgp_
ADD:XMR.XMR:thor1krcz33mejvc5f6grj2c5w5x3kuj7mnjhgqltj8
-
sgp_
ADD:XMR:thor1krcz33mejvc5f6grj2c5w5x3kuj7mnjhgqltj8
-
sgp_
examples would be the two above
-
sethsimmons
Encrypted or plaintext?
-
sgp_
plaintext probably
-
moneromooo
Are ADD and XMR placeholders ? If so, 3 chars each ?
-
sethsimmons
oof
-
sgp_
the format they use is `ADD:XMR:XMR`, but since XMR is the base asset, they are open to shortening it to `ADD:XMR`
-
sgp_
for adding BTC liquidity it would look like `ADD:BTC:<thorchain_address>`
-
sgp_
except Bitcoin can't store that much info either
-
moneromooo
One can plonk encrypted 32 bytes in a BP+. 8 bytes in an encrypted pid.
-
moneromooo
The "thorchain_address" is 32 bytes I assume ?
-
sgp_
I'm confirming
-
moneromooo
(there's no tooling atm for BP embedding, but I'd want to do that anyway)
-
sgp_
the address string looks longer than 32 bytes no? thor1krcz33mejvc5f6grj2c5w5x3kuj7mnjhgqltj8
-
sgp_
43 bytes? 39 without the `thor`?
-
moneromooo
Decoded, obviously.
-
moneromooo
Like monero addresses are 64 bytes but the user address is like 98 chars or whatever.
-
moneromooo
keys.
-
sgp_
ah, I'm too dumb to know this stuff
-
sgp_
there are 2 main commands: `ADD` and `SWAP`
-
sgp_
`SWAP` would look like `SWAP:CHAIN.ASSET:DESTINATION:LIMIT:AFFILIATE:FEE`
-
sgp_
so there's quite a bit of text there
-
sgp_
eg: `SWAP:THOR.RUNE:tthor1zpa4c6zpa4cyz9s93xuje2pwkswsqzn2zpa4c:3141441780:tthor1ql2tcqyrqsgnql2tcqyj2n8kfdmt9lh0yzql2tcqy:10`
-
Inge-
transactions are so cheap you just send a dozen
-
sgp_
they definitely can send this data with tx_extra, but obviously I would like a way around that
-
sgp_
and they don't really want to complicate everything on their end where possible
-
moneromooo
Well if this becomes used, the addresses seem to be a good way to link monero txes, so that'd be a very good reason to kill extra once and for all.
-
moneromooo
Kinda sad about it though.
-
sgp_
fwiw, they will leak all info anyway with the receiving monero wallet, which will publicly share view keys and key images
-
moneromooo
Oh, evil bastards...
-
sgp_
leaving aside tx_extra for now, let's talk about multisig
-
sgp_
this is where an expert will need to review what they have done
-
sgp_
they modified the C++ code to add new RPC commands
gitlab.com/thorchain/tss/monero-sign
-
sgp_
sign_multisig_parallel, export_sigkeys, accumulate_multisig, check_transaction, save_pool_wallet
-
sgp_
who would know how to look at this? rbrunner ? vtnerd ?
-
UkoeHB
current monero multisig code uses 'round robin' signing, where signers have to send serial messages; however 'aggregation' signing is more efficient - a more 'parallel' approach; they could be using this in thorchain
-
sgp_
Yeah that's my understanding - they are using a more parallel approach
-
UkoeHB
the concept is legit, idk about their implementatin
-
sgp_
Is this something we should try to add to the main codebase
-
sgp_
Someone would need to review theirs
-
sgp_
ugh I can't even comment here, this is annoying af
monero-project/monero #6668
-
gingeropolous
ugh tx_extra. sgp_ , pastebin what you wanted to post on the thread and i or someone can copypasta
-
UkoeHB
Yes multisig needs several updates
monero-project/research-lab #67
-
sgp_
-
gingeropolous
-
sech1
are tx extra not encrypted at all?
-
gingeropolous
correct
-
gingeropolous
its just cleartext, anything goes
-
sech1
and max length is 255 bytes, interesting. I need to spam some stuff for eternity before too late :)
-
gingeropolous
-
sech1
mining pools use tx_extra to distribute work between miners
-
sarang
FWIW someone _could_ choose to encrypt that data, but it's not enforced by consensus (and can't be if intended to be private to a recipient)
-
gingeropolous
i think we can hack it such that coinbase can still use tx_extra , would address mining pool issue
-
hyc
wait what? how do mining pools distributed work with tx_extra?
-
gingeropolous
i think sech1 meant payments
-
hyc
they're not generating txs except on payouts?
-
sech1
extra_nonce field
-
sech1
You can't just have 10,000 miners using the same 32-bit nonce space
-
sgp_
this is the first I'm hearing of mining pools using this
-
sech1
every connected woker gets their unique extra_nonce
-
endor00[m]
<sgp_ "this is the first I'm hearing of"> you mean pools using extra_nonce?
-
endor00[m]
Been there since bitcoin
-
sech1
All pools use this, ask Snipa or M5M400
-
sgp_
it's on me that I didn't know, but I am just now learning yeah
-
endor00[m]
Can't have it any other way, since you only have 4 billion nonces before having to switch to a new block template
-
hyc
extra_nonce is in block header, not per-txn
-
hyc
??
-
sech1
extra_nonce is a part of tx_extra in miner reward tx
-
moneromooo
You could regen the ouput per miner :)
-
sech1
this is how I can fingerprint mining pools and even solo miners
-
endor00[m]
The xmrig-proxy splits the nonce range using the top 8 bits on the other hand, right?
-
sech1
yes
-
sech1
it creates new connection to the pool per each 256 workers
-
sech1
NiceHash does the same
-
gingeropolous
<sech1> extra_nonce is a part of tx_extra in miner reward tx >> hrm, and the miner reward tx is NOT the coinbase huh.
-
hyc
??
-
sech1
it is coinbase
-
moneromooo
How do you know ? Is monero anon so bad you can tell ?
-
sech1
-
sech1
and line 87 there
-
hyc
still not getting it. extra_nonce is an input to getblocktemplate
-
hyc
that's not per-tx
-
hyc
so what's the point of copying this to the tx_extra?
-
gingeropolous
sorry, i was thinking about the pool miner payout tx, not the protocol miner reward tx.
-
sech1
It is currently part of miner tx
-
hyc
where it will only show up if the pool actually mines a block
-
sech1
That's what pools do
-
hyc
but it only shows up there after the fact.
-
hyc
still not seeing how it is used to distribute work
-
hyc
yes, extra_nonce is used for that
-
hyc
but that is specified in getblocktemplate, so every miner works from a unique template
-
sech1
extra_nonce is not directly in the miner's mining blob
-
hyc
it doesn't matter what goes into tx_extra
-
sech1
but merkle hash of all tx's in the block is there
-
sech1
so if you change extra_nonce, you have to update merkle hash
-
sech1
this is how different workers get different mining blobs
-
sech1
so in theory you could get away without extra_nonce just by shuffling transactions in the block
-
sech1
doesn't help when there are not transactions to mine :D
-
sech1
*no transactions
-
moneromooo
The pools modify hte template afterwards. See reserved_offset.
-
moneromooo
They put a 32 bit value there IIRC (at least the zone117x one did).
-
sech1
I think it's not used in Monero anymore
-
moneromooo
OK, how do they do it now ?
-
sech1
getblocktemplate RPC explicitly has extra_nonce parameter
-
sech1
-
moneromooo
jtgrassie's pool (which I have the code to here) does it, I just looked.
-
sech1
reserve_size is not there anymore IIRC
-
moneromooo
Not endian friendly but I guess it actually doesn't matter...
-
sech1
nope, reserve_size is still there, just xmrig uses extra_nonce in solo mode
-
sech1
anyway, blockhashing_blob doesn't have this extra_nonce or reserved_offset buffer. It only has merkle hash
-
hyc
ok I see that now
-
sech1
so every time you change blocktemplate_blob by filling in reserved buffer (extra_nonce), you have to update merkle hash
-
sech1
and this reserved offset actually points to somewhere inside tx_extra field in miner reward tx
-
hyc
so for solo mining you generally don't need it. but e.g. the monerod miner still has options to let you set it
-
gingeropolous
-
gingeropolous
-
sech1
it's called pool payout
-
gingeropolous
ok
-
jtgrassie
hyc: correct, there's not a need for reserving space in the miner tx when solo mining
-
jtgrassie
it's just pools that need to, so they can create unique jobs from the same set of txs (block template)
-
jtgrassie
"extra_nonce", "reserved_size"... same thing different naming. Both just refer to tx_extra data in the miner tx.
-
sgp_
for Thorchain and the tx_extra problem, I think it makes most sense to say on the Thorchain blockchain that a certain payment ID is a reference to the desired command strings
-
sech1
this just moves data away from Monero blockchain, but the data is still out there somewhere
-
sech1
is payment ID encrypted?
-
selsta
yes
-
sech1
that's better then
-
sgp_
<sech1 "this just moves data away from M"> yes, the data for thorchain should be considered porous since they make it all public for verification
-
sgp_
we could use the best practice for generating pIDs then in the Monero transactions
-
sgp_
there will still be a public record typing specific monero txs to the thorchain deposits, but at least it won't be direct on the monero blockchain nor bloat it
-
UkoeHB
Hi all (@ TurtleCoin ); I describe a break in the 'dual-target discrete logarithm problem’, which is a novel hardness assumption defined in the Arcturus paper (see attached). The consequence of this break is that the Arcturus security proof does not hold as written. After discussing with sarang, the author of Arcturus, a proof-of-concept to investigate the consequences of the broken assumption is in
-
UkoeHB
progress, and the preprint will either be updated or withdrawn as necessary.
usercontent.irccloud-cdn.com/file/XHHWF4AD/Break_DualTargetDL.pdf
-
sarang
Great catch, UkoeHB!
-
sarang
This is the review process working :)
-
moneromooo
Nice :)
-
sarang
The existing research code was experimental to begin with, but hopefully it goes without saying that the protocol should not be deployed until/unless there's an update identified
-
sarang
UkoeHB: cargodog was working on a Rust implementation, FYI:
github.com/cargodog/arcturus
-
sarang
I'll leave it to you to share this with them, if you wish
-
sarang
Will work on a proof-of-concept before determining the preprint's fate... IACR prefers not to have preprints withdrawn and then resubmitted with updates
-
UkoeHB
-
TurtleCoin
<iburnmycd> UkoeHB: thanks for the heads up!
-
UkoeHB
yep :) I am relieved it is not used in production
-
gingeropolous
<sgp_> we could use the best practice for generating pIDs then in the Monero transactions >>> aren't pIDs also on the way out
-
gingeropolous
?
-
sarang
Based on my initial proof-of-concept testing, I think that UkoeHB's hardness assumption break implies that Arcturus double spending would be possible with its current protocol
-
sarang
I'll continue verifying, but if that is the case, I'll withdraw the preprint with a note about this
-
sarang
TurtleCoin: please take note
-
sarang
Again, thanks to UkoeHB for answering the question about the novel hardness assumption in Arcuturs!
-
sarang
*Arcturus
-
selsta
also ping cargodog[m] cargodog[m]1
-
moneromooo
What a ruckus
-
sarang
UkoeHB already made a note in cargodog[m]'s GitHub repository
-
sarang
It may be possible to change the Arcturus protocol to avoid this; but who knows!
-
moneromooo
So the protocol is also wrong ? The original claim was that the proof was wrong.
-
moneromooo
(I think ^_^)
-
sarang
Soundness relied on that hardness assumption, but I wanted to confirm whether or not that _also_ implied problems with the protocol (or just that the assumption needed to be changed)
-
sarang
There can be a difference in general between "not provably secure" and "insecure"
-
moneromooo
So does "UkoeHB's hardness assumption break implies that Arcturus double spending would be possible" means "if the hardness assumption is false, double spending is possible" or "until the hardness assumption is modified, we must assume double spending might be possible ?
-
sarang
I built a proof-of-concept that lets you generate a transaction with an arbitrary key image
-
sarang
So a double-spend is possible with the current protocol
-
moneromooo
OK, that seems way worse than I thouht then. Thanks.
-
sarang
The hardness assumption is false _and_ it means the protocol is insecure
-
TurtleCoin
<iburnmycd> Noted. Thanks again for the ping.
-
sarang
Yeah, it's too bad that the efficiency gains of Arcturus can't be realized in its current form, but oh well
-
moneromooo
Out of cusiosity, is there a repository of assumptions that were thought to be hard and turned out not to be ? :)
-
sarang
With its untested assumption it was always unknown if it would work in practice; this is a solid answer to that question
-
moneromooo
It looks like this is a thing that might be "found" independently by different people, and a repo of these might help.
-
sarang
Ooh, that's a great question
-
sarang
I'm not sure
-
sarang
I recall reading an analysis of discrete-log-type assumptions a while back, but not broken assumptions
-
moneromooo
Anyway, congrats UkoeHB for your find :)
-
sarang
In hindsight I feel foolish for not seeing it, but this is why review is useful
-
sarang
There's even a conference for cryptographic failures:
cfail.org
-
sarang
I like the idea
-
moneromooo
Nice :D
-
sarang
Negative results and failed approaches are often unknown
-
UkoeHB
cfail lol
-
sarang
and that seems like a loss to the scientific/mathematical community
-
moneromooo
Hence the drive to have study preregistration.
-
sarang
The next deadline is approaching:
cfail.org/call-for-papers
-
sarang
I might submit this
-
UkoeHB
btw there is no way I would have found this if sarang didn’t state the new assumption very clearly early in the Arcturus paper - it was a very effective and clean way to present it for feedback. A more obscure approach may have increased the risk of this reaching production.
-
sarang
Heh, that's overly kind of you UkoeHB !
-
sgp_
I know this is sad to find out, but it's obviously very good to know
-
sgp_
<sarang "I might submit this"> Please do!
-
sarang
Yeah if UkoeHB is cool with a collaborative submission I'm down with it
-
sarang
About a week left before deadline
-
sarang
Only extended abstract required