Change type of Label in DealProposal to be []byte, rather than String #262
Replies: 8 comments 5 replies
-
Hi @laudiacay! It looks like work remains ongoing for this proposal, which is great. Once these details are set, a FIP draft can be written according to the guidance in FIP0001 and pushed to the repo. I will then work through the process of facilitating community acceptance of the FIP draft. If you have any questions about this process, please feel free to ask! |
Beta Was this translation helpful? Give feedback.
-
filecoin-project/specs-actors#1248 Work done! |
Beta Was this translation helpful? Give feedback.
-
This needs to get nudged along if we want it in the next network upgrade -- I believe it's currently impl complete, but in the pending |
Beta Was this translation helpful? Give feedback.
-
@kaitlin-beegle can we move/do we have all the needed elements to move this for the V15 upgrade since it’s in the "code complete " state from our side? |
Beta Was this translation helpful? Give feedback.
-
@BlocksOnAChain you bet we do! Thanks for flagging that this is technically complete. We can move this item to last call status this week. I expect it will be approved without issue, but diligence requires that the last call period last for at least two weeks. I would expect that this item will be approved for v15 incorporation by Friday, January 21, but that implementation teams should prepare to add the change in their calibnet upgrades. |
Beta Was this translation helpful? Give feedback.
-
After connecting with @laudiacay and @arajasek, it was confirmed that this FIP is no longer ready for 'last call' status. This FIP proposal will instead be moved back to the discussion forum, where it can be reconsidered for future upgrades. @laudiacay, it's my understanding that there are two technical paths that we can take to move this forward: pursuing a more technically complex implementation within the existing market modules, or waiting until markets are decoupled from implementations. Any idea yet which is a better path? |
Beta Was this translation helpful? Give feedback.
-
we are revisiting this proposal for network v16 given as we are switching to built in actor that’s written in rust, and the Hence cross posting from #318 @arajasek and @Stebalien (core developers from lotus and fvm team) are proposing to change the
We apply the following rules:
An analagous type can be seen here, with its encoding found here —- end Eventually in a later upgrade, we want to switch over to only accepting bytes for this field, however, we have to do this gradually to make sure the filecoin storage market is not disrupted due to the state migration that’s required by this type change. Ecosystem impact:
|
Beta Was this translation helpful? Give feedback.
-
So here's a decision tree that may help reason about this. Decision 1: Should we do anything at all? If no, the impact is that behaviour in implementations and tooling in many other languages (Rust, JavaScript, etc) is unpredictable and risk-prone. In particular, the current plan around introducing Rust-based builtin actors as "canonical" will have to introduce unsafe Rust (or some other hack) to support this. Based on that, I am inclined to say the answer to Decision 1 is YES (though the matter isn't necessarily entirely closed -- happy to hear arguments that an answer of NO is fine). Decision 2: Can we do the simple solution? The obvious answer is to convert all Labels to bytes, and use bytes moving forward. This was the original FIP-0027, which was accepted into the Chocolate upgrade, but dropped at the last minute because of the integration complications described here. In short, we could not think of a way to introduce a simple conversion to bytes without breaking dealmaking on Filecoin for at least a few hours. We may have been wrong in that assessment, challenges to the scenarios described in the linked complication descriptions is very welcome. If we were correct that FIP-0027 as originally written leads to deal-making breaking for some extended period, we need to decide whether that's okay. We may, as a community, be okay with that outcome. The original proposal also requires a much larger refactor of client and market impls, and ecosystem tooling, but that can be handled. I am personally inclined to say that we should not be breaking deal-making on Filecoin for hours, though. If we agree, that brings us to the next decision. Decision 3: What's the best solution that doesn't damage dealmaking and tooling? This brings us to the proposed modification to FIP-0027. We believe this will have no noticeable impact to dealmaking, while also avoiding issues in other languages (and, in particular, in the new Rust-based builtin actors). It may still be the case that the proposed modification is either incorrect for some reason, or needlessly complicated. Feedback to correct / simplify is very welcome! |
Beta Was this translation helpful? Give feedback.
-
Background
Also see filecoin-project/specs-actors#1248 for important relevant discussion.
The DealProposal Label is not guaranteed to be UTF-8, but is assumed to be in some client implementations. This is causing trouble for said implementations. People suggested either enforcing UTF-8 (this is more difficult) or switching the type to be a byte array that can be interpreted as needed. Discussion settled on the latter.
Proposal
Change the type of the Label field to be a []byte, rather than a string. Draft PR with these changes inside is here: filecoin-project/specs-actors#1496.
Beta Was this translation helpful? Give feedback.
All reactions