Replies: 1 comment 2 replies
-
Good points, thanks for the comments.
I'm not adamant about this and I understand the downsides, but it is easier to reason about it like that and it eliminates a whole slew of issues. For example it would eliminate, "shallow bids" (bidders that weren't serious), "over bids" (bidding without having enough funds to fulfill it), etc... The problem with open protocols is that there is no external entity that can intervene and control this sort of things, all the security and rules have to be intrinsic to the protocol and having bidders lock their funds up during the bidding process seems like a simple and effective way of dealing with all sorts of issues without introducing any machinery to deal with them individually (e.g. we'd have to implement something to deal specifically with "shallow bids" and something to deal with "over bids", etc...). This was my original reasoning for suggesting it. One way of dealing with this is arbitrage, but it introduces and even greater overhead and complexity.
I imagine that the bidding process will be relatively quick, usually seconds, minutes and in extreme cases hours, so I'm not too concerned with locked up funds.
This is definitely a concern, but it heavily depends on the cost of the transaction which varies from platform to platform. In all honesty, I don't think we can run this directly on top of an L1 due to the current limitations in throughput. For this reason, it makes sense to think about this as either an L2 or running on top of an L2, in which case the transaction cost should be (hopefully) negligible. In general I think transaction cost is something that will have to be addressed in order to make decentralized systems usable in the long run and we aren't the only ones dealing with this, it is an inherent limitation of the current systems and their capacity.
What happens with nodes that:
How do we prevent that from happening in the future to avoid many failed contracts/attempts to secure storage? Reputation systems -they have even nastier complications. I'm sure there are more not so obvious issues that will pop up, but at least, from a very cursory view, it seems like they can be addressed by locking up funds. The way I see this working is:
Note that the above model only considers one bid per contract, not multiple bids. The idea behind the contract is to signal storage nodes that there is a client with some specific storage requirements and to allow storage nodes to signal their capability and willingness to fulfil those requirements. Maybe "bid" is the wrong word here? |
Beta Was this translation helpful? Give feedback.
-
(@Menduist I took the liberty to move your issue here from codex-storage/nim-codex#14)
I've been thinking about the storage market, and I think it may not be a good idea to lock up funds to be able to bid.
We aim to have a global market, and who says global market says a lot of competition.
It means that on a given contract, we should have tens, if not hundreds of bids, and only a fraction of them will be accepted.
For instance, let's say on average, 10% of bids are accepted (it seems a lot, but anyway)
It means that as a storage node, I have, on average, to place 10 bids to win one contract.
If I have to lock up funds for each of theses bids, it means that not only I'll have a lot of funds locked up, but also I'll have to pay a lot of fees (to lock up theses funds), without being sure of having any contracts in the end.
But this property also allows us to reduce the probability of "double bidding" (like double spending):
Since I have "low" (10%) probability of actually getting a contract, the probability that I get two contracts is even lower (1%), especially if we have a fast marketplace with bids with little TTL.
(Obviously, in reality, the probability of getting a bid are not random, but depends on your price, but simplifying here)
My idea would be:
In reality we could probably have less than 50% of "backup bids".
And if I'm very unlucky and end up with less than 5 storage node?
I can recreate a contract, which is not ideal, but should not happen in regular operation
Beta Was this translation helpful? Give feedback.
All reactions