UNPKG

@dashevo/dashcore-lib

Version:

A pure and powerful JavaScript Dash library.

508 lines (286 loc) 16.5 kB
**Usage**: `new Script(data)` **Description**: Instantiate a Script from optional data. | parameters | type | required | Description | | ---------- | -------------------- | -------- | ------------------------------------- | | **data** | Object/string/Buffer | yes | from optional data to populate script | **Returns**: {Script} A new instance of a Script ## Script.fromBuffer(buff) **Description**: Instantiate a Script from a Buffer **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ---------------------- | | **buff** | Buffer | yes | A Buffer of the script | **Returns**: {Script} A new valid instance of Script ## Script.fromASM(str) **Description**: Instantiate a Script from ASM **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------- | | **str** | String | yes | | **Returns**: {Script} A new valid instance of Script ## Script.fromHex(str) **Description**: Instantiate a Script from hex representation **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------- | | **str** | String | yes | | **Returns**: {Script} A new valid instance of Script ## Script.fromString(str) **Description**: Instantiate a Script from string representation **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------- | | **str** | String | yes | | **Returns**: {Script} A new valid instance of Script ## Script.buildMultisigOut(publicKeys, threshold, opts) **Description**: Instantiate a new Multisig output script for the given public keys, requiring m of those public keys to spend **Parameters**: | parameters | type | required | Description | | -------------- | ----------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | **publicKeys** | PublicKey[] | yes | ist of all public keys controlling the output | | **threshold** | Number | yes | amount of required signatures to spend the output | | **opts** | Object | no | Several options: - noSorting: defaults to false, if true, don't sort the given public keys before creating the script | **Returns**: {Script} a new Multisig output script for given public keys, requiring m of those public keys to spend ## Script.buildMultisigIn(publicKeys, threshold, signatures, opts) **Description**: Instantiate a new Multisig input script for the given public keys, requiring m of those public keys to spend **Parameters**: | parameters | type | required | Description | | -------------- | ----------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | **publicKeys** | PublicKey[] | yes | ist of all public keys controlling the output | | **threshold** | Number | yes | amount of required signatures to spend the output | | **signatures** | Array | yes | signatures and array of signature buffers to append to the script | | **opts** | Object | no | Several options: - noSorting: defaults to false, if true, don't sort the given public keys before creating the script | **Returns**: {Script} a new Multisig input script for given public keys, requiring m of those public keys to spend ## Script.buildP2SHMultisigIn(publicKeys, threshold, signatures, opts) **Description**: Instantiate a new P2SH Multisig input script for the given public keys, requiring m of those public keys to spend **Parameters**: | parameters | type | required | Description | | -------------- | ----------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | **publicKeys** | PublicKey[] | yes | ist of all public keys controlling the output | | **threshold** | Number | yes | amount of required signatures to spend the output | | **signatures** | Array | yes | signatures and array of signature buffers to append to the script | | **opts** | Object | no | Several options: - noSorting: defaults to false, if true, don't sort the given public keys before creating the script | **Returns**: {Script} a new P2SH Multisig input script for the given public keys, requiring m of those public keys to spend ## Script.buildPublicKeyHashOut(to) **Description**: Instantiate a new pay to public key hash output for the given address or public key **Parameters**: | parameters | type | required | Description | | ---------- | ----------------- | -------- | --------------------------------- | | **to** | Address/PublicKey | yes | destination address or public key | **Returns**: {Script} a new pay to public key hash output for the given address or public key ## Script.buildPublicKeyOut(pubkey) **Description**: Instantiate a new pay to public key output for the given public key **Parameters**: | parameters | type | required | Description | | ---------- | --------- | -------- | ----------- | | **pubkey** | PublicKey | yes | public key | **Returns**: {Script} a new pay to public key output for the given public key ## Script.buildDataOut(data, encoding) **Description**: Instantiate a new OP_RETURN script with data **Parameters**: | parameters | type | required | Description | | ------------ | ------------- | -------- | ------------------------------- | | **data** | String/Buffer | yes | the data to embed in the output | | **encoding** | String | no | The type of string encoding | **Returns**: {Script} a new OP_RETURN script with data ## .set(obj) **Description**: Set Script chunks from provided object. Replace any previous chunks. **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------- | | **obj** | Object | yes | | **Returns**: {Script} ## .prepend(obj) **Description**: Adds a script element at the start of the script. **Parameters**: | parameters | type | required | Description | | ---------- | ---------------------------------- | -------- | -------------------------------------------------- | | **obj** | String/Number/Opcode/Buffer/Object | yes | a string, number, Opcode, Buffer, or object to add | **Returns**: {Script} ## .equals(script) **Description**: Compares a script with another script **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ------------------------ | | **script** | Script | yes | a script to compare with | **Returns**: {Script} ## .add(obj) **Description**: Adds a script element to the end of the script. **Parameters**: | parameters | type | required | Description | | ---------- | ---------------------------------- | -------- | -------------------------------------------------- | | **obj** | String/Number/Opcode/Buffer/Object | yes | a string, number, Opcode, Buffer, or object to add | **Returns**: {Script} ## .getPublicKey() **Description**: Will return the public key **Parameters**: None. **Returns**: {PublicKey} ## .getPublicKeyHash() **Description**: Will return the public key hash **Parameters**: None. **Returns**: {PublicKey} ## .getData() **Description**: Retrieve the associated data for this script. In the case of a pay to public key hash or P2SH, return the hash. In the case of a standard OP_RETURN, return the data **Parameters**: None. **Returns**: {Buffer} ## .classify() **Description**: Retrieve the Script type if it is a known form, or Script.UNKNOWN if it isn't **Parameters**: None. **Returns**: {string} - Member of Script.types ## .classifyOutput() **Description**: Retrieve the Script type if it is a known form, or Script.UNKNOWN if it isn't **Parameters**: None. **Returns**: {string} - Member of Script.types ## .classifyInput() **Description**: Retrieve the Script type if it is a known form, or Script.UNKNOWN if it isn't **Parameters**: None. **Returns**: {string} - Member of Script.types ## .isStandard() **Description**: Verify if script is one of the known types **Parameters**: None. **Returns**: {Boolean} - if script is one of the known types ## .isPublicKeyHashOut() **Description**: Verify if this is a pay to pubkey hash output script **Parameters**: None. **Returns**: {Boolean} - if this is a pay to pubkey hash output script ## .isPublicKeyHashIn() **Description**: Verify if this is a pay to public key hash input script **Parameters**: None. **Returns**: {Boolean} - if this is a pay to public key hash input script ## .isPublicKeyOut() **Description**: Verify if this is a public key output script **Parameters**: None. **Returns**: {Boolean} - if this is a public key output script ## .isPublicKeyIn() **Description**: Verify if this is a public key input script **Parameters**: None. **Returns**: {Boolean} - if this is a public key input script ## .isScriptHashOut() **Description**: Verify if this is a p2sh output script **Parameters**: None. **Returns**: {Boolean} - if this is a p2sh output script ## .isScriptHashIn() **Description**: Verify if this is a p2sh input script. These are frequently indistinguishable from pubkeyhashin. **Parameters**: None. **Returns**: {Boolean} - if this is a p2sh input script ## .isMultisigOut() **Description**: Verify if this is a multisig output script. **Parameters**: None. **Returns**: {Boolean} - if this is a multisig output script ## .isMultisigIn() **Description**: Verify if this is a multisig input script. **Parameters**: None. **Returns**: {Boolean} - if this is a multisig input script ## .isDataOut() **Description**: Verify if this is a valid standard OP_RETURN output **Parameters**: None. **Returns**: {Boolean} - if this is a valid standard OP_RETURN output ## .isPushOnly() **Description**: Verify if the script is only composed of data pushing opcodes or small int opcodes (OP_0, OP_1, ..., OP_16) **Parameters**: None. **Returns**: {Boolean} ## .toASM() **Description**: Will return an ASM representation of the script **Parameters**: None. **Returns**: {String} ## .toHex() **Description**: Will return an hex representation of the script **Parameters**: None. **Returns**: {String} ## .toBuffer() **Description**: Will return a buffer representation of the script **Parameters**: None. **Returns**: {Buffer} A buffer of the script ## .toObject() / .toJSON() **Description**: Will return an object representation of the script **Parameters**: None. **Returns**: {Object} A plain object with the script properties ## .toString() **Description**: Will output the stringified script **Parameters**: None. **Returns**: {string} ## .inspect() **Description**: Will return a string formatted for the console **Parameters**: None. **Returns**: {string} Public Key hex representation ```js const script = new Script(...); script.toInspect() // <Script: 041ff0fe0f7b15ffaa....> ``` ## PublicKey.fromDER(buf, strict) **Description**: Instantiate a PublicKey from an X Point **Parameters**: | parameters | type | required | Description | | -------------- | ------- | -------- | -------------------------------------------- | | **buf** | Buffer | yes | A DER hex buffer | | **compressed** | Boolean | no | if set to false, will loosen some conditions | **Returns**: {PublicKey} A new valid instance of PublicKey ## PublicKey.fromPoint(point, compressed) **Description**: Instantiate a PublicKey from an X Point **Parameters**: | parameters | type | required | Description | | -------------- | ------- | -------- | ----------------------------------------------------- | | **point** | Point | yes | A Point instance | | **compressed** | Boolean | no | whether to store this public key as compressed format | **Returns**: {PublicKey} A new valid instance of PublicKey ## PublicKey.fromString(str, encoding) **Description**: Instantiate a PublicKey from a Buffer **Parameters**: | parameters | type | required | Description | | ------------ | ------ | -------- | --------------------------- | | **str** | String | yes | A DER hex string | | **encoding** | String | no | The type of string encoding | **Returns**: {PublicKey} A new valid instance of PublicKey ## PublicKey.fromX(odd, x) **Description**: Instantiate a PublicKey from an X Point **Parameters**: | parameters | type | required | Description | | ---------- | ------- | -------- | ----------------------------------------- | | **odd** | Boolean | yes | If the point is above or below the x axis | | **x** | Point | yes | The x point | **Returns**: {PublicKey} A new valid instance of PublicKey ## PublicKey.getValidationError(data) **Description**: Check if there would be any errors when initializing a PublicKey **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------------------------------- | | **data** | String | yes | The encoded data in various formats | **Returns**: {null|Error} An error if exists ## PublicKey.isValid(data) **Description**: Check if the parameters are valid **Parameters**: | parameters | type | required | Description | | ---------- | ------ | -------- | ----------------------------------- | | **data** | String | yes | The encoded data in various formats | **Returns**: {Boolean} If the public key would be valid ## .toAddress(network) **Description**: Will output the PublicKey to a DER encoded hex string **Parameters**: | parameters | type | required | Description | | ----------- | -------------- | -------- | --------------------------------------- | | **network** | String/Network | yes | Which network should the address be for | **Returns**: {Address} An address generated from the public key ## .toDER() **Description**: Will output the PublicKey to a DER Buffer **Parameters**: None. **Returns**: {Buffer} A DER hex encoded buffer ## .toBuffer() **Description**: Will return a buffer representation of the public key **Parameters**: None. **Returns**: {Buffer} A buffer of the public key ## .toObject() / .toJSON() **Description**: Will return an object representation of the public key **Parameters**: None. **Returns**: {Object} A plain object with the public key properties ## .toString() **Description**: Will output the PublicKey to a DER encoded hex string **Parameters**: None. **Returns**: {string} A DER hex encoded string ## .inspect() **Description**: Will return a string formatted for the console **Parameters**: None. **Returns**: {string} Public Key hex representation ```js const publicKey = new PublicKey(...); publicKey.toInspect() // <PublicKey: 041ff0fe0f7b15ffaa....> ```