sbtc-bridge-lib
Advanced tools
Comparing version 1.0.84 to 1.0.85
@@ -0,1 +1,2 @@ | ||
import type { P2Ret } from '@scure/btc-signer'; | ||
import type { WithdrawalPayloadType, DepositPayloadType } from './types/sbtc_types.js'; | ||
@@ -6,3 +7,3 @@ export declare const MAGIC_BYTES_TESTNET = "5432"; | ||
export declare const PEGOUT_OPCODE = "3E"; | ||
export declare function parseDepositPayload(d1: Uint8Array, amountSats: number): DepositPayloadType; | ||
export declare function parseDepositPayload(d1: Uint8Array): DepositPayloadType; | ||
export declare function amountToUint8(amt: number, size: number): Uint8Array; | ||
@@ -32,2 +33,4 @@ /** | ||
export declare function readDepositValue(outputs: Array<any>): number; | ||
export declare function parsePayloadFromUnknownOutput(network: string, out0: P2Ret, bitcoinAddress: string): WithdrawalPayloadType | DepositPayloadType; | ||
export declare function parsePayloadFromTaprootOutput(network: string, out0: P2Ret, bitcoinAddress: string): WithdrawalPayloadType | DepositPayloadType; | ||
export declare function parseOutputs(network: string, output0: any, bitcoinAddress: string, amountSats: number): WithdrawalPayloadType | DepositPayloadType; | ||
@@ -34,0 +37,0 @@ export declare function getDataToSign(network: string, amount: number, bitcoinAddress: string): Uint8Array; |
@@ -23,10 +23,10 @@ import * as secp from '@noble/secp256k1'; | ||
}); | ||
export function parseDepositPayload(d1, amountSats) { | ||
export function parseDepositPayload(d1) { | ||
const magicOp = getMagicAndOpCode(d1); | ||
if (magicOp.magic) { | ||
return parseDepositPayloadNoMagic(d1.subarray(2), amountSats); | ||
return parseDepositPayloadNoMagic(d1.subarray(2)); | ||
} | ||
return parseDepositPayloadNoMagic(d1, amountSats); | ||
return parseDepositPayloadNoMagic(d1); | ||
} | ||
function parseDepositPayloadNoPrincipal(d1, amountSats) { | ||
function parseDepositPayloadNoPrincipal(d1) { | ||
const opcode = hex.encode(d1.subarray(0, 1)).toUpperCase(); | ||
@@ -45,6 +45,6 @@ const addr0 = parseInt(hex.encode(d1.subarray(1, 2)), 8); | ||
revealFee: 0, | ||
amountSats | ||
amountSats: 0 | ||
}; | ||
} | ||
function parseDepositPayloadNoMagic(d1, amountSats) { | ||
function parseDepositPayloadNoMagic(d1) { | ||
//console.log('payload rev: ', hex.encode(d1)) | ||
@@ -56,3 +56,3 @@ const opcode = hex.encode(d1.subarray(0, 1)).toUpperCase(); | ||
if (prinType === 22 || prinType === 26) | ||
return parseDepositPayloadNoPrincipal(d1, amountSats); | ||
return parseDepositPayloadNoPrincipal(d1); | ||
const addr0 = parseInt(hex.encode(d1.subarray(2, 3)), 16); | ||
@@ -88,3 +88,3 @@ const addr1 = hex.encode(d1.subarray(3, 23)); | ||
revealFee, | ||
amountSats | ||
amountSats: 0 | ||
}; | ||
@@ -298,2 +298,36 @@ } | ||
} | ||
export function parsePayloadFromUnknownOutput(network, out0, bitcoinAddress) { | ||
const d1 = out0.script; | ||
const witnessData = getMagicAndOpCode(d1); | ||
witnessData.txType = out0.type; | ||
let innerPayload; | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
} | ||
else if (witnessData.opcode.toUpperCase() === '3E') { | ||
innerPayload = parseWithdrawalPayload(network, d1, bitcoinAddress); | ||
return innerPayload; | ||
} | ||
else { | ||
throw new Error('Wrong opcode : expected: 3A or 3C : recieved: ' + witnessData.opcode); | ||
} | ||
} | ||
export function parsePayloadFromTaprootOutput(network, out0, bitcoinAddress) { | ||
const d1 = out0.script; | ||
const witnessData = getMagicAndOpCode(d1); | ||
witnessData.txType = out0.type; | ||
let innerPayload; | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
} | ||
else if (witnessData.opcode.toUpperCase() === '3E') { | ||
innerPayload = parseWithdrawalPayload(network, d1, bitcoinAddress); | ||
return innerPayload; | ||
} | ||
else { | ||
throw new Error('Wrong opcode : expected: 3A or 3C : recieved: ' + witnessData.opcode); | ||
} | ||
} | ||
export function parseOutputs(network, output0, bitcoinAddress, amountSats) { | ||
@@ -307,3 +341,3 @@ if (output0.scriptpubkey_type) | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1, amountSats); | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
@@ -331,3 +365,3 @@ } | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1, amountSats); | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
@@ -334,0 +368,0 @@ } |
{ | ||
"name": "sbtc-bridge-lib", | ||
"version": "1.0.84", | ||
"version": "1.0.85", | ||
"description": "Library for sBTC Bridge web client and API apps ", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
import * as secp from '@noble/secp256k1'; | ||
import * as btc from '@scure/btc-signer'; | ||
import type { P2Ret } from '@scure/btc-signer'; | ||
import { hex } from '@scure/base'; | ||
@@ -33,11 +34,11 @@ import { c32address, c32addressDecode } from 'c32check'; | ||
export function parseDepositPayload(d1:Uint8Array, amountSats: number):DepositPayloadType { | ||
export function parseDepositPayload(d1:Uint8Array):DepositPayloadType { | ||
const magicOp = getMagicAndOpCode(d1); | ||
if (magicOp.magic) { | ||
return parseDepositPayloadNoMagic(d1.subarray(2), amountSats); | ||
return parseDepositPayloadNoMagic(d1.subarray(2)); | ||
} | ||
return parseDepositPayloadNoMagic(d1, amountSats); | ||
return parseDepositPayloadNoMagic(d1); | ||
} | ||
function parseDepositPayloadNoPrincipal(d1:Uint8Array, amountSats: number):DepositPayloadType { | ||
function parseDepositPayloadNoPrincipal(d1:Uint8Array):DepositPayloadType { | ||
const opcode = hex.encode(d1.subarray(0,1)).toUpperCase(); | ||
@@ -56,7 +57,7 @@ const addr0 = parseInt(hex.encode(d1.subarray(1,2)), 8); | ||
revealFee: 0, | ||
amountSats | ||
amountSats: 0 | ||
}; | ||
} | ||
function parseDepositPayloadNoMagic(d1:Uint8Array, amountSats: number):DepositPayloadType { | ||
function parseDepositPayloadNoMagic(d1:Uint8Array):DepositPayloadType { | ||
//console.log('payload rev: ', hex.encode(d1)) | ||
@@ -66,3 +67,3 @@ const opcode = hex.encode(d1.subarray(0,1)).toUpperCase(); | ||
const prinType = parseInt(hex.encode(d1.subarray(1,2)), 8); | ||
if (prinType === 22 || prinType === 26) return parseDepositPayloadNoPrincipal(d1, amountSats) | ||
if (prinType === 22 || prinType === 26) return parseDepositPayloadNoPrincipal(d1) | ||
const addr0 = parseInt(hex.encode(d1.subarray(2,3)), 16); | ||
@@ -103,3 +104,3 @@ const addr1 = hex.encode(d1.subarray(3,23)); | ||
revealFee, | ||
amountSats | ||
amountSats: 0 | ||
}; | ||
@@ -324,2 +325,36 @@ } | ||
export function parsePayloadFromUnknownOutput(network:string, out0:P2Ret, bitcoinAddress:string) { | ||
const d1 = out0.script | ||
const witnessData = getMagicAndOpCode(d1); | ||
witnessData.txType = out0.type; | ||
let innerPayload:WithdrawalPayloadType|DepositPayloadType; | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
} else if (witnessData.opcode.toUpperCase() === '3E') { | ||
innerPayload = parseWithdrawalPayload(network, d1, bitcoinAddress) | ||
return innerPayload; | ||
} else { | ||
throw new Error('Wrong opcode : expected: 3A or 3C : recieved: ' + witnessData.opcode) | ||
} | ||
} | ||
export function parsePayloadFromTaprootOutput(network:string, out0:P2Ret, bitcoinAddress:string) { | ||
const d1 = out0.script | ||
const witnessData = getMagicAndOpCode(d1); | ||
witnessData.txType = out0.type; | ||
let innerPayload:WithdrawalPayloadType|DepositPayloadType; | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
} else if (witnessData.opcode.toUpperCase() === '3E') { | ||
innerPayload = parseWithdrawalPayload(network, d1, bitcoinAddress) | ||
return innerPayload; | ||
} else { | ||
throw new Error('Wrong opcode : expected: 3A or 3C : recieved: ' + witnessData.opcode) | ||
} | ||
} | ||
export function parseOutputs(network:string, output0:any, bitcoinAddress:string, amountSats: number) { | ||
@@ -333,3 +368,3 @@ if (output0.scriptpubkey_type) return parseOutputsBitcoinCore(network, output0, bitcoinAddress, amountSats) | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1, amountSats); | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
@@ -357,3 +392,3 @@ } else if (witnessData.opcode.toUpperCase() === '3E') { | ||
if (witnessData.opcode === '3C') { | ||
innerPayload = parseDepositPayload(d1, amountSats); | ||
innerPayload = parseDepositPayload(d1); | ||
return innerPayload; | ||
@@ -360,0 +395,0 @@ } else if (witnessData.opcode.toUpperCase() === '3E') { |
188888
4458