mirror of https://github.com/BTCPrivate/copay.git
96 lines
2.4 KiB
JavaScript
96 lines
2.4 KiB
JavaScript
var imports = require('soop').imports();
|
|
var EventEmitter = imports.EventEmitter || require('events').EventEmitter;
|
|
|
|
function Network(opts) {}
|
|
|
|
Network.parent = EventEmitter;
|
|
|
|
Network.prototype.start = function(opts, cb) {
|
|
// start! :D
|
|
this.peer = {
|
|
options: {
|
|
token: "asd"
|
|
}
|
|
};
|
|
if (cb) cb();
|
|
};
|
|
|
|
Network.prototype.send = function(peerIds, data, cb) {
|
|
// send! c:
|
|
};
|
|
|
|
Network.prototype.connectTo = function(peerId) {
|
|
// connect C:
|
|
};
|
|
|
|
|
|
Network.prototype.disconnect = function(cb) {
|
|
// disconect :c
|
|
};
|
|
|
|
Network.prototype.lockIncommingConnections = function() {
|
|
|
|
};
|
|
|
|
Network.prototype.getPeer = function() {};
|
|
Network.prototype.connectToCopayers = function(cps) {};
|
|
Network.prototype.isOnline = function() {
|
|
return true;
|
|
};
|
|
Network.prototype.peerFromCopayer = function(copayerId) {
|
|
return copayerId;
|
|
};
|
|
|
|
//hex version of one's own nonce
|
|
Network.prototype.setHexNonce = function(networkNonce) {
|
|
if (networkNonce && networkNonce.length === 16)
|
|
this.networkNonce = new Buffer(networkNonce, 'hex');
|
|
else
|
|
this.iterateNonce();
|
|
};
|
|
|
|
//hex version of copayers' nonces
|
|
Network.prototype.setHexNonces = function(networkNonces) {
|
|
for (var i in networkNonces) {
|
|
if (!this.networkNonces)
|
|
this.networkNonces = {};
|
|
if (networkNonces[i].length === 16)
|
|
this.networkNonces[i] = new Buffer(networkNonces[i], 'hex');
|
|
}
|
|
};
|
|
|
|
//for oneself
|
|
Network.prototype.getHexNonce = function() {
|
|
return this.networkNonce.toString('hex');
|
|
};
|
|
|
|
//for copayers
|
|
Network.prototype.getHexNonces = function() {
|
|
var networkNoncesHex = [];
|
|
for (var i in this.networkNonces) {
|
|
networkNoncesHex = this.networkNonces[i].toString('hex');
|
|
}
|
|
return networkNoncesHex;
|
|
};
|
|
|
|
Network.prototype.iterateNonce = function() {
|
|
if (!this.networkNonce || this.networkNonce.length !== 8) {
|
|
this.networkNonce = new Buffer(8);
|
|
this.networkNonce.fill(0);
|
|
this.networkNonce[7] = 1;
|
|
return this.networkNonce;
|
|
}
|
|
//the first 4 bytes of a nonce is a unix timestamp in seconds
|
|
//the second 4 bytes is just an iterated "sub" nonce
|
|
//the whole thing is interpreted as one big endian number
|
|
var noncep1 = this.networkNonce.slice(0, 4);
|
|
noncep1.writeUInt32BE(Math.floor(Date.now()/1000), 0);
|
|
var noncep2uint = this.networkNonce.slice(4, 8).readUInt32BE(0);
|
|
var noncep2 = this.networkNonce.slice(4, 8);
|
|
noncep2.writeUInt32BE(noncep2uint + 1, 0);
|
|
return this.networkNonce;
|
|
};
|
|
|
|
|
|
module.exports = require('soop')(Network);
|