Deploy a program
Program deployments are done by invoking the BPF Loader program.
This is a special builtin program that allows the program to access additional computational resources like verifying the program that is being deployed.
To deploy a program you use the solana
cli:
solana program deploy .
When you run this the CLI is going to send a set of transactions.
First it allocates a buffer account where it writes the program's ELF file. These can be quite large so it happens over several transactions that chunk it in.
Once this process finishes, a final deploy
instruction is given which will verify the ELF stored in the buffer account. Then it moves the ELF into a real program account and marks it as executable.
This verification is handled by:
- Loading the program as an eBPF executable with a strict runtime environment
- Verify the loaded executor (usually
rBPF
) against the ISA. - Reload the program with the current runtime environment
This is all done so we can get a nice executable
boolean on programs, discarding the invalid ones, which allows the runtime not to have to recheck whether the program is valid or not.