2020-11-03 12:53:17 -08:00
|
|
|
---
|
|
|
|
title: "Deploying"
|
|
|
|
---
|
|
|
|
|
|
|
|
![SDK tools](/img/sdk-tools.svg)
|
|
|
|
|
|
|
|
As shown in the diagram above, a program author creates a program, compiles it
|
|
|
|
to an ELF shared object containing BPF bytecode, and uploads it to the Solana
|
|
|
|
cluster with a special _deploy_ transaction. The cluster makes it available to
|
|
|
|
clients via a _program ID_. The program ID is an _address_ specified when
|
|
|
|
deploying and is used to reference the program in subsequent transactions.
|
|
|
|
|
|
|
|
Upon a successful deployment the account that holds the program is marked
|
2021-04-30 01:20:56 -07:00
|
|
|
executable and its account data become permanently immutable. If any changes
|
2020-11-03 12:53:17 -08:00
|
|
|
are required to the program (features, patches, etc...) the new program must be
|
|
|
|
deployed to a new program ID.
|
|
|
|
|
|
|
|
The Solana command line interface supports deploying programs, for more
|
|
|
|
information see the [`deploy`](cli/usage.md#deploy-program) command line usage
|
|
|
|
documentation.
|