|
|
|
|
|
by chroem-
4227 days ago
|
|
So, I'm purposefully posting this way down in the comment chain because it's not ready and I don't want it to get too much attention, but I've recently written a whitepaper for a potential distributed application platform. It's still very rough, but I would really appreciate it if somebody could provide feedback. The people that I've shown it to so far either haven't had the expertise to review it or weren't interested in reading the paper. http://chroem.net/VAPUR.pdf |
|
I have some doubts about your anti-Sybil attack measures:
* The more CPU my arbiter nodes can prove that I have, the heavier my arbiter vote. But at the same time, I can pretend to be many, many small nodes, which I'll program to side with my arbiters if someone challenges them as being corrupt.
* Can't I just DDoS the other nodes to increase the likelihood that my (sybil) nodes will be selected to be arbiters? I'll just attack nodes (or attack the request submitter) until you pick a quorum of my sybil nodes by chance.
* If all it takes to write to a DHT node is some user's signature on the data (that or an arbiter log; I'm assuming from your wording that one or the other or both will suffice), can't I just create a bunch of key-pairs for each of my sybil nodes and pretend to be a bunch of different users?
Regarding code:
* What steps do you take in the sandbox to prevent the (untrusted) code from denying service to participants? I could use some malicious code to deny service to other nodes (helping my nodes get selected to be arbiters).
* No entropy in the sandbox will limit the things you can do here. You can't (safely) do cryptography, for example.
Regarding storage:
* Have you heard of Permacoin? [1] You can have proof-of-storage without arbiters or a DHT.
* Even then, Permacoin is slow--way too slow for interactive I/O. So is Bitcoin. Your system will be slow as well, since you're not only replicating writes to a blockchain, but also you're funneling them through a handful of nodes that were chosen for their CPU, not their network connectivity. Note that you're writing multiple sets of entries per computation (the arbiter log), in addition to storing the results of the computation.
Regarding presentation:
* Outline your goals up front, as a bullet-point list.
* Outline similarities and differences with related work as a grid, with the set of systems as rows and the set of features as columns. This will make it easier for readers familiar with other systems to quickly grasp what your system does and does not do (readers will look to the text for clarification of the table).
* If you're constructing a protocol, you should consider adding a protocol diagram for both the successful case and the error cases. You should also show (or prove) that your protocol makes certain guarantees, if possible.
Hope this helped!
[1] https://www.cs.umd.edu/~elaine/docs/permacoin.pdf