Skip to content

Commit

Permalink
resolved merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
Gordon Hall committed Apr 19, 2014
2 parents ba8542d + 0b00200 commit 76247ff
Show file tree
Hide file tree
Showing 34 changed files with 287 additions and 97 deletions.
45 changes: 23 additions & 22 deletions bitcore.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,40 +14,41 @@ requireWhenAccessed('bignum', 'bignum');
requireWhenAccessed('base58', 'base58-native');
requireWhenAccessed('bufferput', 'bufferput');
requireWhenAccessed('buffertools', 'buffertools');
requireWhenAccessed('Buffers.monkey', './Buffers.monkey');
requireWhenAccessed('Buffers.monkey', './patches/Buffers.monkey');
requireWhenAccessed('config', './config');
requireWhenAccessed('const', './const');
requireWhenAccessed('Deserialize', './Deserialize');
requireWhenAccessed('Deserialize', './lib/Deserialize');
requireWhenAccessed('log', './util/log');
requireWhenAccessed('networks', './networks');
requireWhenAccessed('util', './util/util');
requireWhenAccessed('EncodedData', './util/EncodedData');
requireWhenAccessed('VersionedData', './util/VersionedData');
requireWhenAccessed('BinaryParser', './util/BinaryParser');
requireWhenAccessed('Address', './Address');
requireWhenAccessed('BIP32', './BIP32');
requireWhenAccessed('Point', './Point');
requireWhenAccessed('Opcode', './Opcode');
requireWhenAccessed('Script', './Script');
requireWhenAccessed('Transaction', './Transaction');
requireWhenAccessed('TransactionBuilder', './TransactionBuilder');
requireWhenAccessed('Connection', './Connection');
requireWhenAccessed('Peer', './Peer');
requireWhenAccessed('Block', './Block');
requireWhenAccessed('ScriptInterpreter', './ScriptInterpreter');
requireWhenAccessed('Bloom', './Bloom');
requireWhenAccessed('Key', './Key');
requireWhenAccessed('Address', './lib/Address');
requireWhenAccessed('BIP32', './lib/BIP32');
requireWhenAccessed('Point', './lib/Point');
requireWhenAccessed('Opcode', './lib/Opcode');
requireWhenAccessed('Script', './lib/Script');
requireWhenAccessed('Transaction', './lib/Transaction');
requireWhenAccessed('TransactionBuilder', './lib/TransactionBuilder');
requireWhenAccessed('Connection', './lib/Connection');
requireWhenAccessed('Peer', './lib/Peer');
requireWhenAccessed('Block', './lib/Block');
requireWhenAccessed('ScriptInterpreter', './lib/ScriptInterpreter');
requireWhenAccessed('Bloom', './lib/Bloom');
requireWhenAccessed('Key', './lib/Key');
Object.defineProperty(module.exports, 'KeyModule', {get: function() {
console.log('KeyModule is deprecated.');
return require('bindings')('KeyModule');
}});
requireWhenAccessed('SINKey', './SINKey');
requireWhenAccessed('SIN', './SIN');
requireWhenAccessed('PrivateKey', './PrivateKey');
requireWhenAccessed('RpcClient', './RpcClient');
requireWhenAccessed('Wallet', './Wallet');
requireWhenAccessed('WalletKey', './WalletKey');
requireWhenAccessed('PeerManager', './PeerManager');
requireWhenAccessed('SINKey', './lib/SINKey');
requireWhenAccessed('SIN', './lib/SIN');
requireWhenAccessed('PrivateKey', './lib/PrivateKey');
requireWhenAccessed('RpcClient', './lib/RpcClient');
requireWhenAccessed('Wallet', './lib/Wallet');
requireWhenAccessed('WalletKey', './lib/WalletKey');
requireWhenAccessed('PeerManager', './lib/PeerManager');
requireWhenAccessed('Message', './lib/Message');
module.exports.Buffer = Buffer;

