docs cleanup

pull/800/head
Kye Gomez 3 weeks ago
parent a33e2154d4
commit a13e26d6e9

File diff suppressed because it is too large Load Diff

@ -1,383 +0,0 @@
# $swarms Token Integration Guide
## Overview
This guide covers the integration of $swarms token (74SBV4zDXxTRgv1pEMoECskKBkZHc2yGPnc7GYVepump) payments into your platform using Solana and Phantom wallet. The $swarms token offers numerous benefits on the Solana blockchain, including high transaction per second (TPS) capabilities, low transaction fees, and more.
## Table of Contents
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Architecture Overview](#architecture-overview)
- [Setup Guide](#setup-guide)
- [Integration Examples](#integration-examples)
- [One-Click Payment Implementation](#one-click-payment-implementation)
- [Security Considerations](#security-considerations)
- [Troubleshooting](#troubleshooting)
## Prerequisites
- Node.js v16.x or higher
- TypeScript 4.x or higher
- Phantom Wallet browser extension
- Solana development environment
## Installation
```bash
npm install @solana/web3.js @solana/spl-token @project-serum/anchor @solana/wallet-adapter-react @solana/wallet-adapter-phantom
```
## Architecture Overview
```mermaid
flowchart TB
A[User Interface] -->|Trigger Payment| B[Payment Handler]
B --> C{Phantom Wallet}
C -->|Sign Transaction| D[Solana Network]
D -->|Execute Transfer| E[$swarms Token Contract]
E -->|Confirm Transaction| F[Payment Confirmation]
F -->|Update UI| A
```
## Setup Guide
### 1. Initialize Solana Connection
```typescript
import { Connection, clusterApiUrl } from '@solana/web3.js';
import { PhantomWalletAdapter } from '@solana/wallet-adapter-phantom';
const connection = new Connection(clusterApiUrl('mainnet-beta'));
const wallet = new PhantomWalletAdapter();
// Initialize wallet connection
await wallet.connect();
```
### 2. Configure Token Parameters
```typescript
const SWARMS_TOKEN_ADDRESS = '74SBV4zDXxTRgv1pEMoECskKBkZHc2yGPnc7GYVepump';
interface TokenConfig {
mint: PublicKey;
decimals: number;
}
const swarmTokenConfig: TokenConfig = {
mint: new PublicKey(SWARMS_TOKEN_ADDRESS),
decimals: 9
};
```
### 3. Create Payment Handler
```typescript
export class SwarmPaymentHandler {
private connection: Connection;
private wallet: PhantomWalletAdapter;
constructor(connection: Connection, wallet: PhantomWalletAdapter) {
this.connection = connection;
this.wallet = wallet;
}
async createTransferTransaction(
amount: number,
recipientAddress: string
): Promise<Transaction> {
const transaction = new Transaction();
const transferInstruction = createTransferInstruction(
await getAssociatedTokenAddress(swarmTokenConfig.mint, this.wallet.publicKey),
await getAssociatedTokenAddress(swarmTokenConfig.mint, new PublicKey(recipientAddress)),
this.wallet.publicKey,
amount * Math.pow(10, swarmTokenConfig.decimals)
);
transaction.add(transferInstruction);
return transaction;
}
}
```
## One-Click Payment Implementation
### React Component Example
```typescript
import React, { useState } from 'react';
import { useWallet } from '@solana/wallet-adapter-react';
const SwarmPaymentButton: React.FC<{
amount: number;
recipientAddress: string;
}> = ({ amount, recipientAddress }) => {
const [loading, setLoading] = useState(false);
const wallet = useWallet();
const paymentHandler = new SwarmPaymentHandler(connection, wallet);
const handlePayment = async () => {
try {
setLoading(true);
const transaction = await paymentHandler.createTransferTransaction(
amount,
recipientAddress
);
const signature = await wallet.sendTransaction(transaction, connection);
await connection.confirmTransaction(signature);
// Handle success
console.log('Payment successful:', signature);
} catch (error) {
console.error('Payment failed:', error);
} finally {
setLoading(false);
}
};
return (
<button
onClick={handlePayment}
disabled={loading || !wallet.connected}
className="payment-button"
>
{loading ? 'Processing...' : `Pay ${amount} $swarms`}
</button>
);
};
```
### Payment Flow Sequence
```mermaid
sequenceDiagram
participant User
participant UI
participant PaymentHandler
participant PhantomWallet
participant Solana
User->>UI: Click Pay Button
UI->>PaymentHandler: Create Transaction
PaymentHandler->>PhantomWallet: Request Signature
PhantomWallet->>User: Prompt for Approval
User->>PhantomWallet: Approve Transaction
PhantomWallet->>Solana: Submit Transaction
Solana->>PaymentHandler: Confirm Transaction
PaymentHandler->>UI: Update Status
UI->>User: Show Confirmation
```
## Security Considerations
### Transaction Validation
```typescript
function validateTransaction(
transaction: Transaction,
expectedAmount: number,
expectedRecipient: PublicKey
): boolean {
try {
const instruction = transaction.instructions[0];
const decodedData = TOKEN_PROGRAM_ID.decode(instruction.data);
return (
decodedData.amount === expectedAmount &&
instruction.keys[1].pubkey.equals(expectedRecipient)
);
} catch (error) {
console.error('Transaction validation failed:', error);
return false;
}
}
```
### Error Handling
```typescript
class PaymentError extends Error {
constructor(
message: string,
public code: string,
public transaction?: string
) {
super(message);
this.name = 'PaymentError';
}
}
async function handlePaymentError(error: any): Promise<void> {
if (error instanceof WalletError) {
// Handle wallet-specific errors
throw new PaymentError(
'Wallet error occurred',
'WALLET_ERROR',
error.message
);
} else if (error.code === 'TransactionError') {
// Handle Solana transaction errors
throw new PaymentError(
'Transaction failed',
'TRANSACTION_ERROR',
error.txid
);
}
// Handle other errors...
}
```
## Testing
### Unit Test Example
```typescript
import { expect } from 'chai';
import { SwarmPaymentHandler } from './payment-handler';
describe('SwarmPaymentHandler', () => {
let paymentHandler: SwarmPaymentHandler;
beforeEach(() => {
// Setup test environment
});
it('should create valid transfer transaction', async () => {
const amount = 100;
const recipientAddress = 'recipient_address';
const transaction = await paymentHandler.createTransferTransaction(
amount,
recipientAddress
);
expect(transaction.instructions).to.have.lengthOf(1);
// Add more assertions...
});
});
```
## Troubleshooting
### Common Issues and Solutions
1. **Insufficient Balance**
```typescript
async function checkBalance(
connection: Connection,
walletAddress: PublicKey
): Promise<boolean> {
const balance = await connection.getTokenAccountBalance(
await getAssociatedTokenAddress(swarmTokenConfig.mint, walletAddress)
);
return parseInt(balance.value.amount) > 0;
}
```
2. **Transaction Timeout**
```typescript
async function submitWithRetry(
transaction: Transaction,
maxRetries = 3
): Promise<string> {
let attempt = 0;
while (attempt < maxRetries) {
try {
const signature = await wallet.sendTransaction(transaction, connection);
const confirmation = await connection.confirmTransaction(signature);
if (confirmation.value.err) {
throw new Error('Transaction failed');
}
return signature;
} catch (error) {
attempt++;
if (attempt === maxRetries) throw error;
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
}
}
}
```
## Monitoring and Analytics
### Transaction Monitoring
```typescript
interface TransactionMetrics {
timestamp: number;
amount: number;
success: boolean;
duration: number;
}
class TransactionMonitor {
private metrics: TransactionMetrics[] = [];
logTransaction(metric: TransactionMetrics): void {
this.metrics.push(metric);
// Add your analytics implementation
}
getAverageSuccessRate(): number {
return (
this.metrics.filter(m => m.success).length / this.metrics.length * 100
);
}
}
```
## Advanced Features
### Batch Payments
```typescript
async function createBatchPayment(
recipients: Array<{ address: string; amount: number }>
): Promise<Transaction> {
const transaction = new Transaction();
for (const recipient of recipients) {
const transferInstruction = createTransferInstruction(/* ... */);
transaction.add(transferInstruction);
}
return transaction;
}
```
### Subscription Payments
```typescript
class SubscriptionManager {
async createSubscription(
amount: number,
interval: number,
recipientAddress: string
): Promise<string> {
// Implementation for recurring payments
}
async cancelSubscription(subscriptionId: string): Promise<void> {
// Implementation for cancellation
}
}
```
## Support and Resources
For additional support:
- Solana Documentation: https://docs.solana.com
- Phantom Wallet Docs: https://docs.phantom.app
- $swarms Token Contract: 74SBV4zDXxTRgv1pEMoECskKBkZHc2yGPnc7GYVepump
## Version History
- v1.0.0 - Initial release
- v1.0.1 - Added batch payment support
- v1.0.2 - Enhanced error handling
- v1.0.3 - Added subscription payment feature

@ -2,8 +2,20 @@
[![Join our Discord](https://img.shields.io/badge/Discord-Join%20our%20server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/jM3Z6M9uMq) [![Subscribe on YouTube](https://img.shields.io/badge/YouTube-Subscribe-red?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/@kyegomez3242) [![Connect on LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/kye-g-38759a207/) [![Follow on X.com](https://img.shields.io/badge/X.com-Follow-1DA1F2?style=for-the-badge&logo=x&logoColor=white)](https://x.com/kyegomezb)
## Swarms Installation
**Get Started Building Production-Grade Multi-Agent Applications**
```bash
pip3 install swarms
```
## Update Swarms
```bash
pip3 install -U swarms
```
### **Get Started Building Production-Grade Multi-Agent Applications**
## Onboarding

Loading…
Cancel
Save