From 57154ccde4dde8b3324cdd62e2aad309ff0ade9c Mon Sep 17 00:00:00 2001 From: Esotericizm Date: Tue, 10 Feb 2015 20:25:57 +1000 Subject: [PATCH 1/5] Add Digibyte Support --- src/networks.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/networks.js b/src/networks.js index db5aab6ee..d7d540cef 100644 --- a/src/networks.js +++ b/src/networks.js @@ -124,7 +124,20 @@ var networks = { dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54 estimateFee: estimateFee('zetacoin') - } + }, + digibyte: { + magicPrefix: '\x18Digibyte Signed Message:\n', + bip32: { + public: 0x0488b21e, + private: 0x0488ade4 + }, + pubKeyHash: 0x1e, + scriptHash: 0x05, + wif: 0x80, + dustThreshold: 546, // + feePerKb: 10000, // + estimateFee: estimateFee('digibyte') + } } function estimateFee(type) { From a908d7d6b8bc89fde98d8a41875538e9693ca765 Mon Sep 17 00:00:00 2001 From: Esotericizm Date: Sat, 14 Feb 2015 20:53:00 +1000 Subject: [PATCH 2/5] Digibyte Update --- .gitignore | 2 +- package.json | 32 ++++------- src/address.js | 2 +- src/eckey.js | 2 +- src/ecpubkey.js | 2 +- src/hdnode.js | 2 +- src/message.js | 4 +- src/networks.js | 123 ------------------------------------------- src/wallet.js | 2 +- test/bitcoin.core.js | 6 +-- test/ecdsa.js | 2 +- 11 files changed, 21 insertions(+), 158 deletions(-) diff --git a/.gitignore b/.gitignore index adcb09ced..b789598fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ node_modules -bitcoinjs-min.js +digibytejs-min.js coverage diff --git a/package.json b/package.json index 723720761..ac055e239 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,24 @@ { - "name": "bitcoinjs-lib", + "name": "digibytejs-lib", "version": "1.4.4", - "description": "Client-side Bitcoin JavaScript library", + "description": "Client-side Digibyte JavaScript library", "main": "./src/index.js", "keywords": [ - "bitcoin", + "digibyte", "browser", "client", "library" ], "contributors": [ { - "name": "Daniel Cousens", - "email": "bitcoin@dcousens.com", - "url": "http://dcousens.com" - }, - { - "name": "Kyle Drake", - "email": "kyle@kyledrake.net", - "url": "http://kyledrake.net/" - }, - { - "name": "Wei Lu", - "email": "luwei.here@gmail.com", - "url": "http://weilu.github.io/" - }, - { - "name": "Stefan Thomas", - "email": "justmoon@members.fsf.org", - "url": "http://www.justmoon.net" + "name": "Esotericizm", + "email": "esotericizm@cryptoservices.net", + "url": "http://cryptoservices.net" + } } ], "scripts": { - "compile": "browserify ./src/index.js -s bitcoin | uglifyjs > bitcoinjs-min.js", + "compile": "browserify ./src/index.js -s digibyte | uglifyjs > digibytejs-min.js", "coverage": "istanbul cover _mocha -- test/*.js", "coveralls": "npm run-script coverage && coveralls < coverage/lcov.info", "integration": "mocha --reporter list test/integration/*.js", @@ -42,7 +28,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/bitcoinjs/bitcoinjs-lib.git" + "url": "https://github.com/DigiByte-Team/digibytejs-lib" }, "dependencies": { "bigi": "^1.4.0", diff --git a/src/address.js b/src/address.js index be2b239c9..c81843f4b 100644 --- a/src/address.js +++ b/src/address.js @@ -33,7 +33,7 @@ Address.fromBase58Check = function(string) { } Address.fromOutputScript = function(script, network) { - network = network || networks.bitcoin + network = network || networks.digibyte if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash) if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash) diff --git a/src/eckey.js b/src/eckey.js index 74ba93c76..53e96c66b 100644 --- a/src/eckey.js +++ b/src/eckey.js @@ -61,7 +61,7 @@ ECKey.makeRandom = function(compressed, rng) { // Export functions ECKey.prototype.toWIF = function(network) { - network = network || networks.bitcoin + network = network || networks.digibyte var bufferLen = this.pub.compressed ? 34 : 33 var buffer = new Buffer(bufferLen) diff --git a/src/ecpubkey.js b/src/ecpubkey.js index 860e415a6..5bde59b36 100644 --- a/src/ecpubkey.js +++ b/src/ecpubkey.js @@ -33,7 +33,7 @@ ECPubKey.fromHex = function(hex) { // Operations ECPubKey.prototype.getAddress = function(network) { - network = network || networks.bitcoin + network = network || networks.digibyte return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash) } diff --git a/src/hdnode.js b/src/hdnode.js index e81dc4ecb..7d437c181 100644 --- a/src/hdnode.js +++ b/src/hdnode.js @@ -27,7 +27,7 @@ function findBIP32NetworkByVersion(version) { } function HDNode(K, chainCode, network) { - network = network || networks.bitcoin + network = network || networks.digibyte typeForce('Buffer', chainCode) diff --git a/src/message.js b/src/message.js index 6305a691c..9a59cbd15 100644 --- a/src/message.js +++ b/src/message.js @@ -20,7 +20,7 @@ function magicHash(message, network) { } function sign(privKey, message, network) { - network = network || networks.bitcoin + network = network || networks.digibyte var hash = magicHash(message, network) var signature = privKey.sign(hash) @@ -36,7 +36,7 @@ function verify(address, signature, message, network) { signature = new Buffer(signature, 'base64') } - network = network || networks.bitcoin + network = network || networks.digibyte var hash = magicHash(message, network) var parsed = ECSignature.parseCompact(signature) diff --git a/src/networks.js b/src/networks.js index d7d540cef..c01d9d440 100644 --- a/src/networks.js +++ b/src/networks.js @@ -2,129 +2,6 @@ // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731 var networks = { - bitcoin: { - magicPrefix: '\x18Bitcoin Signed Message:\n', - bip32: { - public: 0x0488b21e, - private: 0x0488ade4 - }, - pubKeyHash: 0x00, - scriptHash: 0x05, - wif: 0x80, - dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162 - feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53 - estimateFee: estimateFee('bitcoin') - }, - testnet: { - magicPrefix: '\x18Bitcoin Signed Message:\n', - bip32: { - public: 0x043587cf, - private: 0x04358394 - }, - pubKeyHash: 0x6f, - scriptHash: 0xc4, - wif: 0xef, - dustThreshold: 546, - feePerKb: 10000, - estimateFee: estimateFee('testnet') - }, - litecoin: { - magicPrefix: '\x19Litecoin Signed Message:\n', - bip32: { - public: 0x019da462, - private: 0x019d9cfe - }, - pubKeyHash: 0x30, - scriptHash: 0x05, - wif: 0xb0, - dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365 - dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53 - feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56 - estimateFee: estimateFee('litecoin') - }, - dogecoin: { - magicPrefix: '\x19Dogecoin Signed Message:\n', - bip32: { - public: 0x02facafd, - private: 0x02fac398 - }, - pubKeyHash: 0x1e, - scriptHash: 0x16, - wif: 0x9e, - dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160 - dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62 - feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58 - estimateFee: estimateFee('dogecoin') - }, - viacoin: { - magicPrefix: '\x18Viacoin Signed Message:\n', - bip32: { - public: 0x0488b21e, - private: 0x0488ade4 - }, - pubKeyHash: 0x47, - scriptHash: 0x21, - wif: 0xc7, - dustThreshold: 560, - dustSoftThreshold: 100000, - feePerKb: 100000, // - estimateFee: estimateFee('viacoin') - }, - viacointestnet: { - magicPrefix: '\x18Viacoin Signed Message:\n', - bip32: { - public: 0x043587cf, - private: 0x04358394 - }, - pubKeyHash: 0x7f, - scriptHash: 0xc4, - wif: 0xff, - dustThreshold: 560, - dustSoftThreshold: 100000, - feePerKb: 100000, - estimateFee: estimateFee('viacointestnet') - }, - gamerscoin: { - magicPrefix: '\x19Gamerscoin Signed Message:\n', - bip32: { - public: 0x019da462, - private: 0x019d9cfe - }, - pubKeyHash: 0x26, - scriptHash: 0x05, - wif: 0xA6, - dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363 - dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51 - feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54 - estimateFee: estimateFee('gamerscoin') - }, - jumbucks: { - magicPrefix: '\x19Jumbucks Signed Message:\n', - bip32: { - public: 0x037a689a, - private: 0x037a6460 - }, - pubKeyHash: 0x2b, - scriptHash: 0x05, - wif: 0xab, - dustThreshold: 0, - dustSoftThreshold: 10000, - feePerKb: 10000, - estimateFee: estimateFee('jumbucks') - }, - zetacoin: { - magicPrefix: '\x18Zetacoin Signed Message:\n', - bip32: { - public: 0x0488b21e, - private: 0x0488ade4 - }, - pubKeyHash: 0x50, - scriptHash: 0x09, - wif: 0xe0, - dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159 - feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54 - estimateFee: estimateFee('zetacoin') - }, digibyte: { magicPrefix: '\x18Digibyte Signed Message:\n', bip32: { diff --git a/src/wallet.js b/src/wallet.js index 3e3ab7799..e2fa78cc7 100644 --- a/src/wallet.js +++ b/src/wallet.js @@ -13,7 +13,7 @@ function Wallet(seed, network) { console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296') seed = seed || crypto.randomBytes(32) - network = network || networks.bitcoin + network = network || networks.digibyte // Stored in a closure to make accidental serialization less likely var masterKey = HDNode.fromSeedBuffer(seed, network) diff --git a/test/bitcoin.core.js b/test/bitcoin.core.js index 4b716d9cb..d1ac00d9b 100644 --- a/test/bitcoin.core.js +++ b/test/bitcoin.core.js @@ -49,7 +49,7 @@ describe('Bitcoin-core', function() { var string = f[0] var hex = f[1] var params = f[2] - var network = networks.bitcoin + var network = networks.digibyte if (params.isPrivkey) return if (params.isTestnet) network = networks.testnet @@ -71,8 +71,8 @@ describe('Bitcoin-core', function() { // base58_keys_invalid describe('Address', function() { var allowedNetworks = [ - networks.bitcoin.pubkeyhash, - networks.bitcoin.scripthash, + networks.digibyte.pubkeyhash, + networks.digibyte.scripthash, networks.testnet.pubkeyhash, networks.testnet.scripthash ] diff --git a/test/ecdsa.js b/test/ecdsa.js index b95397775..163e58aa6 100644 --- a/test/ecdsa.js +++ b/test/ecdsa.js @@ -109,7 +109,7 @@ describe('ecdsa', function() { }) describe('with i ∈ {0,1,2,3}', function() { - var hash = message.magicHash('1111', networks.bitcoin) + var hash = message.magicHash('1111', networks.digibyte) var e = BigInteger.fromBuffer(hash) var signatureBuffer = new Buffer('INcvXVVEFyIfHLbDX+xoxlKFn3Wzj9g0UbhObXdMq+YMKC252o5RHFr0/cKdQe1WsBLUBi4morhgZ77obDJVuV0=', 'base64') From 06a085cfb33dbb86d67e66f544d792db442e5ae3 Mon Sep 17 00:00:00 2001 From: Esotericizm Date: Sat, 14 Feb 2015 21:49:41 +1000 Subject: [PATCH 3/5] Update package.json --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index ac055e239..3e21a0432 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "email": "esotericizm@cryptoservices.net", "url": "http://cryptoservices.net" } - } ], "scripts": { "compile": "browserify ./src/index.js -s digibyte | uglifyjs > digibytejs-min.js", From b8c6972c5b5f061760305d151c742f256269d8a6 Mon Sep 17 00:00:00 2001 From: Esotericizm Date: Sat, 14 Feb 2015 21:51:50 +1000 Subject: [PATCH 4/5] Update package.json --- package.json | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3e21a0432..ec6e61a5d 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,31 @@ "library" ], "contributors": [ + { + "name": "Daniel Cousens", + "email": "bitcoin@dcousens.com", + "url": "http://dcousens.com" + }, + { + "name": "Kyle Drake", + "email": "kyle@kyledrake.net", + "url": "http://kyledrake.net/" + }, + { + "name": "Wei Lu", + "email": "luwei.here@gmail.com", + "url": "http://weilu.github.io/" + }, + { + "name": "Stefan Thomas", + "email": "justmoon@members.fsf.org", + "url": "http://www.justmoon.net" + }, { "name": "Esotericizm", "email": "esotericizm@cryptoservices.net", - "url": "http://cryptoservices.net" - } + "url": "http://www.cryptoservices.net" + }, ], "scripts": { "compile": "browserify ./src/index.js -s digibyte | uglifyjs > digibytejs-min.js", @@ -27,7 +47,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/DigiByte-Team/digibytejs-lib" + "url": "https://github.com/DigiByte-Team/digibytejs-lib.git" }, "dependencies": { "bigi": "^1.4.0", From 4186a693a0ce2ca7452fc66947419c477f660097 Mon Sep 17 00:00:00 2001 From: Esotericizm Date: Sat, 14 Feb 2015 21:54:18 +1000 Subject: [PATCH 5/5] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ec6e61a5d..8b1c29e34 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "name": "Esotericizm", "email": "esotericizm@cryptoservices.net", "url": "http://www.cryptoservices.net" - }, + } ], "scripts": { "compile": "browserify ./src/index.js -s digibyte | uglifyjs > digibytejs-min.js",