use rust implementation of SerializedProgram #17297
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose:
This replaces the
SerializedProgram
class with the counterpart fromchia_rs
. The long-term objective is to makeFullBlock
able to live entirely in rust, to move validation to threads. Thetransactions_generator
field is a serialized CLVM program.The main challenge in the python binding for this class, is how python arguments are converted into CLVM structures before invoking the program (e.g.
run_with_cost()
). This conversion is partly implemented in_serialize()
, here as well asSExp.to
, in theclvm
wheel.Note how there's a special case when passing a
SerializedProgram
, its bytes are used directly. i.e. a serialized program is passed as the CLVM structure it represents, not as a blob of bytes (i.e. a single atom). This special handling no longer exists when entering theSExp.to()
path.The rust implementation of this behavior can be found here (the
_serialize()
counterpart) and here (theSExp.to()
counterpart).Current Behavior:
SerializedProgram
is implemented in python (but CLVM is run by rust)New Behavior:
SerializedProgram
is implemented in rust