Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/shreed27/DAIN --skill bridge명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | bridge |
| description | Cross-chain token transfers using Wormhole and CCTP |
| emoji | 🌉 |
| gates | {"envs":{"anyOf":["SOLANA_PRIVATE_KEY","EVM_PRIVATE_KEY"]}} |
Transfer tokens across chains using Wormhole and Circle CCTP protocols.
| Chain | Wormhole | CCTP (USDC) |
|---|---|---|
| Solana | Yes | Yes |
| Ethereum | Yes | Yes |
| Polygon | Yes | Yes |
| Arbitrum | Yes | Yes |
| Optimism | Yes | Yes |
| Avalanche | Yes | Yes |
| Base | Yes | Yes |
/bridge quote 100 USDC sol to eth # Quote 100 USDC Solana → Ethereum
/bridge quote 1000 USDC arb to base # Quote Arbitrum → Base
/bridge quote 50 USDC eth to sol # Quote Ethereum → Solana
/bridge send 100 USDC sol to eth # Send 100 USDC Solana → Ethereum
/bridge send 1000 USDC arb to base # Send Arbitrum → Base
/bridge send 50 USDC eth to sol --address <dest> # To specific address
/bridge redeem <tx-hash> # Claim transferred tokens
/bridge pending # List pending redemptions
/bridge status <tx-hash> # Check transfer status
/bridge history # View transfer history
import { executeWormholeBridge, executeWormholeRedeem } from 'clodds/bridge/wormhole';
// Get quote
const quote = await getWormholeQuote({
sourceChain: 'solana',
destChain: 'ethereum',
token: 'USDC',
amount: 100,
});
console.log(`Transfer 100 USDC: Solana → Ethereum`);
console.log(`Fee: $${quote.fee}`);
console.log(`Est. time: ${quote.estimatedTime} seconds`);
// Execute transfer
const transfer = await executeWormholeBridge({
sourceChain: 'solana',
destChain: 'ethereum',
token: 'USDC',
amount: 100,
// Source wallet
sourcePrivateKey: process.env.SOLANA_PRIVATE_KEY,
// Destination address (optional, defaults to your address)
destAddress: '0x1234...',
});
console.log(`Transfer initiated: ${transfer.txHash}`);
console.();
.();
redeem = ({
: ,
: transfer.,
: process..,
});
.();
.();
import { executeCCTPBridge, redeemCCTP } from 'clodds/bridge/cctp';
// CCTP is optimized for USDC transfers
const transfer = await executeCCTPBridge({
sourceChain: 'arbitrum',
destChain: 'base',
amount: 1000, // USDC
sourcePrivateKey: process.env.EVM_PRIVATE_KEY,
destAddress: '0x1234...',
});
console.log(`CCTP transfer: ${transfer.txHash}`);
console.log(`Message: ${transfer.messageHash}`);
// Wait for attestation (usually ~15 minutes)
await waitForAttestation(transfer.messageHash);
// Redeem
const redeem = await redeemCCTP({
destChain: 'base',
messageHash: transfer.messageHash,
destPrivateKey: process.env.EVM_PRIVATE_KEY,
});
import { getTransferStatus } from 'clodds/bridge';
const status = await getTransferStatus(txHash);
console.log(`Status: ${status.status}`);
// 'pending' | 'confirming' | 'attesting' | 'redeemable' | 'completed' | 'failed'
console.log(`Source confirmations: ${status.sourceConfirmations}`);
console.log(`VAA status: ${status.vaaStatus}`);
console.log(`Redeemed: ${status.redeemed}`);
if (status.status === 'redeemable') {
console.log(`Ready to redeem! VAA: ${status.vaa}`);
}
import { getPendingRedemptions } from 'clodds/bridge';
const pending = await getPendingRedemptions({
chains: ['ethereum', 'solana', 'arbitrum'],
address: myAddress,
});
for (const p of pending) {
console.log(`${p.sourceChain} → ${p.destChain}`);
console.log(` Amount: ${p.amount} ${p.token}`);
console.log(` Status: ${p.status}`);
console.log(` Age: ${p.age} minutes`);
}
| Route | Fee | Time |
|---|---|---|
| Solana → Ethereum | ~$5 | 15-20 min |
| Ethereum → Solana | ~$20 | 15-20 min |
| Arbitrum → Base (CCTP) | ~$0.50 | 15-20 min |
| Polygon → Arbitrum | ~$1 | 15-20 min |