Efficient blockchain architecture based on FIDO keys
dandanua.github.io
dandanua.github.io
This threat model would not survive the real world even at low adoption rates.
Also, tampering the device can ruin the network, but it can't print new money.
For example, you can assume that there is a fixed amount of money initially distributed somehow (many cryptocurrencies do just that).
You can make money off of a double-spend attack, but it's not as simple as 'you double spend, then get as much money as you want'.
Whenever I hear about ideas to use hardware to ensure that some fact about the real world is accurate or to act as some kind of incorruptible source of truth, I just have to roll my eyes.
It's wishful thinking to suggest that the manufacturer has absolutely no incentives to make incorrect devices to harm the network... Kind of like how the reserve bank has no incentives to print money and give their rich friends priority access to the new money... That doesn't harm society right? All my rich friends certainly agree!
Once you get hardware involved, it forces people to trust a centralized entity even more than a pure software solution since the complexity and capital barriers go up.
Besides, I don't even see how the hardware-generated ID solves the problem regarding the transaction order... There is still no guarantee that the transaction with the lowest ID will reach all the nodes before the one with the higher ID due to unpredictable network latency during the propagation... What if that lower ID transaction gets lost entirely? Will that account be locked forever (since the ID only increments) - How to recover from the situation where there are gaps between IDs? You would need to timebox it to decide how long to wait before we allow skipping a specific ID... How about we make one of the nodes decide when the time slot ends and maybe call that a 'block'? Wait, that already exists, it's called plain old blockchain.
As for IDs, this is the right question :)
You are not allowed to have gaps in transactions counter. You have to submit all of them to the network. Sure, you can have some transmission failure due to broken connection or computer failure. For such case a device can have memory of signed transactions (at least recent ones) and re-transmit them until they reach the network.
It's always seemed too good to be true, but I've never seen anyone mention a big downside to it, so I've always wondered.
The thing is though is you could say the same for traditional crypto mining. In either situation one person holding too many opportunities to author new blocks is a chance to double spend (though highly mitigated by simply waiting longer for newer blocks to come through before accepting trades).
Full PoS decentralization does not exist yet. Many attempts exist. Some better than others. Sadly, the complexity (rube goldberg) of PoS far outweighs the simplicity of PoW.
How do you define "full PoS decentralization"? That sounds a bit no-true-Scotsmany.
> Sadly, the complexity (rube goldberg) of PoS far outweighs the simplicity of PoW.
Yes, and the huge energy usage of PoW far outweighs the zero energy usage of PoS. That's the tradeoff.
Contrary to popular belief, PoS isn't zero energy usage. My very very very large ETH1 gpu mining operation sits next door to the same large data centers powering all the cloud providers. All getting power from the same hydrodams that would just go to waste otherwise. It isn't like the power can be easily used in other ways... transmission of power is expensive and intrusive.
Bitcoin is an issue because of supply/demand... when the reward goes away, so will the miners. Difficulty will drop to more acceptable levels to cover the loss. ETH1/ethash at least tries to peg to a specific type of hardware that actually has a better roi with older models and doesn't need the latest / greatest.
The tricky bit to make ETH2 work will be the use of zkSnarks. What nobody talks about is how compute (energy) heavy they are currently. It is a bit of moving the goal post if we're going to just end up building asic's again.
Everyone grows at the same rate though. If someone stakes 1% of the total pool and someone stakes 99%, then after making more they will still be at a 1:99 ratio.
I actually like NANO, their blockchain structure is certainly next level, but it also has vulnerabilities due to PoS consensus.
Couldn't this be repaired (with probability something like 1-O(compromised stake) per attempt), by exhibiting (in, say, lexicographic order) the two conflicting blocks (thereby invalidating both), and continuing with the chain?
Eg, crude sketch off the top of my head:
A -> B1
A -> B2
A -> B2 -> C2 # built off conflicting chain
A -> b1 -> b2 -> C3 # resolved chain (block b dead)
The resolved chain would have more blocks initially (2 vs 1), and roughly twice the number of nodes supporting it (since the split chains would by construction be valid to only about half the network each.I'm not sure the logistics of this works out, so non-rhetorically: could this work? I'm cribbing some intuitions from proof-of-work designs, but it seems like it ought to be possible in principle.
But, as I said, I'm not sure about the logistics/provable-correctness of making sure that the half of the network that voted one way and the half that voted the other way always have a chance to compare notes soon enough to catch a spoiled vote.
Unless I misunderstand the meaning of "truly" decetnralized, there is one known. It's called Ouroboros, it's being used by both Polkadot and Cardano. It's a decentralized Proof-of-Stake protocol (currently ~80% of Cardano block generation is decentralized, the goal is to reach 100% in March).
The 2019 paper: https://eprint.iacr.org/2016/889.pdf
(Edit: the article is still an interesting read, thanks for sharing)
0: I could give a long list of historical examples demonstrating that is in fact a problem, but frankly, if you (think you) are not a member of any demographic that someone considers undesirables, then I consider you a undesirable.
There is a way to make it correct, though. Device manufacturer also has to inject its own root private key into the device. So the device will use additional, third signature on behalf of manufacturer.
[1] https://developers.yubico.com/U2F/Protocol_details/Key_gener...
There's no need to keep a "root private key" on device.
https://developers.yubico.com/U2F/Attestation_and_Metadata/ https://fidoalliance.org/fido-technotes-the-truth-about-atte...
And at the same time it must prevent leaking of such key.
Not to mention that leaking of such key could happen from the hardware too.
(basically uses intel SGX instead of FIDO keys)