Skip to content
This repository has been archived by the owner on Mar 31, 2019. It is now read-only.
/ bscript-parser Public archive

Parse a raw Bitcoin script into readable op codes

License

Notifications You must be signed in to change notification settings

JBaczuk/bscript-parser

Repository files navigation

Node Bitcoin Script

NPM Build Status

Node Bitcoin script parser

Installation

$ npm i bscript-parser --save

CLI Usage

General help:

$ bscript -h
Usage: bscript [options] [command]

Options:
  -v, --version                    output the version number
  -h, --help                       output usage information

Commands:
  assemble [options] <raw-script>
  disassemble [options] <asm>
  getopcode <word>
  getword <opcode>
  isvalid <opcode-or-word>
  isdisabled <opcode-or-word>
  describe <opcode-or-word>

Help for a specific command, e.g.:

$ bscript assemble -h
Usage: assemble [options] <raw-script>

Options:
  -l, --literal-style [style]  Literal Style normal|brackets|prefixed|verbose (default: "normal")
  -e, --encoding [encoding]    Encoding ascii|base64|binary|hex|utf8 (default: "hex")
  -h, --help                   output usage information

$ bscript assemble --literal-style normal 76a914306e2ea1eed91bf66dfe5d94f3957d4ba63bde8488acOP_DUP OP_HASH160 306e2ea1eed91bf66dfe5d94f3957d4ba63bde84 OP_EQUALVERIFY OP_CHECKSIG

Module Usage

You can parse raw hex string into an assembly string using:

> const BScript = require('bscript-parser')
undefined
> BScript.rawToAsm('a914c664139327b98043febeab6434eba89bb196d1af87', 'hex')
'OP_HASH160 c664139327b98043febeab6434eba89bb196d1af OP_EQUAL'

You can parse an assembly string into a raw script hex string using:

> BScript.asmToRaw('OP_HASH160 c664139327b98043febeab6434eba89bb196d1af OP_EQUAL', 'hex')
'a914c664139327b98043febeab6434eba89bb196d1af87'

The library also exposes several utility functions for getting information about bscript opcodes.

Conversion between opcodes and asm terms

> BScript.opcodes.opcodeForWord('OP_EQUAL')
135
> BScript.opcodes.wordForOpcode(135)
'OP_EQUAL'

Check if an opcode or asm term exists

> bscript.opcodes.opcodeIsValid(135)
true
> bscript.opcodes.opcodeIsValid(256)
false
> bscript.opcodes.wordIsValid('OP_EQUAL')
true
> bscript.opcodes.wordIsValid('OP_CLONE')
false

Check if an opcode or asm term is disabled

> bscript.opcodes.opcodeIsDisabled(135)
false
> bscript.opcodes.opcodeIsDisabled(126)
true
> bscript.opcodes.wordIsDisabled('OP_EQUAL')
false
> bscript.opcodes.wordIsDisabled('OP_CAT')
true

Retrieve descriptive information for an opcode or asm term

Note: The data is taken from the bitcoin.it wiki.

> bscript.opcodes.descriptionForOpcode(135)
'Returns 1 if the inputs are exactly equal, 0 otherwise.'
> bscript.opcodes.descriptionForWord('OP_HASH160')
'The input is hashed twice: first with SHA-256 and then with RIPEMD-160.'
> bscript.opcodes.inputDescriptionForOpcode(135)
'x1 x2'
> bscript.opcodes.inputDescriptionForWord('OP_HASH160')
'in'
> bscript.opcodes.outputDescriptionForOpcode(135)
'True / false'
> bscript.opcodes.outputDescriptionForWord('OP_HASH160')
'hash'

API Docs

You can view the the API docs for this project by running npm run docs:serve in the project directory and then accessing the documentation in your browser.

You can also access the pre-built API documentation as markdown here.
To prepare the pre-built api docs to be committed after a change is made to the code, run npm run docs:build. The should be done before every release.

About

Parse a raw Bitcoin script into readable op codes

Resources

License

Stars

Watchers

Forks

Packages

No packages published