Skip to content

Parse a raw Bitcoin script into readable op codes

License

Notifications You must be signed in to change notification settings

wardlem/bscript-parser

 
 

Repository files navigation

Node Bitcoin Script

NPM Build Status

Node Bitcoin script parser

Installation

$ npm i bscript-parser --save

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

Languages

  • JavaScript 100.0%