Actors as deal clients (FIP-0035) - withdrawn #271
Replies: 5 comments 5 replies
-
I'm going to go with simplicity for the built-in market, and not generalise this.
Similarly going to go with no for this, until the deal start epoch passes and so the deal expires. |
Beta Was this translation helpful? Give feedback.
-
I've drafted a FIP in #305. Garbage collection uses the existing expiration queue, although this does raise a security concern due to the use of cron. We should put some thought into alternatives and mitigations. The proposal notes two possible extensions:
It's also worth discussing whether either of those are worth rolling in to the proposal from the outset. |
Beta Was this translation helpful? Give feedback.
-
Possible mitigation to the spam issue is to:
Reasoning: The clients are expected to clean up stale offers after the cost of not cleaning them up (due to an increased gas cost of future offers) is higher than the cost of the cleanup operation. In case of forgotten or lost ClientIDs, a good samaritan can clean up the state. |
Beta Was this translation helpful? Give feedback.
-
Copying a comment from the draft PR:
|
Beta Was this translation helpful? Give feedback.
-
Pending support and approval of the proposal described in #413, I wish to withdraw this proposal from further consideration. |
Beta Was this translation helpful? Give feedback.
-
Update 2022-08: I wish to drop this proposal in favour of #413
The built-in storage market actor does not currently support other actors as deal clients. When the FVM makes user actors possible, I expect a significant use case to be acting as deal clients. Examples might include deals made by a group (multisigs) or more complex DAOs, or deals made by decentralised replication/repair services.
The built-in market's limitation is because it requires a client signature on the deal proposal, and only externally-owned accounts (EOAs) can make signatures. The deal proposal is submitted unilaterally by the provider, but the client's signature confirms their assent. This is efficient in keeping deal negotiation entirely off chain until a proposal is agreed to by both parties, but excludes natively on-chain entities like actors from participating.
This seems on the surface pretty straightforward to resolve, amounting to supporting some limited account abstraction for deal clients. Here's a sketch of a basic solution (all changes to the market actor):
ProposeDeal
method, called by clients (contract or EOA) which records a deal proposal, with the provider, term, cost, piece CID etc in a new PendingDealProposals structure in the market actor state, and returns a proposal ID (sequence number).ConfirmDeal
method, called by providers, which identifies a pending proposal and elevates it into a full deal proposal, equivalent to if it had been submitted toPublishStorageDeals
. The pending proposal is removed.The pair of calls, one by each party confirming the same proposal, provide equivalent mutual assent to the terms, without needing a signature. This involves slightly more use of chain state in return. Note that where clients are BLS accounts, the total gas use will probably be lower, since BLS signature verification is very expensive; but for the more common SECP signatures, the verification is likely cheaper than storing the pending proposal.
Unlike the current system, a client-side EOA (whoever triggered the contract to propose a deal) would pay part of the gas cost of submitting a deal. Confirming such a deal will be slightly cheaper for a provider than the
PublishStorageDeals
call.Some other points of discussion:
RetractDeal
method callable by the proposer?This topic is intended for discussion prior to drafting a FIP to implement this in the built-in market actor. Please voice your ideas or concerns here.
Aside
In the future I hope we don't need FIPs for such functionality improvements, because the built-in storage market becomes one of a collection of marketplaces competing on features, cost, etc. Enhancements will be implemented by a contract upgrade rather than network-wide consensus upgrade, and subject to each market's governance process. See #241
cc @nicola @Kubuxu @ZenGround0 @arajasek
Beta Was this translation helpful? Give feedback.
All reactions