Why Solana for BACON?
Solana is a high-performance blockchain that offers exceptional speed and low transaction costs, making it ideal for frequent reward distributions and micro-transactions in the BACON ecosystem.
Key Advantages
Ultra-Fast
Process 65,000+ transactions per second
Low Costs
Transaction fees average $0.00025
SPL Tokens
Native token standard with rich functionality
Developer-Friendly
Excellent tooling and documentation
Setting Up Solana
Install Solana CLI
# Install Solana CLI tools sh -c "$(curl -sSfL https://release.solana.com/stable/install)" # Verify installation solana --version # Set cluster (mainnet-beta, devnet, or testnet) solana config set --url https://api.mainnet-beta.solana.com
Create Solana Wallet
# Generate new keypair solana-keygen new --outfile ~/.config/solana/bacon-wallet.json # Check wallet address solana address # Check balance solana balance # Airdrop SOL (devnet/testnet only) solana airdrop 2
Install SPL Token CLI
# Install SPL Token program cargo install spl-token-cli # Verify installation spl-token --version
Creating BACON SPL Token
Create Token
Create your BACON SPL token on Solana:
# Create token with 8 decimals spl-token create-token --decimals 8 # Save the token address (mint address) # Example: 7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs # Create token account spl-token create-account TOKEN_ADDRESS # Check token accounts spl-token accounts
Mint Initial Supply
Mint BACON tokens to your treasury:
# Mint 21 million BACON tokens spl-token mint TOKEN_ADDRESS 21000000 # Check supply spl-token supply TOKEN_ADDRESS # Check balance spl-token balance TOKEN_ADDRESS
Configure Token Metadata
Add metadata for your token (name, symbol, logo):
const { createMetadata } = require('@metaplex-foundation/mpl-token-metadata');
await createMetadata({
mint: tokenAddress,
metadata: {
name: 'BACON',
symbol: 'BACON',
uri: 'https://blt-bacon.github.io/metadata. json',
sellerFeeBasisPoints: 0,
creators: null,
collection: null,
uses: null
}
});
Initialize BACON SDK
Connect BACON SDK to Solana:
const BaconSDK = require('@blt-bacon/sdk');
const bacon = new BaconSDK({
blockchain: 'solana',
network: 'mainnet-beta',
cluster: 'https://api.mainnet-beta.solana.com',
wallet: {
privateKey: process.env.SOLANA_PRIVATE_KEY,
publicKey: process.env.SOLANA_PUBLIC_KEY
},
token: {
mint: process.env.SPL_TOKEN_MINT,
decimals: 8
}
});
Distributing Rewards
Single Transfer
// Transfer BACON tokens to contributor
await bacon.transfer({
to: 'ContributorSolanaAddress',
amount: 100,
memo: 'Reward for PR #123'
});
// Using SPL Token CLI
spl-token transfer TOKEN_ADDRESS 100 RECIPIENT_ADDRESS
Batch Transfers
// Batch transfer to multiple recipients
await bacon.batchTransfer({
transfers: [
{ to: 'Address1', amount: 50, memo: 'Issue #101' },
{ to: 'Address2', amount: 75, memo: 'PR #102' },
{ to: 'Address3', amount: 100, memo: 'Bug fix #103' }
]
});
// This creates one transaction with multiple instructions
// Much more efficient than individual transfers
Automated Rewards via Webhooks
const express = require('express');
const app = express();
app.post('/webhook/github', async (req, res) => {
const event = req.body;
if (event.action === 'opened' && event.issue) {
// Reward issue reporter
await bacon.reward({
user: event.issue.user.login,
amount: 10,
reason: `Issue #${event.issue.number}`
});
}
if (event.action === 'closed' && event.pull_request?.merged) {
// Reward PR merger
await bacon.reward({
user: event.pull_request.user.login,
amount: 50,
reason: `PR #${event.pull_request.number}`
});
}
res.sendStatus(200);
});
Advanced Features
Associated Token Accounts
Automatically create token accounts for recipients
- Auto-create if doesn't exist
- Simplifies recipient onboarding
- Reduces setup friction
Token Vesting
Implement vesting schedules for long-term rewards
- Custom vesting schedules
- Cliff and linear release
- Lock rewards over time
Staking Rewards
Allow users to stake BACON for additional rewards
- Configurable APY rates
- Flexible lock periods
- Automated reward distribution
Multi-Signature Treasury
Secure treasury with multi-sig protection
- Multiple approvers required
- Enhanced security
- Transaction proposals
Performance Optimization
Transaction Optimization
- Batch multiple operations
- Use compute unit pricing
- Implement retry logic
Cost Management
- Optimize compute units
- Use versioned transactions
- Monitor transaction costs
Speed Enhancement
- WebSocket for real-time updates
- Preflight transaction checks
- Cache account data
Error Handling
- Exponential backoff
- Handle blockhash expiration
- Automatic recovery
Ready to Use Solana?
Start distributing fast, low-cost rewards with Solana