This repository has been archived by the owner on Mar 20, 2024. It is now read-only.
Stage 2: fully functional isolated move contracts
Past due by about 1 year
26% complete
-
Add dynamic checks (sanitize) to function calls emulating bytecode keywords
- For example: The Call bytecode instruction may need to verify something about parameters, callee etc.
- These checks are either codegened by the compiler or written as part of the runtime library.
- Reject recursive calls.
-
Add FFI to external calls
- Each call to the Solana runti…
-
Add dynamic checks (sanitize) to function calls emulating bytecode keywords
- For example: The Call bytecode instruction may need to verify something about parameters, callee etc.
- These checks are either codegened by the compiler or written as part of the runtime library.
- Reject recursive calls.
-
Add FFI to external calls
- Each call to the Solana runtime library should be wrapped for adding sanity checks.
-
Add BTF types to provide runtime type information
- We can also use DWARF to add metadata and later use pahole to generate BTF from the binary.
- RTTI is needed for adding checks that preserve invariants guaranteed by move. E.g., A struct can only be instantiated (“packed”) and destroyed (“unpacked”) inside the module that defines the struct. [ref]
-
Provide interface for runtime syscalls
- Maybe link existing (solana_program) rust library with move to enable support for all the runtime calls
-
Testing
- End to end testing of isolated Move contracts
- Test isolated move contracts in rbpf
- Test rtti