Escribí la siguiente función para construir y firmar transacciones Taproot (P2TR) usando @cmdcode/tapscript. Mi intención es admitir los gastos de patas de teclas y script, y opcionalmente ambos juntos.
El problema es que no funciona como se esperaba:
Los gastos de script-Path a menudo no pueden validar (por ejemplo, errores de bloque de management, testigo no válido o ejecución fallida de script).
¿Alguien puede revisar mi código y señalar qué hay de malo en mi lógica o implementación? Apreciaría especialmente los consejos sobre cómo arreglar las fallas de script-path y cualquier mejora de rendimiento para el caso de la ruta clave.
import { Deal with, Signer, Faucet, Tx } from '@cmdcode/tapscript';
protected buildTaprootTx(
senderKey: { publicKey: Uint8Array; privateKey: Uint8Array },
utxos: Array<{ txid: string; vout: quantity; worth: quantity }>,
recipient: string,
amountSat: quantity,
feeSat: quantity,
mode: 'key' | 'script' | 'each',
scriptLeaves: Array = (),
opReturnData?: Uint8Array | string,
changeAddr?: string
): string {
// ... (full code as in my gist, see hyperlink beneath)
}
Preguntas:
¿Qué estoy haciendo mal, especialmente con respecto a los gastos de script-path?
¿Existe una mejor manera de estructurar u optimizar la función para el rendimiento y la corrección?
Si detecta algún error obvio o malentendido en cómo uso la lógica de la ruta de la tecla Taproot/script, señalelos.
Cualquier revisión de código, sugerencias o referencias de ejemplo de trabajo es muy apreciada. ¡Gracias!
Escribí la siguiente función para construir y firmar transacciones Taproot (P2TR) usando @cmdcode/tapscript. Mi intención es admitir los gastos de patas de teclas y script, y opcionalmente ambos juntos.
El problema es que no funciona como se esperaba:
Los gastos de script-Path a menudo no pueden validar (por ejemplo, errores de bloque de management, testigo no válido o ejecución fallida de script).
¿Alguien puede revisar mi código y señalar qué hay de malo en mi lógica o implementación? Apreciaría especialmente los consejos sobre cómo arreglar las fallas de script-path y cualquier mejora de rendimiento para el caso de la ruta clave.
import { Deal with, Signer, Faucet, Tx } from '@cmdcode/tapscript';
protected buildTaprootTx(
senderKey: { publicKey: Uint8Array; privateKey: Uint8Array },
utxos: Array<{ txid: string; vout: quantity; worth: quantity }>,
recipient: string,
amountSat: quantity,
feeSat: quantity,
mode: 'key' | 'script' | 'each',
scriptLeaves: Array = (),
opReturnData?: Uint8Array | string,
changeAddr?: string
): string {
// ... (full code as in my gist, see hyperlink beneath)
}
Preguntas:
¿Qué estoy haciendo mal, especialmente con respecto a los gastos de script-path?
¿Existe una mejor manera de estructurar u optimizar la función para el rendimiento y la corrección?
Si detecta algún error obvio o malentendido en cómo uso la lógica de la ruta de la tecla Taproot/script, señalelos.
Cualquier revisión de código, sugerencias o referencias de ejemplo de trabajo es muy apreciada. ¡Gracias!