Skip to content
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
Loading