-
m-relay
<elongated:matrix.org> Does fcmp++ allow spending if unconfirmed outputs ?
-
m-relay
<elongated:matrix.org> Does fcmp++ allow spending of unconfirmed outputs ?
-
m-relay
<jeffro256:monero.social> It allows one to sign a transaction spending an unconfirmed output and do membership proofs at a later step , yes
-
m-relay
<jeffro256:monero.social> You can technically spend an unconfirmed output in RingCT if you guess exactly which decoys are going to be where in the chain in the future lol
-
m-relay
<jeffro256:monero.social> But FCMP++ breaks it into 2 separate steps which means the signer doesn't need to care about chain context
-
m-relay
-
m-relay
<vtnerd:monero.social> Looks like he used the view key to prove that you can see incoming transactions? It's basically just pure dribble
-
m-relay
-
m-relay
-
m-relay
<spirobel:kernal.eu> sent him an explanatory video and welcomed him to the community 🫡
x.com/spirobel/status/1930985317399699556
-
m-relay
<elongated:matrix.org> So can we remove 10block confirmation needed currently with ringct ?
-
m-relay
<jeffro256:monero.social> No
-
m-relay
<jeffro256:monero.social> The 10-block lock has nothing to do with transaction chaining or detached signing. It has to do with chainstate stability, protection against reorg privacy attacks, and DoS attacks
-
m-relay
<syntheticbird:monero.social> there are privacy concerns when it comes to reorg ?
-
m-relay
<elongated:matrix.org> Any research on removing or reducing it 3/4 blocks at least to increase velocity ?
-
m-relay
<jeffro256:monero.social> With ring signatures, definitely. Say a reorger thinks that the true spend is output A. The ring also contains members B-P. The reorger could create a new block top with just A and exclude B-P. If a new ring signatures pops up with the same key image containing A and nothing else, then the reorger knows for absolute certain that that key image corresponds with spending output A.
-
m-relay
<syntheticbird:monero.social> iirc the MRL issue the deepest reorg was 7 blocks
-
m-relay
-
m-relay
<syntheticbird:monero.social> nevermind
-
m-relay
<syntheticbird:monero.social> 3 blocks deep
-
m-relay
<jeffro256:monero.social> You can also do this this FCMPs to a lesser extent. To assume the result is usable, you must assume that the output being spent is relatively new, you will never get a 100% accurate result unless you do a >3,200,000 block reorg ;)
-
m-relay
<jeffro256:monero.social> Actually even then, I think the vast majority of people are running nodes with checkpoints on so that's impossible
-
m-relay
<jeffro256:monero.social> But it's good enough to rollback to the last checkpoint if you want >99% confidence
-
m-relay
<jeffro256:monero.social> But the MRL isn't just looking at what reorgs happened in the past by pure happenstance, but also how much $$$ it would cost if an active attacker tried rolling back the chain.
-
m-relay
<syntheticbird:monero.social> I feel like that's a side quest for Rucknium
-
m-relay
-
m-relay
<jeffro256:monero.social> Look at "strategy 2"
-
m-relay
<jeffro256:monero.social> Then you would just convert "duration of possessed hashpower" into $$$ based on the market rate of general-purpose compute power
-
slave_blocker
where can i read moar about fcmp? Like the most up to date code for monero on the topic? For the purpose of reading it only?
-
slave_blocker
so its this right?
-
slave_blocker
-
slave_blocker
so i guess its this:
-
slave_blocker
-
slave_blocker
or is there other code i can also read about it?
-
m-relay
<jeffro256:monero.social> Yeah that is the bulk of the FCMP and SA/L cryptographic code. If you want to see FCMP++ integration code and/or Carrot code, you can look here:
github.com/seraphis-migration/monero/tree/fcmp%2B%2B-stage
-
m-relay
<jeffro256:monero.social> This directory in the fcmp++-stage branch contains a lot of usage of FCMP++:
github.com/seraphis-migration/moner…o/tree/fcmp%2B%2B-stage/src/fcmp_pp
-
m-relay
<jeffro256:monero.social> This method in `BlockchainLMDB` does a lot of the FCMP tree building business logic:
github.com/seraphis-migration/moner…lockchain_db/lmdb/db_lmdb.cpp#L1426
-
m-relay
<jeffro256:monero.social> This directory contains Carrot crypto code:
github.com/seraphis-migration/moner…ee/fcmp%2B%2B-stage/src/carrot_core
-
m-relay
<jeffro256:monero.social> This "tree cache" is how wallets keep track of the FCMP tree on the client side:
github.com/seraphis-migration/moner…B%2B-stage/src/fcmp_pp/tree_cache.h
-
slave_blocker
I have so far build curve trees in mathematica code (.nb), but was bumping on the r1cs part. Thanks for your answers
-
m-relay
<jeffro256:monero.social> Hopefully those are some decent starting points ;) But yeah R1CS stuff is pretty dang tough IMO, but it should all be in that fcmp_plus_plus repo that you linked originally
-
slave_blocker
my hope was to throw ai at it and expectfor it to be so self contained and minimal that i would understand it
-
m-relay
<jeffro256:monero.social> Lol I wouldn't recommend that route. LLMs are still terrible at explaining cryptography or any higher-level mathematical concepts in my experience. It can give you general gists about the vague ideas of some topics it already is trained for, but it can't input new material and output anything remotely sensible
-
m-relay
<jeffro256:monero.social> There's humans around that know about R1CS and there are blogs/videos/textbooks they have posted. I would start there
-
slave_blocker
another thing jeffro256, since you helped to recognize that tagged keys thing in the past for me in the mining pool
github.com/jtgrassie/monero-pool, yesterday i was compiling the last version of monero. Then i compiled that pool against it. Then my miners that are running xmrig using self select were giving errors
-
slave_blocker
"invalid blob something i dont know
-
slave_blocker
so i just reverted the changes and am still running the version 18.3.4 monerod
-
slave_blocker
(in the case a single look from your side says again ah thats it ;)
-
slave_blocker
ok
-
slave_blocker
thx
-
m-relay
<jeffro256:monero.social> Do you have the real error message? Might be a different error ...
-
slave_blocker
i dont have the error message, i know that the following line was being thrown :
-
slave_blocker
-
slave_blocker
if you compile 18.4 version and that pool against it
-
slave_blocker
and xmrig miner pulling templates from the same monerod, then it says that the block templates "blob" is invalid
-
slave_blocker
also when using the rpc call, getblocktemplate, where do i find a description on what these two things are exactly : blocktemplate_blob - string; Blob on which to try to mine a new block.
-
slave_blocker
blockhashing_blob - string; Blob on which to try to find a valid nonce.
-
slave_blocker
"like they both are called blobs, same to me ?"
-
m-relay
<jeffro256:monero.social> The "block hashing blob" is basically a compressed version of the blocktemplate_blob. All you need to verify PoW is the "block hashing blob" which can be around 64 bytes. But to actually construct a miner transaction to yourself and compress down to the "block hashing blob", you need the "block template" first
-
m-relay
<jeffro256:monero.social> IDK why that point in the code would fail specifically
-
slave_blocker
wow learned something today ;)
-
slave_blocker
and the blocktemplate blob is just = {txid1, txid2, txid3, ... txidn} ? where is this specified beyond blob for a monerian?
-
slave_blocker
github.com/jtgrassie/monero-pool/blob/master/src/pool.c#L1369, this line in the code is called not thrown perhaps i mispoke there, the blocktemplate blob fails somewhere dont know what
-
slave_blocker
-
slave_blocker
This returns a blocktemplate_blob, that is, a serialized Monero block containing the Monero block header, coinbase and a list of hashes referencing the transactions included in the block. Additionally, a blockhashing_blob is a fixed size blob containing serialized_monero_header, merkle_tree_root and txn_count concatenated together.
-
m-relay
<jeffro256:monero.social> I'm pretty sure the code you linked is just a general-purpose error-handling function that is used to report all errors
-
slave_blocker
hum i would bet on some major minor version thingy of the block header. so the block template blob is being rejected by the pool
-
slave_blocker
wich is fetched by the xmrig software first from the monerod, perhaps since its a point release, there is this issue where a new major version is set in the serialized version of the block, wich is then not accepted by the pool?
-
slave_blocker
which then throws that error? sending that error to the hasher ie xmrig.
-
slave_blocker
:D
-
slave_blocker
i remember it was this error : XMR_MISMATCH_ERROR = -6