mirror of
https://github.com/hanzo-labs/arcadia.git
synced 2026-10-30 18:55:41 +00:00
122 lines
4.0 KiB
JavaScript
122 lines
4.0 KiB
JavaScript
'use strict';
|
|
var etherscan = function() {}
|
|
etherscan.SERVERURL = "https://api.etherscan.io/api";
|
|
etherscan.pendingPosts = [];
|
|
etherscan.config = {
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
|
}
|
|
};
|
|
|
|
etherscan.getCurrentBlock = function(callback) {
|
|
this.post({
|
|
module: 'proxy',
|
|
action: 'eth_blockNumber'
|
|
}, function(data) {
|
|
if (data.error) callback({ error: true, msg: data.error.message, data: '' });
|
|
else callback({ error: false, msg: '', data: new BigNumber(data.result).toString() });
|
|
});
|
|
}
|
|
etherscan.getBalance = function(addr, callback) {
|
|
this.post({
|
|
module: 'account',
|
|
action: 'balance',
|
|
address: addr,
|
|
tag: 'latest'
|
|
}, function(data) {
|
|
if (data.message != 'OK') callback({ error: true, msg: data.message, data: '' });
|
|
else callback({ error: false, msg: '', data: { address: addr, balance: data.result } });
|
|
});
|
|
}
|
|
etherscan.getTransactionData = function(addr, callback) {
|
|
var response = { error: false, msg: '', data: { address: addr, balance: '', gasprice: '', nonce: '' } };
|
|
var parentObj = this;
|
|
parentObj.getBalance(addr, function(data) {
|
|
if (data.error) {
|
|
callback({ error: true, msg: data.msg, data: '' });
|
|
return;
|
|
}
|
|
response.data.balance = data.data.balance;
|
|
parentObj.post({
|
|
module: 'proxy',
|
|
action: 'eth_gasPrice'
|
|
}, function(data) {
|
|
if (data.error) {
|
|
callback({ error: true, msg: data.error.message, data: '' });
|
|
return;
|
|
}
|
|
response.data.gasprice = data.result;
|
|
parentObj.post({
|
|
module: 'proxy',
|
|
address: addr,
|
|
action: 'eth_getTransactionCount',
|
|
tag: 'latest'
|
|
}, function(data) {
|
|
if (data.error) {
|
|
callback({ error: true, msg: data.error.message, data: '' });
|
|
return;
|
|
}
|
|
response.data.nonce = data.result;
|
|
callback(response);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
etherscan.sendRawTx = function(rawTx, callback) {
|
|
this.post({
|
|
module: 'proxy',
|
|
action: 'eth_sendRawTransaction',
|
|
hex: rawTx
|
|
}, function(data) {
|
|
if (data.error) callback({ error: true, msg: data.error.message, data: '' });
|
|
else callback({ error: false, msg: '', data: data.result });
|
|
});
|
|
}
|
|
etherscan.getEstimatedGas = function(txobj, callback) {
|
|
this.post({
|
|
module: 'proxy',
|
|
action: 'eth_estimateGas',
|
|
to: txobj.to,
|
|
value: txobj.value,
|
|
data: txobj.data,
|
|
from: txobj.from
|
|
}, function(data) {
|
|
if (data.error) callback({ error: true, msg: data.error.message, data: '' });
|
|
else callback({ error: false, msg: '', data: data.result });
|
|
});
|
|
}
|
|
etherscan.getEthCall = function(txobj, callback) {
|
|
this.post({
|
|
module: 'proxy',
|
|
action: 'eth_call',
|
|
to: txobj.to,
|
|
data: txobj.data
|
|
}, function(data) {
|
|
if (data.error) callback({ error: true, msg: data.error.message, data: '' });
|
|
else callback({ error: false, msg: '', data: data.result });
|
|
});
|
|
}
|
|
etherscan.queuePost = function() {
|
|
var data = this.pendingPosts[0].data;
|
|
var callback = this.pendingPosts[0].callback;
|
|
var parentObj = this;
|
|
data.apikey = 'DSH5B24BQYKD1AD8KUCDY3SAQSS6ZAU175';
|
|
ajaxReq.http.post(this.SERVERURL, ajaxReq.postSerializer(data), this.config).then(function(data) {
|
|
callback(data.data);
|
|
parentObj.pendingPosts.splice(0, 1);
|
|
if (parentObj.pendingPosts.length > 0) parentObj.queuePost();
|
|
}, function(data){
|
|
callback({ error: true, msg: "connection error", data: "" });
|
|
});
|
|
}
|
|
etherscan.post = function(data, callback) {
|
|
this.pendingPosts.push({
|
|
data: data,
|
|
callback: function(_data) {
|
|
callback(_data);
|
|
}
|
|
});
|
|
if (this.pendingPosts.length == 1) this.queuePost();
|
|
}
|
|
module.exports = etherscan;
|