Program
Use for the official ABI attached to a managed program you control.
Use thru abi account when you are publishing ABI YAML to chain state or reading an existing ABI account back out.
Choose another ABI command when:
Program
Use for the official ABI attached to a managed program you control.
Third-Party
Use when you are publishing an ABI for someone else’s deployed program.
Standalone
Use for shared type packages or ABI files not tied to one program account.
| Type | Use it for | Seed input | Signer flag | Extra requirement |
|---|---|---|---|---|
program | ABI for a managed program you control. | The managed program seed. | --authority | None |
third-party | ABI for a program you do not control. | A 32-byte hex seed. | --publisher | --target-program is required |
standalone | ABI not tied to a specific program. | A standalone seed string. | --publisher | None |
--authority is still accepted as a compatibility alias for non-program account types, but --publisher is the clearer choice for third-party and standalone flows.
| Flag | Use it for |
|---|---|
| `—account-type program | third-party |
—target-program <ADDRESS> | Required for third-party accounts. |
--ephemeral | Match ephemeral program mode when the ABI targets an ephemeral program. |
—authority <KEY_NAME> | Choose the configured authority key for program ABIs. |
—publisher <KEY_NAME> | Choose the configured publisher key for third-party and standalone ABIs. |
—fee-payer <KEY_NAME> | Override the configured fee payer for state-changing commands. |
--include-data | Include ABI YAML contents when using get. |
—out <PATH> | Write ABI YAML contents from get to a file. |
| Command | Syntax |
|---|---|
create | thru abi account create [FLAGS] <SEED> <ABI_FILE> |
upgrade | thru abi account upgrade [FLAGS] <SEED> <ABI_FILE> |
finalize | thru abi account finalize [FLAGS] <SEED> |
close | thru abi account close [FLAGS] <SEED> |
get | thru abi account get <ABI_ACCOUNT> [—include-data] [—out <PATH>] |
thru abi account create my_program ./program.abi.yamlthru abi account create \ --account-type third-party \ --target-program ta...$program_id \ --publisher default \ 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \ ./community.abi.yamlthru abi account create \ --account-type standalone \ --publisher default \ shared_types \ ./types.abi.yamlthru abi account get --include-data --out ./downloaded.abi.yaml ta...$abi_accountthru program create my_program ./build/program.binthru abi account create my_program ./program.abi.yamlthru abi account get --include-data ta...$abi_accountthru abi account upgrade my_program ./program_v2.abi.yamlthru abi account get --include-data ta...$abi_accountthru abi account finalize my_programthird-party accounts require --target-program. Without it, the command cannot derive the ABI account.upgrade and close fail once an ABI account has been finalized.seed meaning changes with --account-type, so do not reuse a human-readable standalone seed where a third-party 32-byte hex seed is expected.get takes an ABI account address, not the original program seed.