-
Notifications
You must be signed in to change notification settings - Fork 79
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
Client State Access #194
Comments
I've talked about this a bit with @frrist and @ZenGround0: Sentinel (and chain explorers generally) is another party that reads chain state. I basically think we should do both.
|
I agree with your assessment here, @anorth. However, I'd expand the scope beyond state access (architecturally equivalent to DAOs for old dogs like me), to cover also method inputs and outputs (architecturally equivalent to DTOs). There is a whole set of transaction submitters (e.g. wallets, miner management applications, deal-making apps, DataCap/notary management apps, etc.) for whom having parameter and return objects available in their languages to serde to/from is important. @rllola has been doing some early prototyping, and is feeling the pain of rust serde. |
@Stebalien I'm not sure there's any action to take here. The go-state-types repo is where the Go solution goes. Rust users can import this repo (though we should incrementally add better state access functions). Shall we close this? |
Yeah. I don't think we're really getting anything from this issue at the moment. |
Since we are not releasing the actors themselves, just the bundle, Forest no longer has access to the latest state and DTO objects, so this becomes relevant and necessary again @lemmih |
This won't cut it as we have multiple versions of built-in actor states going forward #835. So in that case I think we should replicate the go-state-types pattern here, copy (not move) the state and param/response definitions out to a new rust repo, and maintain multiple versions in different crates in that repo. |
Summary of the discussion in #835:
My comments:
As a side note, for me, this discussion is similar to our discussion about semantic versioning. I assured you that violating semantic versioning would cause trouble (which it did) and now again I'm assuring you that copy&pasting the actor logic will cause trouble. Probably not for Lotus but for everyone else in the ecosystem. We managed to get on the same page with respect to semantic versioning so hopefully we'll end up on the same page regarding having a single source of truth. This summary is my understanding of a discussion that borders on the philosophical. Any misrepresentation is accidental and I genuinely want to understand the full picture. |
Thanks @lemmih.
The example of Where there is other business logic that is written in actors but invoked via direct state inspection elsewhere, we might also be able to export those as actor methods. Please do let us know what they are as you discover them.
Assuming they're slimmed down to basically just state objects and params/returns, please at least ask us to! |
@lemmih is https://github.com/ChainSafe/fil-actor-states sufficient for us to close this issue? |
Yes, our fork satisfies our needs. I wouldn't mind if you closed this issue. Might be appropriate to close it as |
* Removed dependencies to builtin actors to rely on Chainsafe repo instead as per filecoin-project/builtin-actors#194 (comment)
## Description The main goal of this PR is to properly deploy all necessary builtins to our local execution environment, at the address they are expected to be based on the [builtin actors repository](https://github.com/filecoin-project/builtin-actors/blob/master/runtime/src/builtin/singletons.rs). Aside from this, we also removed direct references to the builtins crates as per [this comment](filecoin-project/builtin-actors#194 (comment)), only relying on it for the WASM bundle. Instead, to instantiate builtins and their state we use crates from [Chainsafe repository](https://github.com/ChainSafe/fil-actor-states). Moreover, we now use `frc42_dispatch` crate in test actors. Closes #42 Finally, we removed dependencies on the `ref-fvm` repository to instead be based on crates.io released version. ## Notes We should write some simple tests to check some flows that leverages builtin actors in the future (e.g.: Market actor, miner actor ...). Added issue in backlog of the project: https://github.com/orgs/polyphene/projects/1/views/3?pane=issue&itemId=24909149 ## Links to any relevant issues or pull requests - #42 ## Open Questions <!-- Unresolved questions, if any. --> ## Change checklist - [x] I have performed a self-review of my own code - [ ] I have made corresponding changes to the documentation - [x] I have added tests that prove my fix is effective or that my feature works --------- Co-authored-by: PhilippeMts <1371613+PhilippeMts@users.noreply.github.com> Co-authored-by: João Oliveira <hello@jxs.pt>
Clients need to be able to "read" actor state for:
Currently, clients "decode" the underlying state by importing a struct definition.
Options
The text was updated successfully, but these errors were encountered: