Skip to content

Latest commit

Β 

History

History
278 lines (210 loc) Β· 7.42 KB

File metadata and controls

278 lines (210 loc) Β· 7.42 KB

🏒 Advanced Token Contract

An enterprise-grade ERC-20 style token contract built with ink! v5.1.1, featuring advanced security controls, administrative functions, and comprehensive token management capabilities.

Build Success

πŸ“‹ Overview

This token contract implements a complete ERC-20 style token with enterprise features:

  • Core Functionality: Transfer, approve, allowance operations
  • Burn Mechanism: Users can burn their own tokens
  • Pausable: Emergency pause functionality for security
  • Blacklist: Address blacklisting capability
  • Batch Operations: Multi-recipient transfers
  • Owner Controls: Administrative functions

πŸ—οΈ Architecture

Core Features

  • Standard Token Operations: Transfer, approve, allowance
  • Burn Functionality: Token destruction with supply reduction
  • Pause/Unpause: Emergency stop mechanism
  • Blacklist Management: Address restriction system
  • Batch Transfers: Efficient multi-recipient operations
  • Owner Controls: Administrative oversight

Data Structures

pub struct Token {
    total_supply: Balance,                    // Total token supply
    balances: Mapping<AccountId, Balance>,    // User balances
    allowances: Mapping<(AccountId, AccountId), Balance>, // Allowances
    owner: AccountId,                         // Contract owner
    paused: bool,                            // Pause state
    blacklist: Mapping<AccountId, bool>,     // Blacklisted addresses
}

πŸš€ Features

Standard Token Operations

  • Transfer: Move tokens between accounts
  • Approve: Authorize spending by another account
  • Transfer From: Spend tokens on behalf of another account
  • Allowance: Check authorized spending amount
  • Balance Of: Query account balance
  • Total Supply: Get total token supply

Advanced Features

  • Burn: Destroy tokens and reduce supply
  • Pause/Unpause: Emergency stop mechanism
  • Blacklist: Restrict specific addresses
  • Batch Transfer: Send to multiple recipients
  • Owner Controls: Administrative functions

Security Features

  • Pausable: Emergency stop for security incidents
  • Blacklist: Prevent malicious addresses from transacting
  • Access Control: Owner-only administrative functions
  • Safe Arithmetic: Overflow/underflow protection
  • Input Validation: Comprehensive parameter checking

πŸ› οΈ Usage

Building the Contract

# Development build
cargo contract build

# Production build
cargo contract build --release

Deploying

# Deploy with initial supply
cargo contract instantiate --constructor new --args 1000000 --suri //Alice --skip-confirm

Key Functions

Standard Token Operations

// Transfer tokens
transfer(to: AccountId, value: Balance) -> Result<()>

// Approve spending
approve(spender: AccountId, value: Balance) -> Result<()>

// Transfer from (using allowance)
transfer_from(from: AccountId, to: AccountId, value: Balance) -> Result<()>

// Check balance
balance_of(owner: AccountId) -> Balance

// Check allowance
allowance(owner: AccountId, spender: AccountId) -> Balance

// Get total supply
total_supply() -> Balance

Advanced Operations

// Burn tokens
burn(value: Balance) -> Result<()>

// Pause contract (owner only)
pause() -> Result<()>

// Unpause contract (owner only)
unpause() -> Result<()>

// Check if paused
is_paused() -> bool

Blacklist Management

// Add to blacklist (owner only)
blacklist_address(account: AccountId) -> Result<()>

// Remove from blacklist (owner only)
remove_from_blacklist(account: AccountId) -> Result<()>

// Check if blacklisted
is_blacklisted(account: AccountId) -> bool

Batch Operations

// Transfer to multiple recipients
batch_transfer(recipients: Vec<(AccountId, Balance)>) -> Result<()>

πŸ§ͺ Testing

Unit Tests

cargo test

Test Coverage

The contract includes comprehensive tests covering:

  • Standard token operations
  • Burn functionality
  • Pause/unpause mechanisms
  • Blacklist operations
  • Batch transfers
  • Access control
  • Error conditions
  • Edge cases

πŸ“Š Events

The contract emits events for all major operations:

// Token transfers
Transfer { from: Option<AccountId>, to: Option<AccountId>, value: Balance }

// Approvals
Approval { owner: AccountId, spender: AccountId, value: Balance }

// Token burning
Burn { from: AccountId, value: Balance }

// Pause state changes
Paused { by: AccountId }
Unpaused { by: AccountId }

// Blacklist changes
Blacklisted { account: AccountId }
RemovedFromBlacklist { account: AccountId }

πŸ”§ Configuration

Cargo.toml

[dependencies]
ink = { version = "5.1.1", default-features = false }
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
scale-info = { version = "2.11", default-features = false, features = ["derive"] }

🌐 Use Cases

DeFi Applications

  • Lending Protocols: Collateral tokens
  • DEX Trading: Trading pairs
  • Staking: Reward tokens
  • Yield Farming: Farm tokens

Enterprise Applications

  • Corporate Tokens: Internal company tokens
  • Loyalty Programs: Customer reward systems
  • Asset Tokenization: Real-world asset representation
  • Payment Systems: Digital payment tokens

Security Applications

  • Compliance: Regulatory compliance features
  • Access Control: Administrative oversight
  • Emergency Response: Pause functionality
  • Risk Management: Blacklist capabilities

πŸ”’ Security Considerations

Implemented Security Features

  • Pausable: Emergency stop mechanism
  • Blacklist: Address restriction system
  • Access Control: Owner-only functions
  • Safe Arithmetic: Overflow protection
  • Input Validation: Parameter checking
  • Event Logging: Full transparency

Security Best Practices

  • All administrative functions are owner-only
  • Pause mechanism for emergency situations
  • Blacklist for malicious address prevention
  • Comprehensive event logging
  • Safe arithmetic operations
  • Input validation on all functions

πŸ“ˆ Performance

Storage Optimization

  • Efficient mapping-based storage
  • Minimal data duplication
  • Optimized struct layout

Gas Optimization

  • Batch operations for multiple transfers
  • Minimal storage writes
  • Efficient data structures
  • Optimized function implementations

πŸ›‘οΈ Administrative Functions

Owner Controls

  • Pause/Unpause: Emergency stop mechanism
  • Blacklist Management: Address restriction
  • Contract Ownership: Administrative oversight

Emergency Procedures

  1. Security Incident: Use pause() to stop all transfers
  2. Malicious Address: Use blacklist_address() to restrict
  3. Recovery: Use unpause() and remove_from_blacklist() to restore

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

πŸ“„ License

This project is provided as-is for educational purposes. Check the main repository for licensing information.

πŸ†˜ Support

For issues and questions:

  • Create an issue in the repository
  • Check the main README for troubleshooting
  • Review the ink! documentation

πŸ¦€ Built with Rust + ink! v5.1.1

This advanced token contract demonstrates enterprise-grade smart contract development patterns and serves as a foundation for building secure, feature-rich token systems.