-
Notifications
You must be signed in to change notification settings - Fork 463
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BLS Signatures #1606
Comments
The fact that we want to assign monotonically increasing ids argues for an account manager actor that can store the next available id. An actor's id and public key can be stored in the actor. I think you should probably go this route. Note that miner creation should probably move to the account manager and we should take the functionality off the vmcontext (bc it lives on the account manager): https://github.com/filecoin-project/go-filecoin/blob/29325c33caaa484ebe395fc5d26fd876cbdb86c3/actor/builtin/storagemarket/storagemarket.go#L109 How does upgrading work in this new world?
The original arrangement was for frrist to spend time helping @bvohaska come up to speed to do this work, which is why we timeboxed frrist's involvement to 20%. Something seems to have changed, now frrist is on the hook for all the work? If so then we need to shuttle this item through our normal dev process. The only reason it didn't go through the process in the first place is because it was characterized as consultation / helping someone come up to speed. (We also need to answer the question of why frrist is the right person to do this. Not saying he isn't, just saying that he represents 50% of our dev infra firepower.) WRT priority my understanding is that one of the reasons to do this now is because exchanges will need time to implement. I'm not sure how compelling I find this given that launch isn't exactly imminent. |
|
|
What we talked about here was that when sending funds to a non-existent actor, you set the to field of the message to the public key. Then, during message processing, a new account actor is created, and it gets that public key set into its internal state. Note: This also removes the ambiguity around new actor creation (we don't have to do the weird 'upgrade' thing, as actors will have unambiguous addresses) I would say to keep new actor creation the same as it is, for now. Adding in the 'Init Actor' (what we previously talked about calling the actor responsible for creating new actors) will require a bit of extra consideration (what happens if users can create their own copy of the storage market actor? Or miner actors?)
@frrist did the initial signatures work, and this work will likely be much easier for him to do than anyone else (especially compared to brian, who is not ramped up on the codebase). |
@phritz from our discussion in storytime yesterday; this is the reason for being able to use a public key as an address -- we create an actor by sending some filecoin to a public key -- will update #1607 |
Why is BLS important?
Functionally, BLS signature aggregation enables the Filecoin network to store more client data by reducing the on-chain storage requirement of each signed message.
Because this represents a protocol change that affects wallets, exchanges, and signature specs, this effort will need to be completed before launch. This effort will be a block to launch. Note that BLS signature aggregation is less of a feature and more of a core protocol component.
BLS allows signatures for message signatures to be aggregated into a single signature and placed on a block. This means we only need to store one signature per block instead of N signature, where N is the number of messages in the block. This allows us to reduce the size of our chain.
Birds-Eye View of Changes
Message.To
contains the entire public key when creating an actor.AccountManager
Actor that acceptsCreateAccountActor
messages and manages the actor creation process.Acceptance Criteria (List is WIP)
TODO
's for missing features that could be implemented today, tests, places in the code where we should be using it but aren't, etc. ; see "do not create technical debt" section of https://github.com/filecoin-project/go-filecoin/blob/master/CONTRIBUTING.md#developer-dos-and-dontsDesign Doc
https://docs.google.com/document/d/1W6eKt5kuLF9zZmwIdiQl2-UAs2VJg-KqO3ti2fYVN_M/edit
The text was updated successfully, but these errors were encountered: