arch_program/
lib.rs

1#![allow(unexpected_cfgs)]
2/*!
3# Arch Program
4A Rust library for building programs that run inside the Arch Virtual Machine. This crate
5provides core functionality for creating instructions, managing accounts, handling program
6errors, and interacting with the Arch runtime environment.
7## Features
8- Bitcoin transaction and UTXO management
9- Account data manipulation and ownership verification
10- System instruction creation and processing
11- Program error handling
12- Logging utilities
13- Cryptographic operations including secp256k1 signature recovery
14- Memory management for on-chain programs
15## Usage
16Add this crate to your `Cargo.toml`:
17```toml
18[dependencies]
19arch_program = "0.4.0"
20```
21Then import the modules you need in your code:
22```rust
23use arch_program::account::AccountInfo;
24use arch_program::pubkey::Pubkey;
25use arch_program::instruction::Instruction;
26// ... other imports as needed
27```
28*/
29
30pub use bitcoin;
31
32/// Account management and ownership verification
33pub mod account;
34/// Atomic operations for u64 values
35pub mod atomic_u64;
36pub mod bpf_loader;
37/// Time-related functionality for on-chain programs
38pub mod clock;
39pub mod compiled_keys;
40/// Utilities for debugging account data
41pub mod debug_account_data;
42/// Error handling for decoding operations
43pub mod decode_error;
44/// Program entrypoint definitions and processing
45pub mod entrypoint;
46/// Helper functions for common operations
47pub mod helper;
48/// Bitcoin transaction input signing utilities
49pub mod input_to_sign;
50/// Instruction definitions and processing
51pub mod instruction;
52pub mod loader_instruction;
53/// Logging functionality for on-chain programs
54pub mod log;
55/// Message format and processing utilities
56pub mod message;
57pub mod native_loader;
58/// Program runtime interfaces and state management
59pub mod program;
60/// Error types for program operations
61pub mod program_error;
62/// Memory management for program execution
63pub mod program_memory;
64/// Optional value representation for programs
65pub mod program_option;
66/// Data serialization and deserialization for on-chain storage
67pub mod program_pack;
68/// Stub implementations for program interfaces
69pub mod program_stubs;
70pub mod program_utils;
71/// Public key definitions and operations
72pub mod pubkey;
73/// Sanitization trait and error types for validating over-the-wire messages
74pub mod sanitize;
75/// Sanitized transaction processing
76pub mod sanitized;
77/// Secp256k1 signature recovery utilities
78pub mod sol_secp256k1_recover;
79/// Stable memory layout implementations
80pub mod stable_layout;
81pub mod stake;
82/// System call interfaces for interacting with the runtime
83pub mod syscalls;
84/// System instruction definitions and creation
85pub mod system_instruction;
86pub mod system_program;
87/// Bitcoin transaction signing utilities
88pub mod transaction_to_sign;
89/// Bitcoin UTXO (Unspent Transaction Output) management
90pub mod utxo;
91pub mod vote;
92
93#[macro_use]
94extern crate serde_derive;
95
96/// Maximum size of a Bitcoin transaction in bytes
97pub const MAX_BTC_TX_SIZE: usize = 3976;
98
99pub mod builtin {
100    use super::*;
101    use crate::pubkey::Pubkey;
102
103    pub const BUILTIN_PROGRAMS_ID: &[Pubkey] = &[
104        native_loader::NATIVE_LOADER_ID,
105        system_program::SYSTEM_PROGRAM_ID,
106        bpf_loader::BPF_LOADER_ID,
107    ];
108}