mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-01-12 08:34:28 +08:00
* feat: recover nodesale module. * fix: refactored. * fix: fix table type. * fix: add entity * fix: bug UTC time. * ci: try to tidy before testing * ci: touch result file * ci: use echo to create new file * fix: try to skip test in ci * fix: remove os.Exit * fix: handle error * feat: add todo note * fix: Cannot run nodesale test because qtx is not initiated. * fix: 50% chance public key compare incorrectly. * fix: more consistent SQL * fix: sanity refactor. * fix: remove unused code. * fix: move last_block_default to config file. * fix: minor mistakes. * fix: * fix: refactor * fix: refactor * fix: delegate tx hash not record into db. * refactor: prepare for moving integration tests. * refactor: convert to unit tests. * fix: change to using input values since output values deducted fee. * feat: add extra unit test. * fix: wrong timestamp format. * fix: handle block timeout = 0 --------- Co-authored-by: Gaze <gazenw@users.noreply.github.com>
26 lines
820 B
Go
26 lines
820 B
Go
package nodesale
|
|
|
|
import "github.com/btcsuite/btcd/txscript"
|
|
|
|
func extractTapScript(witness [][]byte) (tokenizer txscript.ScriptTokenizer, controlBlock *txscript.ControlBlock, isTapScript bool) {
|
|
witness = removeAnnexFromWitness(witness)
|
|
if len(witness) < 2 {
|
|
return txscript.ScriptTokenizer{}, nil, false
|
|
}
|
|
script := witness[len(witness)-2]
|
|
rawControl := witness[len(witness)-1]
|
|
parsedControl, err := txscript.ParseControlBlock(rawControl)
|
|
if err != nil {
|
|
return txscript.ScriptTokenizer{}, nil, false
|
|
}
|
|
|
|
return txscript.MakeScriptTokenizer(0, script), parsedControl, true
|
|
}
|
|
|
|
func removeAnnexFromWitness(witness [][]byte) [][]byte {
|
|
if len(witness) >= 2 && len(witness[len(witness)-1]) > 0 && witness[len(witness)-1][0] == txscript.TaprootAnnexTag {
|
|
return witness[:len(witness)-1]
|
|
}
|
|
return witness
|
|
}
|