I guess it depends on the definition of "completely trustless". Technically SPV is by definition not completely trustless, in the sense that it trusts miners to verify transaction validity. Of course, a full node is also not completely trustless, in the sense that it trusts miners to verify transaction ordering.dolphin wrote:Reviving an old thread... I was away working on something fundamentally different for a while, but came back to NameCoin lately. Looking at forum posts, I have a feeling that a completely trustless SPV is not implemented yet. Is that so or am I missing important updates in the buzz?
Is it still worthwhile looking into implementation of proposals, I've made a while ago or similar better alternatives? I have some cycles to spare and could look into implementing and submitting a pull request but thought to check with the community first.
Anyway, if the question is "can we verify that a 3rd party isn't hiding name transactions from us, assuming that the miners are trusted", then the best thing we have right now is the leveldbtxcache mode of libdohj-namecoin. It does meet the security requirement I just described, but it does need to download the most recent 1 year of full blocks (as well as all historical block headers, which is always the case for SPV clients). This means it takes around 10 minutes to sync initially (at current blockchain usage).
If you're interested in experimenting with Merkle commitments so that full blocks don't need to be downloaded, you might be interested in the Electrum-NMC work that's ongoing by Joseph and Ahmed. Electrum's protocol has a UTXO commitment feature that might be adaptable to the UNO (unspent name output) set. This would be easier to prototype since it doesn't need a consensus fork, and it's actually useful by itself too (in the sense that it makes it much easier to detect misbehaving Electrum servers).