@abcwalletio/solana
v1.0.0
Published
ABC WaaS Solana adapter — MPC-based @solana/wallet-adapter-base compatible wallet (ed25519)
Readme
@abcwalletio/solana
ABC WaaS SDK의 Solana 체인 어댑터입니다. @solana/wallet-adapter-base의
BaseMessageSignerWalletAdapter를 구현하므로 useWallet() 훅 및 기존 Solana
dApp 생태계와 그대로 통합됩니다.
Installation
pnpm add @abcwalletio/solana @abcwalletio/core @solana/web3.js @solana/wallet-adapter-basePeer Dependencies
@abcwalletio/core@solana/web3.js>=1.90.0@solana/wallet-adapter-base>=0.9.0
Quick Start
import { createWaasSDK, LocalStorageAdapter } from '@abcwalletio/core';
import { AbcSolanaAdapter } from '@abcwalletio/solana';
const sdk = await createWaasSDK({
storage: new LocalStorageAdapter(),
auth: { v2: { clientId: '...', clientSecret: '...' } },
});
// Solana는 ed25519 키 사용 — 최초 1회 생성
await sdk.mpc.generateKeyShare('ed25519', 'password');
const adapter = new AbcSolanaAdapter({
sdk,
requestPassword: async () => prompt('MPC 비밀번호?') ?? '',
});
await adapter.connect();
console.log('Address:', adapter.publicKey?.toBase58());React + WalletProvider 통합
import { WalletProvider } from '@solana/wallet-adapter-react';
const adapters = [new AbcSolanaAdapter({ sdk, requestPassword })];
<WalletProvider wallets={adapters} autoConnect>
{/* useWallet() 훅이 adapter를 자동 인식 */}
</WalletProvider>API
new AbcSolanaAdapter(config)
interface AbcSolanaAdapterConfig {
sdk: WaasSDK;
requestPassword: () => Promise<string>;
keyId?: string; // 생략 시 sdk.mpc.getDefaultKeyId('ed25519') 자동 조회
}메서드 (BaseMessageSignerWalletAdapter 규격)
| 메서드 | 설명 |
|--------|------|
| connect() | MPC 공개키로 Solana PublicKey 도출 및 연결 |
| disconnect() | 상태 초기화 + disconnect 이벤트 emit |
| signTransaction(tx) | 레거시/Versioned 트랜잭션 서명 (ed25519) |
| signAllTransactions(txs) | 여러 트랜잭션 일괄 서명 — password는 1회만 요청 |
| signMessage(message) | raw 메시지 서명 → Uint8Array 반환 |
특징
- ed25519 MPC 서명:
sdk.mpc.signAuto()가 ed25519에 대해 표준 MPC 서명을 사용 - 단일 비밀번호 요청: 여러 트랜잭션 일괄 서명 시 password를 1회만 요청
- SDK 이벤트 연동:
sdk.logout()등의 이벤트를 같은 인스턴스를 공유하는 어댑터가 자동으로 감지
License
MIT — Copyright (c) 2026 Ahnlab Blockchain Company
