@dinolab/crypto-mm
Version:
Crypto Market Maker
256 lines (184 loc) • 5.93 kB
Markdown
A comprehensive TypeScript library for automated market making operations on the Solana blockchain. This library provides tools for token creation, liquidity management, trading volume generation, and profit tracking.
- **Token Creation**: Create new tokens on Solana blockchain
- **DEX Integration**: Launch tokens on various decentralized exchanges
- **Market Making**: Automated boost and volume trading
- **Balance Management**: Multi-wallet balance operations
- **Liquidity Tracking**: Real-time liquidity monitoring
- **Profit Tracking**: Track profits across multiple wallets
- **Batch Operations**: Efficient batch processing for multiple operations
```bash
npm install solana-market-maker
```
```bash
npm install @solana/web3.js axios
```
```typescript
import { SolMM } from 'solana-market-maker';
import { Keypair } from '@solana/web3.js';
// Initialize SolMM
const rpcUrl = 'https://api.mainnet-beta.solana.com';
const testnet = false;
const marketMaker = new SolMM(rpcUrl, testnet);
// Create a wallet keypair
const ownerKeypair = Keypair.generate();
// Example: Get wallet balance
const walletAddresses = ['your-wallet-address'];
const balances = await marketMaker.getBalance(walletAddresses);
console.log(balances);
```
```typescript
new SolMM(rpcUrl: string, testnet: boolean)
```
- `rpcUrl`: Solana RPC endpoint URL
- `testnet`: Boolean flag for testnet/mainnet
### Balance Operations
#### `getBalance(walletAddresses: string[])`
Get native SOL balances for multiple wallet addresses.
```typescript
const balances = await marketMaker.getBalance([
'wallet1_address',
'wallet2_address'
]);
```
Transfer SOL from one wallet to multiple addresses.
```typescript
const signatures = await marketMaker.transferBalance(
senderKeypair,
['recipient1', 'recipient2'],
BigInt(1000000) // Amount in lamports
);
```
Retrieve detailed information about a token.
```typescript
const tokenInfo = await marketMaker.getTokenInfo('token_address');
```
Create a new token on Solana.
```typescript
const tokenParams = {
name: 'My Token',
symbol: 'MTK',
decimals: 9,
supply: BigInt(1000000),
// ... other parameters
};
const tokenAddress = await marketMaker.createToken(tokenParams, ownerKeypair);
```
Launch a token on a specified exchange with liquidity pool creation.
```typescript
const launchResult = await marketMaker.launchToken(
ExchangeType.RAYDIUM,
tokenParams,
{
tokenAmount: BigInt(500000),
nativeAmount: BigInt(1000000000)
},
ownerKeypair
);
```
```typescript
// Start boosting a token
const boostId = await marketMaker.startBoostToken(
ExchangeType.RAYDIUM,
boostParams,
walletKeypair
);
// Pause/Resume/Stop boost
await marketMaker.pauseBoostToken(boostId);
await marketMaker.resumeBoostToken(boostId);
await marketMaker.stopBoostToken(boostId);
```
```typescript
// Start generating trade volume
const tradeId = await marketMaker.startTradeVolume(
ExchangeType.RAYDIUM,
tradeParams,
walletKeypairs
);
// Control trade volume
await marketMaker.pauseTradeVolume(tradeId);
await marketMaker.resumeTradeVolume(tradeId);
await marketMaker.stopTradeVolume(tradeId);
```
```typescript
// Start selling tokens
const sellId = await marketMaker.sellToken(
sellParams,
walletKeypairs,
ownerKeypair
);
// Control selling
await marketMaker.pauseSellToken(sellId);
await marketMaker.resumeSellToken(sellId);
await marketMaker.stopSellToken(sellId);
```
```typescript
// Start tracking liquidity
const isTracking = marketMaker.trackLiquidity(
ExchangeType.RAYDIUM,
'pair_address'
);
// Stop tracking
marketMaker.stopTrackingLiquidity();
```
```typescript
// Start tracking profit
const isTracking = marketMaker.trackProfit(['wallet1', 'wallet2']);
// Stop tracking
marketMaker.stopTrackingProfit();
```
```typescript
marketMaker.on(EventType.LIQUIDITY_CHANGE, (data) => {
console.log('Liquidity changed:', data);
});
marketMaker.on(EventType.PROFIT_UPDATE, (data) => {
console.log('Profit updated:', data);
});
```
```bash
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
SOLANA_TESTNET=false
COMPUTE_UNIT_PRICE=50000
```
The library supports both mainnet and testnet operations:
- **Mainnet**: `https://api.mainnet-beta.solana.com`
- **Testnet**: `https://api.testnet.solana.com`
- **Devnet**: `https://api.devnet.solana.com`
- **Never expose private keys**: Always use environment variables or secure key management
- **Use proper RPC endpoints**: Consider using paid RPC services for production
- **Implement rate limiting**: Be mindful of RPC rate limits
- **Test on devnet first**: Always test your strategies on devnet before mainnet
The library supports integration with various Solana DEXs:
- Raydium
- Pumpfun
- Other AMM protocols
This library is for educational and research purposes. Automated trading carries significant financial risks. Users are responsible for understanding the risks and complying with all applicable regulations. The authors are not responsible for any financial losses.
---
Made with ❤️ for the Solana ecosystem