{"_id":"@abcwalletio/bitcoin","name":"@abcwalletio/bitcoin","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@abcwalletio/bitcoin","version":"1.0.0","description":"ABC WaaS Bitcoin adapter — MPC-based public key and PSBT (BIP-174) signing for bitcoinjs-lib (secp256k1)","keywords":["waas","bitcoin","psbt","bip-174","bitcoinjs","secp256k1","mpc"],"license":"MIT","author":{"name":"Ahnlab Blockchain Company"},"homepage":"http://abcwaas.com/","publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"sideEffects":false,"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"peerDependencies":{"bitcoinjs-lib":">=6.0.0","@abcwalletio/core":"^1.0.0"},"devDependencies":{"@types/node":"^20.0.0","bitcoinjs-lib":"^7.0.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^1.4.0","@abcwalletio/core":"^1.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run"},"_id":"@abcwalletio/bitcoin@1.0.0","_integrity":"sha512-7zdw9610m2kHSHP/OasZ/vhOWBaCkheGgRn6fnP07kH8Q4mPmSMTGhop3zTrAo+rK44RMExsGA/mDfWm/UpT4A==","_resolved":"/private/var/folders/lt/4x5qd11x2wl8sh4gvr7y0pp80000gn/T/001d47ff7ddc2168dbe7192d336fd68b/abcwalletio-bitcoin-1.0.0.tgz","_from":"file:abcwalletio-bitcoin-1.0.0.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-7zdw9610m2kHSHP/OasZ/vhOWBaCkheGgRn6fnP07kH8Q4mPmSMTGhop3zTrAo+rK44RMExsGA/mDfWm/UpT4A==","shasum":"94a375f1731d3d402e279248a0331680e2e1b306","tarball":"https://registry.npmjs.org/@abcwalletio/bitcoin/-/bitcoin-1.0.0.tgz","fileCount":9,"unpackedSize":21788,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDLlvSMD4U2cZiaHQpQa9H1sbB5H7vlDitotKhm3oH7WgIgMX0PJ6A6x1LR4HU9z+7YzmhtvGtDvlx94CkU1t+poRE="}]},"_npmUser":{"name":"theo_ahnlabio","email":"theo@ahnlab.com"},"directories":{},"maintainers":[{"name":"abc-admin","email":"abc_it@ahnlab.com"},{"name":"1kko-abc","email":"1kko@ahnlab.com"},{"name":"theo_ahnlabio","email":"theo@ahnlab.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bitcoin_1.0.0_1776818577412_0.2322299187982444"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-22T00:42:57.297Z","1.0.0":"2026-04-22T00:42:57.542Z","modified":"2026-04-22T00:42:57.795Z"},"maintainers":[{"name":"abc-admin","email":"abc_it@ahnlab.com"},{"name":"1kko-abc","email":"1kko@ahnlab.com"},{"name":"theo_ahnlabio","email":"theo@ahnlab.com"}],"description":"ABC WaaS Bitcoin adapter — MPC-based public key and PSBT (BIP-174) signing for bitcoinjs-lib (secp256k1)","homepage":"http://abcwaas.com/","keywords":["waas","bitcoin","psbt","bip-174","bitcoinjs","secp256k1","mpc"],"author":{"name":"Ahnlab Blockchain Company"},"license":"MIT","readme":"# @abcwalletio/bitcoin\n\nABC WaaS SDK의 Bitcoin 어댑터입니다. Bitcoin 생태계는 월렛 표준이 파편화되어\n있어 독자 인터페이스로 공개키 조회와 PSBT 서명 기능을 노출합니다. 사용자가\n`bitcoinjs-lib`와 조합해 UTXO 관리 및 트랜잭션 조립을 수행합니다.\n\n## Installation\n\n```bash\npnpm add @abcwalletio/bitcoin @abcwalletio/core bitcoinjs-lib\n```\n\n## Peer Dependencies\n\n- `@abcwalletio/core`\n- `bitcoinjs-lib` `>=6.0.0`\n\n## Quick Start\n\n```typescript\nimport { createWaasSDK, LocalStorageAdapter } from '@abcwalletio/core';\nimport { AbcBitcoinAdapter } from '@abcwalletio/bitcoin';\nimport { payments, networks } from 'bitcoinjs-lib';\n\nconst sdk = await createWaasSDK({\n  storage: new LocalStorageAdapter(),\n  auth: { v2: { clientId: '...', clientSecret: '...' } },\n});\n\n// Bitcoin은 secp256k1 키 사용\nawait sdk.mpc.generateKeyShare('secp256k1', 'password');\n\nconst adapter = await AbcBitcoinAdapter.create({\n  sdk,\n  requestPassword: async () => prompt('MPC 비밀번호?') ?? '',\n});\n\n// bitcoinjs-lib로 주소 도출 (예: P2WPKH)\nconst { address } = payments.p2wpkh({\n  pubkey: adapter.getPublicKeyBuffer(),\n  network: networks.bitcoin,\n});\n```\n\n## API\n\n### `AbcBitcoinAdapter.create(config)`\n\n```typescript\ninterface AbcBitcoinAdapterConfig {\n  sdk: WaasSDK;\n  requestPassword: () => Promise<string>;\n  keyId?: string;  // 생략 시 sdk.mpc.getDefaultKeyId('secp256k1') 자동 조회\n}\n```\n\n### 메서드\n\n| 메서드 | 설명 |\n|--------|------|\n| `getPublicKey()` | 원시 공개키 hex 반환 |\n| `getPublicKeyBuffer()` | 공개키 `Buffer` — `bitcoinjs-lib`가 요구하는 형식 |\n| `getUncompressedPublicKey()` | 65바이트 비압축 공개키 hex (`04` prefix) |\n| `signMessage(hashHex)` | 단일 해시 서명 (65바이트: r + s + v) |\n| `signPsbt(sighashes)` | BIP 174 PSBT 서명 — 여러 입력의 sighash를 일괄 서명하며 password는 1회만 요청 |\n\n### PSBT 예제\n\n```typescript\n// PSBT 조립 (bitcoinjs-lib)\nconst psbt = new Psbt({ network });\npsbt.addInput({ ... });\npsbt.addOutput({ ... });\n\n// 각 입력의 sighash를 구해서 일괄 서명 요청\nconst sighashes = psbt.data.inputs.map((_, i) =>\n  psbt.__CACHE__.__TX.hashForWitnessV0(i, ...).toString('hex'),\n);\nconst signatures = await adapter.signPsbt(sighashes);\n\n// 각 입력에 서명 적용\nsignatures.forEach((sig, i) => {\n  psbt.updateInput(i, { partialSig: [{ pubkey: adapter.getPublicKeyBuffer(), signature: Buffer.from(sig, 'hex') }] });\n});\n```\n\n## License\n\nMIT — Copyright (c) 2026 Ahnlab Blockchain Company\n","readmeFilename":"README.md","_rev":"1-a3f30b74c666b20083bae6fa1a89bbf1"}