added registrar
This commit is contained in:
parent
c2e8dfdf33
commit
74b54c03b0
2
app.js
2
app.js
@ -1,5 +1,5 @@
|
|||||||
var sleep = require('sleep');
|
var sleep = require('sleep');
|
||||||
sleep.sleep(15);
|
// sleep.sleep(15);
|
||||||
|
|
||||||
var nodeModel = require('./lib/node');
|
var nodeModel = require('./lib/node');
|
||||||
|
|
||||||
|
71
lib/node.js
71
lib/node.js
@ -3,6 +3,7 @@ var _ = require('lodash');
|
|||||||
var os = require('os');
|
var os = require('os');
|
||||||
var shelljs = require('shelljs');
|
var shelljs = require('shelljs');
|
||||||
var debounce = require('debounce');
|
var debounce = require('debounce');
|
||||||
|
var registrar = require('./registrar.js');
|
||||||
|
|
||||||
var Primus = require('primus'),
|
var Primus = require('primus'),
|
||||||
Emitter = require('primus-emit'),
|
Emitter = require('primus-emit'),
|
||||||
@ -14,6 +15,8 @@ var ETH_VERSION,
|
|||||||
API_VERSION;
|
API_VERSION;
|
||||||
var INSTANCE_NAME = process.env.INSTANCE_NAME;
|
var INSTANCE_NAME = process.env.INSTANCE_NAME;
|
||||||
|
|
||||||
|
var Contract = null;
|
||||||
|
|
||||||
web3.setProvider(new web3.providers.HttpProvider('http://' + (process.env.RPC_HOST || 'localhost') + ':' + (process.env.RPC_PORT || '8080')));
|
web3.setProvider(new web3.providers.HttpProvider('http://' + (process.env.RPC_HOST || 'localhost') + ':' + (process.env.RPC_PORT || '8080')));
|
||||||
|
|
||||||
Socket = Primus.createSocket({
|
Socket = Primus.createSocket({
|
||||||
@ -90,6 +93,9 @@ function Node()
|
|||||||
|
|
||||||
this.blocks = [];
|
this.blocks = [];
|
||||||
|
|
||||||
|
this._Registrar = null;
|
||||||
|
this._knownMiners = [];
|
||||||
|
|
||||||
this._socket = null;
|
this._socket = null;
|
||||||
this.pendingFilter = false;
|
this.pendingFilter = false;
|
||||||
this.chainFilter = false;
|
this.chainFilter = false;
|
||||||
@ -300,8 +306,31 @@ Node.prototype.gasSpendingChart = function()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node.prototype.getMinerName = function(miner)
|
||||||
|
{
|
||||||
|
var result = _.find(this._knownMiners, {miner: miner});
|
||||||
|
|
||||||
|
if(result !== undefined)
|
||||||
|
{
|
||||||
|
return result.name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var name = this._Registrar.name(miner);
|
||||||
|
|
||||||
|
if(name.length > 0)
|
||||||
|
{
|
||||||
|
this._knownMiners.push({miner: miner, name: name});
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Node.prototype.minersChart = function()
|
Node.prototype.minersChart = function()
|
||||||
{
|
{
|
||||||
|
var self = this;
|
||||||
var miners = _.countBy(this.blocks, function(block)
|
var miners = _.countBy(this.blocks, function(block)
|
||||||
{
|
{
|
||||||
return block.miner;
|
return block.miner;
|
||||||
@ -309,8 +338,10 @@ Node.prototype.minersChart = function()
|
|||||||
|
|
||||||
var minersArray = [];
|
var minersArray = [];
|
||||||
|
|
||||||
_.forEach(miners, function(cnt, miner) {
|
_.forEach(miners, function(cnt, miner)
|
||||||
minersArray.push({miner: miner, blocks: cnt});
|
{
|
||||||
|
var name = self.getMinerName(miner);
|
||||||
|
minersArray.push({miner: miner, name: name, blocks: cnt});
|
||||||
});
|
});
|
||||||
|
|
||||||
var minersArray = _.sortBy(minersArray, 'blocks').reverse();
|
var minersArray = _.sortBy(minersArray, 'blocks').reverse();
|
||||||
@ -437,8 +468,15 @@ Node.prototype.emit = function(message, payload)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node.prototype.installContract = function()
|
||||||
|
{
|
||||||
|
Contract = web3.eth.contract(registrar.desc);
|
||||||
|
this._Registrar = new Contract(registrar.address);
|
||||||
|
}
|
||||||
|
|
||||||
Node.prototype.init = function()
|
Node.prototype.init = function()
|
||||||
{
|
{
|
||||||
|
this.installContract();
|
||||||
this.update();
|
this.update();
|
||||||
this.setWatches();
|
this.setWatches();
|
||||||
}
|
}
|
||||||
@ -458,4 +496,33 @@ Node.prototype.stop = function()
|
|||||||
web3.reset();
|
web3.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function directICAP(address)
|
||||||
|
{
|
||||||
|
if (address[0] != 0)
|
||||||
|
return '';
|
||||||
|
|
||||||
|
var d = toBase36(address);
|
||||||
|
|
||||||
|
while(d.length < 30)
|
||||||
|
d = "0" + d;
|
||||||
|
|
||||||
|
return d;
|
||||||
|
// return iban("XE", d);
|
||||||
|
}
|
||||||
|
|
||||||
|
function toBase36(hex)
|
||||||
|
{
|
||||||
|
var c_alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
var a = hex.length;
|
||||||
|
var ret = '';
|
||||||
|
|
||||||
|
for(; a > 0; a = a/36){
|
||||||
|
ret = c_alphabet[a%36] + ret;
|
||||||
|
console.log('a: ', a);
|
||||||
|
console.log('ret: ', ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = Node;
|
module.exports = Node;
|
169
lib/registrar.js
Normal file
169
lib/registrar.js
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
var address = "0xc6d9d2cd449a754c494264e1809c50e34d64562b";
|
||||||
|
var registrar = [
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_owner",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"name",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"owner",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_owner",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"getAddress",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_owner",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"content",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_content",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"addr",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_address",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"subRegistrar",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_subRegistrar",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"constant":true,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"_owner",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"getName",
|
||||||
|
"outputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"o_name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type":"function"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anonymous":false,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"indexed":true,
|
||||||
|
"name":"name",
|
||||||
|
"type":"bytes32"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"Changed",
|
||||||
|
"type":"event"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anonymous":false,
|
||||||
|
"inputs":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"indexed":true,
|
||||||
|
"name":"name",
|
||||||
|
"type":"bytes32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"indexed":true,
|
||||||
|
"name":"addr",
|
||||||
|
"type":"address"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name":"PrimaryChanged",
|
||||||
|
"type":"event"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
module.exports = { desc: registrar, address: address};
|
Loading…
Reference in New Issue
Block a user