Hey all. I just introduced myself in the Beginner section, and I thought I would post here some of my concerns / questions about Safecoin. Keep in mind, I am still learning about the SAFE project, so I might be wrong about a few things, and that’s why I’m bringing it up here. I’m a developer myself and my background is in web development and decentralized networks (see https://intercoin.org
, Qbix Platform (https://qbix.com/platform
) and this video)
When I looked at the SAFE project, I really thought you guys had just the right architecture for file storage. It is the closest in spirit to the kind of technology we aim to build. It is actually decentralized and secure in the most effective way. When I was designing Intercoin’s payment system, I came across very similar ideas. Kademlia trees, DAGs for histories permissions and rules, and local rather than global consensus. We also added some new concepts, such as the Permissionless Timestamping Network, which you guys might like.
However, one point which I think is a bit off in SAFE is how it implements its currency: unlike bitcoin, which has to keep appending transactions to a growing ledger, in SAFE the Safecoins are just files whose ownership is changing based on a local consensus about editing-in-place. There doesn’t seem to be any growing history of signed transactions.
This seems, to me, to risk a serious problem. When A pays B some token T, it is not enough to know that T was issued as a valid token in the past, and now belongs to A. That’s because the nodes in a close consensus can collude and simply lie that A owns the token, after B has accepted payment from A, by “forgetting” the changes. They can also steal it from its previous owners, since the history of previous owners’ signatures is not required or even stored.
This problem is easily rectified by having each token be a file whose history is constantly growing. Files should be able to split into multiple new files with a shared history, allowing fractional spending. This does introduce an endlessly growing ledger, but not everyone has to keep everything. Each token has its own history. Now B can verify this history for themselves. And they know that no one can steal their tokens - at worst, the datachain can be prevented from making further progress by a majority of malicious nodes in the quorum feigning unavailability, but the sender can try to cancel the transaction and issue a new one, which would be checked by a completely different set of nodes.
Even better if each new state of the token can have its own id (with the hash of the contents plus some random value) and verification of transaction must be done by consensus of nodes close to that id. When sending 5 cents, only a few nodes are needed. But when sending $1MM, the recipient would require a lot of nodes before accepting payment, and perhaps even ask that their friends join the consensus for that transaction.
Remember, in a payment network, the recipients pay for someone to record that they now own the token. These notaries or their successors have to be around to store the transactions. Thus, a recipient (or the system) can require a minimum number of notaries based on how much value is being transferred. They can split off some value from the tokens they are storing information about. In your system, this last part seems to already happen, but how can you subdivide SAFE tokens?