bitcore-lib
Advanced tools
Comparing version
@@ -75,9 +75,7 @@ 'use strict'; | ||
if (type && ( | ||
type !== Address.PayToPublicKeyHash | ||
&& type !== Address.PayToScriptHash | ||
&& type !== Address.PayToWitnessPublicKeyHash | ||
&& type !== Address.PayToWitnessScriptHash | ||
&& type !== Address.PayToTaproot)) { | ||
throw new TypeError('Third argument must be "pubkeyhash", "scripthash", "witnesspubkeyhash", "witnessscripthash", or "taproot".'); | ||
if (type) { | ||
if (!Address.isValidType(type)) { | ||
throw new TypeError('Third argument must be one of: "' + Address.AllTypes.join('", "') + '".'); | ||
} | ||
type = Address.TypesMap[type.toLowerCase()]; | ||
} | ||
@@ -127,13 +125,60 @@ | ||
/** @static */ | ||
Address.TypesMap = {}; | ||
Address.PayToPublicKeyHash = 'pubkeyhash'; | ||
/** @static */ | ||
Address.PayToPublicKeyHashAlt = 'p2pkh'; | ||
Address.TypesMap[Address.PayToPublicKeyHash] = Address.PayToPublicKeyHash; | ||
Address.TypesMap[Address.PayToPublicKeyHashAlt] = Address.PayToPublicKeyHash; | ||
Address.isPayToPublicKeyHash = function(type) { | ||
return typeof type === 'string' && [Address.PayToPublicKeyHash, Address.PayToPublicKeyHashAlt].includes(type.toLowerCase()); | ||
}; | ||
Address.PayToScriptHash = 'scripthash'; | ||
/** @static */ | ||
Address.PayToScriptHashAlt = 'p2sh'; | ||
Address.TypesMap[Address.PayToScriptHash] = Address.PayToScriptHash; | ||
Address.TypesMap[Address.PayToScriptHashAlt] = Address.PayToScriptHash; | ||
Address.isPayToScriptHash = function(type) { | ||
return typeof type === 'string' && [Address.PayToScriptHash, Address.PayToScriptHashAlt].includes(type.toLowerCase()); | ||
}; | ||
Address.PayToWitnessPublicKeyHash = 'witnesspubkeyhash'; | ||
/** @static */ | ||
Address.PayToWitnessPublicKeyHashAlt = 'p2wpkh'; | ||
Address.TypesMap[Address.PayToWitnessPublicKeyHash] = Address.PayToWitnessPublicKeyHash; | ||
Address.TypesMap[Address.PayToWitnessPublicKeyHashAlt] = Address.PayToWitnessPublicKeyHash; | ||
Address.isPayToWitnessPublicKeyHash = function(type) { | ||
return typeof type === 'string' && [Address.PayToWitnessPublicKeyHash, Address.PayToWitnessPublicKeyHashAlt].includes(type.toLowerCase()); | ||
}; | ||
Address.PayToWitnessScriptHash = 'witnessscripthash'; | ||
/** @static */ | ||
Address.PayToWitnessScriptHashAlt = 'p2wsh'; | ||
Address.TypesMap[Address.PayToWitnessScriptHash] = Address.PayToWitnessScriptHash; | ||
Address.TypesMap[Address.PayToWitnessScriptHashAlt] = Address.PayToWitnessScriptHash; | ||
Address.isPayToWitnessScriptHash = function(type) { | ||
return typeof type === 'string' && [Address.PayToWitnessScriptHash, Address.PayToWitnessScriptHashAlt].includes(type.toLowerCase()); | ||
}; | ||
Address.PayToTaproot = 'taproot'; | ||
Address.PayToTaprootAlt = 'p2tr'; | ||
Address.TypesMap[Address.PayToTaproot] = Address.PayToTaproot; | ||
Address.TypesMap[Address.PayToTaprootAlt] = Address.PayToTaproot; | ||
Address.isPayToTaproot = function(type) { | ||
return typeof type === 'string' && [Address.PayToTaproot, Address.PayToTaprootAlt].includes(type.toLowerCase()); | ||
}; | ||
Address.isValidType = function(type) { | ||
return Address.isPayToPublicKeyHash(type) || | ||
Address.isPayToScriptHash(type) || | ||
Address.isPayToWitnessPublicKeyHash(type) || | ||
Address.isPayToWitnessScriptHash(type) || | ||
Address.isPayToTaproot(type); | ||
}; | ||
Address.isValidMultisigType = function(type) { | ||
return Address.isPayToScriptHash(type) || | ||
Address.isPayToWitnessScriptHash(type); | ||
}; | ||
Address.AllTypes = Object.keys(Address.TypesMap); | ||
/** | ||
@@ -286,11 +331,11 @@ * @param {Buffer} hash - An instance of a hash Buffer | ||
} | ||
if (type && type !== Address.PayToScriptHash && type !== Address.PayToWitnessPublicKeyHash && type !== Address.PayToPublicKeyHash && type !== Address.PayToTaproot) { | ||
if (type && !Address.isPayToScriptHash(type) && !Address.isPayToWitnessPublicKeyHash(type) && !Address.isPayToPublicKeyHash(type) && !Address.isPayToTaproot(type)) { | ||
throw new TypeError('Type must be either pubkeyhash, witnesspubkeyhash, scripthash, or taproot to transform public key.'); | ||
} | ||
if (!pubkey.compressed && (type === Address.PayToScriptHash || type === Address.PayToWitnessPublicKeyHash)) { | ||
if (!pubkey.compressed && (Address.isPayToScriptHash(type) || Address.isPayToWitnessPublicKeyHash(type))) { | ||
throw new TypeError('Witness addresses must use compressed public keys.'); | ||
} | ||
if (type === Address.PayToScriptHash) { | ||
if (Address.isPayToScriptHash(type)) { | ||
info.hashBuffer = Hash.sha256ripemd160(Script.buildWitnessV0Out(pubkey).toBuffer()); | ||
} else if (type === Address.PayToTaproot) { | ||
} else if (Address.isPayToTaproot(type)) { | ||
info.hashBuffer = pubkey.createTapTweak().tweakedPubKey; | ||
@@ -336,6 +381,6 @@ } else { | ||
network = network || publicKeys[0].network || Networks.defaultNetwork; | ||
if (type && type !== Address.PayToScriptHash && type !== Address.PayToWitnessScriptHash) { | ||
if (type && !Address.isPayToScriptHash(type) && !Address.isPayToWitnessScriptHash(type)) { | ||
throw new TypeError('Type must be either scripthash or witnessscripthash to create multisig.'); | ||
} | ||
if (nestedWitness || type === Address.PayToWitnessScriptHash) { | ||
if (nestedWitness || Address.isPayToWitnessScriptHash(type)) { | ||
publicKeys = _.map(publicKeys, PublicKey); | ||
@@ -383,3 +428,3 @@ for (var i = 0; i < publicKeys.length; i++) { | ||
} catch (e) { | ||
if (type === Address.PayToWitnessPublicKeyHash || type === Address.PayToWitnessScriptHash || type === Address.PayToTaproot) { | ||
if (Address.isPayToWitnessPublicKeyHash(type) || Address.isPayToWitnessScriptHash(type) || Address.isPayToTaproot(type)) { | ||
throw e; | ||
@@ -431,3 +476,3 @@ } | ||
var info = Address._transformHash(hash); | ||
if (type === Address.PayToWitnessScriptHash && hash.length !== 32) { | ||
if (Address.isPayToWitnessScriptHash(type) && hash.length !== 32) { | ||
throw new TypeError('Address hashbuffer must be exactly 32 bytes for v0 witness script hash.'); | ||
@@ -454,3 +499,3 @@ } | ||
var hash; | ||
if (type === Address.PayToWitnessScriptHash) { | ||
if (Address.isPayToWitnessScriptHash(type)) { | ||
hash = Hash.sha256(script.toBuffer()); | ||
@@ -457,0 +502,0 @@ } else { |
@@ -752,3 +752,4 @@ 'use strict'; | ||
outputScript = outputScript instanceof Script ? outputScript : new Script(outputScript); | ||
$.checkArgumentType(satoshis, 'number', 'satoshis'); | ||
satoshis = parseInt(satoshis); | ||
$.checkArgument(JSUtil.isNaturalNumber(satoshis), 'satoshis must be a natural number'); | ||
input.output = new Output({ | ||
@@ -797,2 +798,3 @@ script: outputScript, | ||
Transaction.prototype.fee = function(amount) { | ||
amount = parseInt(amount); | ||
$.checkArgument(!isNaN(amount), 'amount must be a number'); | ||
@@ -813,2 +815,3 @@ this._fee = amount; | ||
Transaction.prototype.feePerKb = function(amount) { | ||
amount = parseFloat(amount); // fee rate can be a fractional number (float) | ||
$.checkArgument(!isNaN(amount), 'amount must be a number'); | ||
@@ -829,3 +832,4 @@ this._feePerKb = amount; | ||
*/ | ||
Transaction.prototype.feePerByte = function (amount) { | ||
Transaction.prototype.feePerByte = function(amount) { | ||
amount = parseFloat(amount); // fee rate can be a fractional number (float) | ||
$.checkArgument(!isNaN(amount), 'amount must be a number'); | ||
@@ -890,6 +894,4 @@ this._feePerByte = amount; | ||
$.checkArgument( | ||
JSUtil.isNaturalNumber(amount), | ||
'Amount is expected to be a positive integer' | ||
); | ||
amount = parseInt(amount); | ||
$.checkArgument(JSUtil.isNaturalNumber(amount), 'Amount is expected to be a positive integer'); | ||
this.addOutput(new Output({ | ||
@@ -896,0 +898,0 @@ script: Script(new Address(address)), |
{ | ||
"name": "bitcore-lib", | ||
"version": "11.1.1", | ||
"version": "11.1.4", | ||
"description": "A pure and powerful JavaScript Bitcoin library.", | ||
@@ -54,3 +54,3 @@ "author": "BitPay <dev@bitpay.com>", | ||
"license": "MIT", | ||
"gitHead": "74d81834ca0e7cd02a5b9fda69484d4c972e4d30" | ||
"gitHead": "a4d34be71e726559795747d3f8fb97b746841324" | ||
} |
@@ -33,3 +33,3 @@ 'use strict'; | ||
return new Address(P2WPKHLivenet[0], 'livenet', 'pubkey'); | ||
}).should.throw('Third argument must be "pubkeyhash", "scripthash", "witnesspubkeyhash", "witnessscripthash", or "taproot".'); | ||
}).should.throw('Third argument must be one of: "pubkeyhash", "p2pkh", "scripthash", "p2sh", "witnesspubkeyhash", "p2wpkh", "witnessscripthash", "p2wsh", "taproot", "p2tr".'); | ||
}); | ||
@@ -36,0 +36,0 @@ |
@@ -39,3 +39,3 @@ 'use strict'; | ||
return new Address(PKHLivenet[0], 'livenet', 'pubkey'); | ||
}).should.throw('Third argument must be "pubkeyhash", "scripthash", "witnesspubkeyhash", "witnessscripthash", or "taproot".'); | ||
}).should.throw('Third argument must be one of: "pubkeyhash", "p2pkh", "scripthash", "p2sh", "witnesspubkeyhash", "p2wpkh", "witnessscripthash", "p2wsh", "taproot", "p2tr".'); | ||
}); | ||
@@ -42,0 +42,0 @@ |
14758758
0.02%88898
0.04%