Ethereal Chain Documentation
  • Introduction
  • Industry use cases
    • Decentralized applications
    • NFT Marketplaces
    • Decentralized finance
  • Wallets
    • Ethereal Wallet Guide
    • App Wallets
      • Ethereal Wallets
  • Web Wallets
    • Web Wallets
  • Command-Line Wallets
    • Command-Line Wallets
    • Paper Wallet
    • File System Wallet
  • Support/ Troubleshooting
  • Staking
    • Staking on Ethereal
    • Stake Account Structure
  • Grants
    • Ethereal's $100 Thousand Grants Program
    • Ethereal's Grants Process
  • Command Line
    • Command-line Guide
    • Install the Ethereal Tool Suite
    • Using Ethereal CLI
    • Connecting to a Cluster
    • Send and Receive Tokens
    • Offline Transaction Signing
    • Durable Transaction Nonces
  • Developing on native Ethereal
    • Programming Model
      • Overview
      • Transactions
      • Accounts
      • Runtime
      • Calling Between Programs
  • Clients
    • JSON RPC API
    • JavaScript API
  • Runtime Facilities
    • Native Programs
    • Sysvar Cluster Data
  • On-chain Programs
    • Overview
    • Developing with Rust
    • Developing with C
    • Deploying
    • Debugging
  • Ethereal Test Validator
  • EVM Integration
    • EVM in Ethereal
    • Legacy Address convention
    • EVM Bridge
  • Integrating
    • Add Ethereal to Your Exchange
  • Validating
    • Running a Validator
    • Validator Requirements
    • Starting a Validator
    • Vote Account Management
    • Staking
    • Monitoring a Validator
    • Publishing Validator Info
  • Clusters
    • Ethereal Clusters
    • Benchmark a Cluster
    • Performance Metrics
  • Architecture
    • Cluster
      • Ethereal Cluster
      • Synchronization
      • Leader Rotation
      • Fork Generation
    • Validator
      • Anatomy of a Validator
      • Blockstore
      • Gossip Service
  • Software
    • Vision Documentation
    • Quick Start
    • Specifications
    • Technical Perspective
  • Tutorials
    • Solidity Tutorials
      • Deploy a NFT (ERC-721) Tutorial
      • Deploy a Smart Contract
      • Deploy a ERC-20 Token
      • How To Build an NFT Marketplace
  • Set up MetaMask (Mainnet)
  • Set up MetaMask (Testnet)
Powered by GitBook
On this page
  1. On-chain Programs

Deploying

PreviousDeveloping with CNextDebugging

Last updated 1 year ago

Deploying

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 EtherealNetwork 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 executable and its account data become permanently immutable. If any changes are required to the program (features, patches, etc...) the new program must be deployed to a new program ID.

The EtherealNetwork command line interface supports deploying programs, for more information see the deploy command line usage documentation.