Introduce SealerID for a real trustless delegation of onboarding tasks #890
Replies: 6 comments 20 replies
-
Conceptually 👍 , this will be great. There are some implementation details to work out though. I understand that the SealerID is primarily use to provide uniqueness of a seal proof and hence physical sector. The (SealerID, SectorNumber) tuple must be globally unique. It is today with SealerID == MinerID because the miner actor maintains a collection of sectors IDs and prevents re-use. We'll need something similar for non-miner sealers. Naively this means some new chain state with a mapping from SealerID (disjoint from Miner IDs) to a collection of used Sector Numbers for each sealer. At PoRep time, the SP must submit the sealer ID used for each sector and the chain must check and update the collection of used sector numbers for that sealer. It sounds like this will require a new actor. There is also some complication about masking out ranges of used sectors to ensure a compact bitfield representation, and so access rules about who can do that, etc. Is there any necessary relationship between the SealerID used at PoRep and the ProverID used in Window PoST? Will a miner that receives a pre-sealed sector then be able to use their own miner ID as the ProverID for WindowPoST, or will we need to remember somewhere each sector's SealerID? |
Beta Was this translation helpful? Give feedback.
-
I want to validate my perceptions of what this might enable, particularly with NiPoREP. CC sectors can be generated in mass, and thanks to NiPoREP, commits on the chain can be delayed until later. This FIP would enable the transfer of ownership of a CC sector without revealing any of the underlying private key data of either the originator or the consumer of the miner. In theory, this would allow the transfer of ownership of sectors, sealed or unsealed, between various service providers via smart contracts rather than shared wallets. If I am somewhat accurate, I believe this would also enable relatively graceful scaling, up and down of an individual storage provider capacity in response to both market demand and provider circumstances. It also seems that this would finally enable a truly "generic" sealing as a service for both offline and online operations at relatively large scales. |
Beta Was this translation helpful? Give feedback.
-
Starting a thread fo the Sealer Actor, which is currently proposed as a new, dedicated actor type. It is not too clear to me whether
Taking from the FIP,
It seems like we can use any of the existing account types for SealerID—private key-backed wallets, f4s, f2, or anything else. (which all can be treated as unique identifiers on the chain, in the protocol, maybe we should just store the ID address always. @ZenGround0 / @Kubuxu wdyt? |
Beta Was this translation helpful? Give feedback.
-
Move @ZenGround0 ’s comment from #993 (comment) An idea from @jennijuju: One design direction to consider is making the SealerActor an Fevm actor. We could do this by writing a user contract that enforces sector numbers are only claimed once. Then when calling sealer id from miner actor we check that we are 1) calling evm actor 2) the bytecode of the evm actor matches the expected contract. Reasons for and against are pretty split so I don't know which to advocate for. Reasons FOR
Reasons AGAINST
|
Beta Was this translation helpful? Give feedback.
-
This proposal seems promising. Here, it appears that the
|
Beta Was this translation helpful? Give feedback.
-
This FIP should include a way to add a chain message that binds an upcoming sector's ID's activation to a given smart contract. This enables the seller to dictate the terms (price, activate-must-succeed, acl?) and the buyer to see this in-the-clear. The only requirement of the chain is that the activation call happens from the specified Smart Contract. |
Beta Was this translation helpful? Give feedback.
-
Background
Non Interactive PoRep aims to remove PCD and unblocks trustless delegation of sector onboarding tasks (sealing and proving). Moreover, all the different onboarding step could be in principle outsourced to external parties in a trustless manner.
In this new world, SPs delegate some of their activities to external parties in order to let a competition of service providers optimize and lower the costs. For example, sealing and proving could be delegated to external Sealing-as-a-Service and SNARK provers that have better streamlined pipelines.
Nevertheless, NI-PoRep alone is not sufficient for this trustless delegation to happen in practice.
Motivation
Currently the protocol does not allow for trustless delegation of sealing and proving, as both the steps are related to the SP ID (often referred as MinerID).
We should explicitly separate the SP ID (often referred to as MinerID) from the SealerID. For simplicity, we assume SealerID is an entity which both seals and proves sectors (i.e. labelling and snarks, eventually splitting tasks internally).
Decoupling sector sealing and proving and sector ownership would allow to create a market for inactive CC sectors: Saas Providers could be seamlessly generating CC sectors and sell them to other Storage Providers without the risk of losing collateral, and without the need to know in advance who is going to be the sector owner.
Note that this is particularly relevant as we want to unlock the SaaS/CC sector market use case, as there would be no need to know “sealing requests” in advance.
Indeed, in the current scenario we’d have the following flow:
This flow is inefficient by definition as it needs continuous demand in order to be optimized
If we decouple SealerID and MinerID, the flow would be optimized:
Proposal
Add the notion of SealerID and use if for the sealing process instead of the MinerID. We need to:
Beta Was this translation helpful? Give feedback.
All reactions