A comprehensive Bitcoin platform built on Rust, focusing on decentralization, security, and privacy while adhering to core Bitcoin principles.
Current Version: 0.2.1
Last Updated: March 1, 2025
OPSource adheres to fundamental Bitcoin principles:
- Decentralization: Ensuring no single point of failure or control
- Security: Implementing rigorous security practices for all operations
- Immutability: Preserving the integrity and permanence of blockchain data
- Privacy: Enhancing user privacy through advanced cryptographic techniques
- Transparency: Providing clear visibility into all transaction processes
OPSource is built on a modular, hexagonal architecture with clean separation of concerns:
anya-core/
├── dependencies/
│ ├── anya-bitcoin/ # Core Bitcoin functionality
│ │ ├── src/
│ │ │ ├── wallet.rs # Secure HD wallet implementation
│ │ │ ├── transaction.rs # Transaction handling
│ │ │ ├── taproot.rs # Taproot implementation
│ │ │ ├── dlc/ # Discrete Log Contracts
│ │ │ ├── rgb/ # RGB asset protocol
│ │ │ ├── lightning/ # Lightning Network
│ │ │ ├── rsk/ # RSK sidechain integration
│ │ │ ├── stacks/ # Stacks blockchain integration
│ │ │ └── web5/ # Web5 and DID implementation
│ │ └── Cargo.toml # Dependencies and configuration
│ └── anya-extensions/ # Additional functionality
└── src/
├── enterprise/ # Enterprise features
└── extensions/ # Extension modules
- Bitcoin Network Protocol: Complete implementation using
rust-bitcoin
- HD Wallet Management: BIP-32/39/44/84/86 compliant wallets using Bitcoin Dev Kit
- Transaction Handling: Advanced transaction construction and signing
- Script Verification: Complete Bitcoin Script interpreter
- Mempool Management: Transaction validation and propagation
- P2P Networking: Robust networking with peer discovery
- SIP-010 Support: Full implementation of the fungible token standard
- SIP-009 Support: Complete non-fungible token (NFT) standard integration
- Contract Deployment: Deploy and interact with Clarity smart contracts
- Post Conditions: Transaction safeguards with customizable conditions
- Contract Call Builder: Fluent API for building contract calls
- Local Simulation: Test contracts locally before deploying to mainnet
- Taproot Support: Privacy-enhanced multisig that looks like single-sig
- Discrete Log Contracts (DLC): Privacy-preserving oracle-based contracts
- RGB Protocol: Client-validated smart contracts and asset issuance on Bitcoin
- Lightning Network: Second-layer scaling solution for instant payments
- RSK Integration: Bitcoin-secured EVM-compatible smart contracts
- Stacks Integration: Smart contracts secured by Bitcoin consensus
- Integrated DAO Platform: Create and manage decentralized autonomous organizations
- Multi-signature Governance: Configure customizable voting thresholds and periods
- Proposal System: Generate, track, and vote on governance proposals
- Metrics Dashboard: Monitor DAO health and participation metrics
- Extensible Rules Engine: Create custom governance rules and constraints
- Memory Safety: Rust's ownership model eliminates entire classes of vulnerabilities
- Hardened Cryptography: Modern, audited cryptographic libraries
- Zero-Knowledge Proofs: Privacy-enhancing cryptographic techniques
- Coin Selection Privacy: Algorithms to prevent transaction graph analysis
- Tor Integration: Network privacy via onion routing
- Decentralized Identifiers (DIDs): Self-sovereign identity management
- Decentralized Web Nodes (DWNs): Personal data storage and management with Bitcoin anchoring
- Enhanced Storage: Store and manage encrypted user data
- Bitcoin Anchoring: Anchor DWN messages to Bitcoin for data integrity
- Anchoring Verification: Verify data integrity through blockchain confirmation
- Status Tracking: Monitor message status with confirmations and block info
- Verifiable Credentials: Privacy-preserving attestations with Bitcoin anchoring
- OP_RETURN Anchoring: Securely anchor credential hashes to the Bitcoin blockchain
- Revocation Support: Revoke credentials through Bitcoin transactions
- Verification: Verify credential authenticity through blockchain confirmation
- Status Tracking: Monitor credential status with confirmations and block info
- Handshake Support: Decentralized DNS alternatives
- Auto-configuration: Optimizes ML settings based on hardware capabilities
- Hardware Detection: Identifies CPU, memory, and GPU resources
- Framework Support: TensorFlow and PyTorch integration
- Performance Optimization: Automatic batch size and parallelism configuration
As of March 1, 2025, the OPSource project has achieved 90% of planned code functionality.
- âś… Bitcoin Core Functionality: Complete implementation of Bitcoin protocol functionality
- âś… Taproot Support: Full implementation of Taproot for enhanced privacy and reduced fees
- âś… DLC Foundation: Basic implementation of Discrete Log Contracts
- âś… RSK Integration: Base implementation for EVM-compatible smart contracts
- âś… RGB Framework: Initial framework for RGB asset issuance
- âś… Stacks Integration: Complete implementation with SIP-010 tokens and SIP-009 NFTs
- âś… Web5 Basics: Core DID methods, Bitcoin-anchored verifiable credentials, and DWN with Bitcoin anchoring
- âś… ML Support: Hardware detection and auto-configuration
- âś… Rust Migration: Over 50% of codebase migrated to Rust
OPSource utilizes a checkpoint system to ensure the integrity and consistency of the blockchain. This system involves periodically anchoring the state of the blockchain to the Bitcoin blockchain, providing a secure and tamper-proof record of all transactions and smart contract executions.
- Checkpoint Frequency: Checkpoints are created every 1000 blocks
- Checkpoint Data: Includes the current state of the blockchain, including all transactions and smart contract executions
- Anchoring Mechanism: Checkpoints are anchored to the Bitcoin blockchain using OP_RETURN transactions
- 🔄 Lightning Network: Integration with LDK (10% complete)
- 🔄 RGB Asset Transfer: Full transfer functionality (60% complete)
- 🔄 Web5 Extensions: Advanced DID capabilities and schema repository (30% complete)
- 🔄 API Layer: RESTful API implementation (85% complete)
Beta v0.6.0 expected on March 15, 2025, will include expanded API documentation and extended test coverage.
- Rust 1.77+
- Cargo
- OpenSSL development libraries
# Clone the repository
git clone https://github.com/Anya-org/OPSource.git
cd OPSource
# Simple installation with default options
cargo run --bin installer -- install --yes
# Advanced installation with specific components
cargo run --bin installer -- install --opsource --setup-wallet --setup-dao --with-ml --ml-framework tensorflow --auto-config-ml
#### Installation Options
The unified installer supports various installation options:
USAGE: installer install [OPTIONS]
OPTIONS: --core-only Install core components only -y, --yes Skip confirmation prompts --with-python Install Python dependencies --component Specific component (bitcoin, web5, rgb, dlc, taproot, stacks, all) --opsource Install OPSource components --anya Install anya-core components --anya-modules Anya modules (comma-separated: bitcoin,lightning,web5,extensions) --auto-config-anya Auto-configure anya-core after installation --with-ml Install machine learning components --ml-framework ML framework (tensorflow, pytorch, both) --auto-config-ml Auto-configure ML based on machine specs --max-memory Maximum memory to use during installation (in MB) --setup-wallet Setup wallet during installation --setup-dao Setup DAO during installation
### Testing
```bash
# Run all tests
cargo run --bin installer -- test
# Test specific components
cargo run --bin installer -- test --component wallet
cargo run --bin installer -- test --component dao
cargo run --bin installer -- test --component ml
# Generate JSON test report
cargo run --bin installer -- test --json
use anya_bitcoin::{wallet, transaction};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create wallet configuration
let config = wallet::WalletConfig {
name: "my_wallet".to_string(),
database_path: "./wallet.db".into(),
network: bitcoin::Network::Testnet,
electrum_url: "ssl://electrum.blockstream.info:60002".to_string(),
password: None,
mnemonic: None,
use_taproot: true,
};
// Create wallet
let wallet = wallet::BitcoinWallet::new(config).await?;
// Get a new address
let address = wallet.get_address(bdk::wallet::AddressIndex::New).await?;
println!("New address: {}", address.address);
Ok(())
}
use anya_bitcoin::{wallet, transaction};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create wallet configuration
let config = wallet::WalletConfig {
network: wallet::Network::Testnet,
wallet_type: wallet::WalletType::DescriptorWallet,
address_type: wallet::AddressType::Bech32,
mnemonic_passphrase: Some("secure passphrase".to_string()),
};
// Create a new wallet
let wallet = wallet::BitcoinWallet::new(&config)?;
// Generate a new address
let address = wallet.generate_address()?;
println!("Generated address: {}", address);
// Create and sign a transaction
let recipient = "tb1q8g0j0wvmv2dh8ygxadqz5gqt3dz4xtvr8fhkln";
let amount = 0.001; // BTC
let tx = wallet.create_transaction(recipient, amount, None)?;
let signed_tx = wallet.sign_transaction(&tx)?;
// Broadcast the transaction
let txid = wallet.broadcast_transaction(&signed_tx).await?;
println!("Transaction broadcasted: {}", txid);
Ok(())
}
use anya_bitcoin::web5::{Web5Manager, CredentialManager};
use serde_json::json;
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize Web5 manager with Bitcoin wallet for anchoring
let wallet_config = wallet::WalletConfig {
network: wallet::Network::Testnet,
wallet_type: wallet::WalletType::DescriptorWallet,
address_type: wallet::AddressType::Bech32,
mnemonic_passphrase: Some("secure passphrase".to_string()),
};
let bitcoin_wallet = wallet::BitcoinWallet::new(&wallet_config)?;
let web5_manager = Web5Manager::new(Some(bitcoin_wallet));
// Create DIDs for issuer and subject
let issuer_did = web5_manager.create_did("key").await?;
let subject_did = web5_manager.create_did("key").await?;
// Prepare credential claims
let mut claims = HashMap::new();
claims.insert("name".to_string(), json!("Alice"));
claims.insert("age".to_string(), json!(30));
claims.insert("authorized".to_string(), json!(true));
// Issue a Bitcoin-anchored credential
let credential = web5_manager.issue_anchored_credential(
&issuer_did,
&subject_did,
"IdentityCredential",
claims,
Some(365) // Valid for 1 year
).await?;
println!("Credential issued with ID: {}", credential.id);
println!("Anchoring status: {}", credential.bitcoin_anchoring.as_ref().unwrap().status);
println!("Transaction ID: {}", credential.bitcoin_anchoring.as_ref().unwrap().txid.as_ref().unwrap());
// Verify the credential (including blockchain verification)
let is_valid = web5_manager.verify_credential(&credential).await?;
println!("Credential is valid: {}", is_valid);
// Check if the credential has been confirmed on the blockchain
let confirmations = web5_manager.get_anchoring_confirmations(&credential).await?;
println!("Blockchain confirmations: {}", confirmations);
// Revoke the credential (by broadcasting a revocation transaction)
let revocation_txid = web5_manager.revoke_anchored_credential(&credential).await?;
println!("Credential revoked with transaction: {}", revocation_txid);
Ok(())
}
// Create a decentralized identifier
let did = web5::create_did(wallet)?;
println!("Your DID: {}", did.to_string());
// Create a verifiable credential
let credential = web5::issue_credential(
did,
"EmailCredential",
json!({ "email": "user@example.com" }),
)?;
// Anchor the credential to the Bitcoin blockchain
let txid = web5::anchor_credential(wallet, &credential).await?;
// Create an oracle
let oracle = dlc::Oracle::new("Weather Oracle");
let oracle_pubkey = oracle.public_key();
// Create a DLC with specified outcomes
let outcomes = vec![
("sunny".to_string(), 1_000_000), // 1M sats if sunny
("rainy".to_string(), 500_000), // 500K sats if rainy
];
// Create the contract
let contract = dlc::create_contract(
wallet,
outcomes,
&oracle_pubkey.to_hex(),
).await?;
// Oracle attests to the outcome
let event = dlc::OracleEvent {
id: "weather-2023-04-01".to_string(),
outcome: "sunny".to_string(),
};
let attestation = oracle.attest(&event);
// Execute the contract based on attestation
let txid = dlc::execute_contract(
wallet,
&contract,
attestation,
).await?;
// Check contract status
let status = dlc::get_contract_status(wallet, &contract).await?;
// Create a new DAO configuration
let dao_config = dao::DAOConfig {
name: "OPSource Governance DAO",
governance_type: "multisig",
voting_threshold: 0.66, // 66% required for proposal approval
voting_period_days: 3,
members: vec!["member1".to_string(), "member2".to_string()],
};
// Initialize the DAO
let dao = dao::create_dao(wallet, dao_config).await?;
// Create a new proposal
let proposal = dao::create_proposal(
dao,
"Increase Voting Threshold",
"Proposal to increase voting threshold to 75%",
json!({
"action": "update_parameter",
"parameter": "voting_threshold",
"value": 0.75
}),
).await?;
// Cast a vote
dao::vote(dao, &proposal.id, "member1", dao::Vote::Yes).await?;
// Check proposal status
let status = dao::get_proposal_status(dao, &proposal.id).await?;
// Issue a fungible asset on RGB
let asset = rgb::issue_asset(
wallet,
"My Token",
"TKN",
1_000_000, // 1M units
"This is a sample token issued on RGB",
)?;
// Interact with an RSK smart contract
let contract_address = "0x1234...";
let result = rsk::call_contract(
wallet,
contract_address,
"balanceOf(address)",
vec![my_address],
)?;
OPSource implements state-of-the-art security practices:
- Zero Trust Architecture: All components verified before trusted
- Formal Verification: Critical components formally verified for correctness
- Regular Audits: Continuous security audits by third-party specialists
- Open Source Security: Transparent code review process
- Defense in Depth: Multiple security layers to mitigate different threats
We welcome contributions! Please check our Contribution Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Bitcoin Core Team for their pioneering work on Bitcoin
- Rust Bitcoin community for their excellent libraries
- TBD for their work on Web5 standards
- The RGB community for asset protocol development
- Lightning Network developers for payment channel innovation