if (typeof process.versions === 'undefined') {
Expand Down
49 changes: 25 additions & 24 deletions browser/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,32 @@ var pack = function (params) {
};

var modules = [
'Address',
'BIP32',
'Block',
'Bloom',
'Buffers.monkey',
'Connection',
'Deserialize',
'Gruntfile',
'Number.monkey',
'Opcode',
'Peer',
'PeerManager',
'PrivateKey',
'RpcClient',
'Key',
'Point',
'SIN',
'SINKey',
'Script',
'ScriptInterpreter',
'Sign',
'Transaction',
'TransactionBuilder',
'Wallet',
'WalletKey',
'lib/Address',
'lib/BIP32',
'lib/Block',
'lib/Bloom',
'lib/Connection',
'lib/Deserialize',
'lib/Message',
'lib/Opcode',
'lib/Peer',
'lib/PeerManager',
'lib/PrivateKey',
'lib/RpcClient',
'lib/Key',
'lib/Point',
'lib/SIN',
'lib/SINKey',
'lib/Script',
'lib/ScriptInterpreter',
'lib/Sign',
'lib/Transaction',
'lib/TransactionBuilder',
'lib/Wallet',
'lib/WalletKey',
'patches/Buffers.monkey',
'patches/Number.monkey',
'config',
'const',
'networks',
Expand Down
2 changes: 1 addition & 1 deletion examples/PeerDiscovery.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var PeerManager = require('../PeerManager');
var PeerManager = require('../lib/PeerManager');
var peerman = new PeerManager();

peerman.discoverPeers(function(err, peers) {
Expand Down
1 change: 1 addition & 0 deletions examples/SendTx.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var run = function() {
// Replace '../bitcore' with 'bitcore' if you use this code elsewhere.
var bitcore = require('../bitcore');
var Peer = bitcore.Peer;

var TransactionBuilder = bitcore.TransactionBuilder;
var PeerManager = bitcore.PeerManager;

Expand Down
49 changes: 46 additions & 3 deletions Address.js → lib/Address.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';
var imports = require('soop').imports();
var coinUtil = imports.coinUtil || require('./util/util');
var parent = imports.parent || require('./util/VersionedData');
var networks = imports.networks || require('./networks');
var coinUtil = imports.coinUtil || require('../util');
var parent = imports.parent || require('../util/VersionedData');
var networks = imports.networks || require('../networks');
var Script = imports.Script || require('./Script');

function Address() {
Expand Down Expand Up @@ -47,13 +47,56 @@ Address.fromScript = function(script, network) {
if (!network)
network = 'livenet';

if (typeof script === 'string') {
script = new Script(new Buffer(script,'hex'));
}

var version = networks[network].P2SHVersion;
var buf = script.getBuffer();
var hash = coinUtil.sha256ripe160(buf);

return new Address(version, hash);
};

//extract and address from scriptPubKey
Address.fromScriptPubKey = function(scriptPubKey, network) {

if (typeof scriptPubKey === 'string') {
scriptPubKey = new Script(new Buffer(scriptPubKey,'hex'));
}

if (!network)
network = 'livenet';

var ret=[], version;
var payload = scriptPubKey.capture();

if (payload) {
var txType = scriptPubKey.classify();
switch (txType) {
case Script.TX_PUBKEY:
payload[0] = coinUtil.sha256ripe160(payload[0]);
version = networks[network].addressVersion;
break;
case Script.TX_PUBKEYHASH:
version = networks[network].addressVersion;
break;
case Script.TX_MULTISIG:
version = networks[network].addressVersion;
for(var i in payload)
payload[i] = coinUtil.sha256ripe160(payload[i]);
break;
case Script.TX_SCRIPTHASH:
version = networks[network].P2SHVersion;
break;
}
for(var i in payload)
ret.push(new Address(version,payload[i]));
}
return ret;
};


Address.prototype.validate = function() {
this.doAsBinary(function() {
Address.super(this, 'validate', arguments);
Expand Down
4 changes: 2 additions & 2 deletions BIP32.js → lib/BIP32.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
var imports = require('soop').imports();
var base58 = imports.base58 || require('base58-native').base58;
var coinUtil = imports.coinUtil || require('./util/util');
var coinUtil = imports.coinUtil || require('../util');
var Key = imports.Key || require('./Key');
var Point = imports.Point || require('./Point');
var bignum = imports.bignum || require('bignum');
var crypto = require('crypto');
var networks = require('./networks');
var networks = require('../networks');

var secp256k1_n = new bignum("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 16);
var secp256k1_Gx = new bignum("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798", 16);
Expand Down
4 changes: 2 additions & 2 deletions Block.js → lib/Block.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var imports = require('soop').imports();

var util = imports.util || require('./util/util');
var util = imports.util || require('../util');
var Debug1 = imports.Debug1 || function() {};
var Script = imports.Script || require('./Script');
var Bignum = imports.Bignum || require('bignum');
Expand All @@ -11,7 +11,7 @@ var Transaction = imports.Transaction || require('./Transaction');
var TransactionIn = Transaction.In;
var TransactionOut = Transaction.Out;
var COINBASE_OP = Transaction.COINBASE_OP;
var VerificationError = imports.VerificationError || require('./util/error').VerificationError;
var VerificationError = imports.VerificationError || require('../util/error').VerificationError;
var BlockRules = {
maxTimeOffset: 2 * 60 * 60, // How far block timestamps can be into the future
largestHash: Bignum(2).pow(256)
Expand Down
File renamed without changes.
12 changes: 6 additions & 6 deletions Connection.js → lib/Connection.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
var imports = require('soop').imports();

var log = imports.log || require('./util/log');
var log = imports.log || require('../util/log');

var MAX_RECEIVE_BUFFER = 10000000;
var PROTOCOL_VERSION = 70000;

var Put = imports.Put || require('bufferput');
var Buffers = imports.Buffers || require('buffers');
require('./Buffers.monkey').patch(Buffers);
require('../patches/Buffers.monkey').patch(Buffers);

var bitcoreDefaults = imports.config || require('./config');
var networks = imports.networks || require('./networks');
var bitcoreDefaults = imports.config || require('../config');
var networks = imports.networks || require('../networks');
var Block = imports.Block || require('./Block');
var Transaction = imports.Transaction || require('./Transaction');
var util = imports.util || require('./util/util');
var Parser = imports.Parser || require('./util/BinaryParser');
var util = imports.util || require('../util');
var Parser = imports.Parser || require('../util/BinaryParser');
var buffertools = imports.buffertools || require('buffertools');
var doubleSha256 = imports.doubleSha256 || util.twoSha256;
var nonce = util.generateNonce();
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion Key.js → lib/Key.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if (process.versions) {
module.exports = Key;
} else {
// pure js version
var ECKey = require('./browser/vendor-bundle.js').ECKey;
var ECKey = require('../browser/vendor-bundle.js').ECKey;
var buffertools = require('buffertools');

var kSpec = function() {
Expand Down
42 changes: 42 additions & 0 deletions lib/Message.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
'use strict';
var imports = require('soop').imports();
var coinUtil = imports.coinUtil || require('../util');
var Key = imports.Key || require('./Key');

var Message = function() {
};

Message.sign = function(str, key) {
var hash = Message.magicHash(str);
var sig = key.signSync(hash);
return sig;
};

Message.verifyWithPubKey = function(pubkey, message, sig) {
var hash = Message.magicHash(message);
var key = new Key();
if (pubkey.length == 65)
key.compressed = false;
key.public = pubkey;

return key.verifySignatureSync(hash, sig);
};

//TODO: Message.verify ... with address, not pubkey

Message.magicBytes = new Buffer('Bitcoin Signed Message:\n');

Message.magicHash = function(str) {
var magicBytes = Message.magicBytes;
var prefix1 = coinUtil.varIntBuf(magicBytes.length);
var message = new Buffer(str);
var prefix2 = coinUtil.varIntBuf(message.length);

var buf = Buffer.concat([prefix1, magicBytes, prefix2, message]);

var hash = coinUtil.twoSha256(buf);

return hash;
};

module.exports = require('soop')(Message);
File renamed without changes.
File renamed without changes.
7 changes: 3 additions & 4 deletions PeerManager.js → lib/PeerManager.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

var imports = require('soop').imports();
var extend = imports.extend || require('extend');
var log = imports.log || require('./util/log');
var bitcoreDefaults = imports.config || require('./config');
var log = imports.log || require('../util/log');
var bitcoreDefaults = imports.config || require('../config');
var Connection = imports.Connection || require ('./Connection');

var Peer = imports.Peer || require('./Peer');
Expand Down Expand Up @@ -217,7 +216,7 @@ PeerManager.prototype.discoverPeers = function(callback) {
var self = this;
var async = imports.async || require('async');
var dns = imports.dns || require('dns');
var networks = imports.networks || require('./networks')[this.config.network];
var networks = imports.networks || require('../networks')[this.config.network];
var seeds = networks.dnsSeeds;

// keep track of tried seeds and results
Expand Down
10 changes: 5 additions & 5 deletions Point.js → lib/Point.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ var assert = require('assert');

//browser
if (!process.versions) {
var ECKey = require('./browser/vendor-bundle.js').ECKey;
var ECPointFp = require('./browser/vendor-bundle.js').ECPointFp;
var ECFieldElementFp = require('./browser/vendor-bundle.js').ECFieldElementFp;
var getSECCurveByName = require('./browser/vendor-bundle.js').getSECCurveByName;
var BigInteger = require('./browser/vendor-bundle.js').BigInteger;
var ECKey = require('../browser/vendor-bundle.js').ECKey;
var ECPointFp = require('../browser/vendor-bundle.js').ECPointFp;
var ECFieldElementFp = require('../browser/vendor-bundle.js').ECFieldElementFp;
var getSECCurveByName = require('../browser/vendor-bundle.js').getSECCurveByName;
var BigInteger = require('../browser/vendor-bundle.js').BigInteger;
var should = require('chai').should();
}

Expand Down
4 changes: 2 additions & 2 deletions PrivateKey.js → lib/PrivateKey.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var imports = require('soop').imports();

var parent = imports.parent || require('./util/VersionedData');
var networks= imports.networks || require('./networks');
var parent = imports.parent || require('../util/VersionedData');
var networks= imports.networks || require('../networks');

//compressed is true if public key is compressed; false otherwise
function PrivateKey(version, buf, compressed) {
Expand Down
2 changes: 1 addition & 1 deletion RpcClient.js → lib/RpcClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
var imports = require('soop').imports();
var http = imports.http || require('http');
var https = imports.https || require('https');
var log = imports.log || require('./util/log');
var log = imports.log || require('../util/log');

function RpcClient(opts) {
opts = opts || {};
Expand Down
2 changes: 1 addition & 1 deletion SIN.js → lib/SIN.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var imports = require('soop').imports();
var parent = imports.parent || require('./util/VersionedData');
var parent = imports.parent || require('../util/VersionedData');

function SIN(type, payload) {
if (typeof type != 'number') {
Expand Down
4 changes: 2 additions & 2 deletions SINKey.js → lib/SINKey.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var coinUtil = require('./util/util');
var timeUtil = require('./util/time');
var coinUtil = require('../util');
var timeUtil = require('../util/time');
var Key = require('./Key');
var SIN = require('./SIN');

Expand Down

0 comments on commit 76247ff

Please sign in to comment.