Skip to content

Publishing and Iteration

View as Markdown

Use this page when the ABI is locally validated and you are ready to publish or upgrade the ABI artifact that goes with a deployed program.

The program and ABI should use the same seed.

Terminal window
thru program create my_program ./build/thruvm/bin/my_program_c.bin
thru abi account create my_program ./program.abi.yaml

That seed match matters because it is how downstream tooling can associate the deployed program with the ABI it should use for reflection.

  1. validate the ABI locally first with Validation and roundtrip testing
  2. confirm the published artifact will be explorer-compatible with Explorer Compatibility
  3. if the ABI still depends on local imports, normalize it with ABI Prep for Publish
  4. create or upgrade the ABI account with ABI Account
  5. read the ABI back with get --include-data to confirm the published artifact is the one you expected
  • publishing an ABI that was never roundtrip-tested
  • publishing an ABI without program-metadata.root-types
  • publishing only separate per-instruction structs instead of one discriminated instruction root
  • publishing an ABI with a different seed than the deployed program
  • forgetting that local imports need to be normalized before publication
  • finalizing too early and losing the ability to upgrade or close the ABI account