You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
315 lines
9.9 KiB
315 lines
9.9 KiB
var utils = require("../utils.js");
|
|
var config = require("../config.js");
|
|
var coins = require("../coins.js");
|
|
|
|
var SHA256 = require("crypto-js/sha256");
|
|
var earliestBlockTime = 1231006505;
|
|
var avgBlockTime = 200000;
|
|
var currentBlockHeight = 1234567;
|
|
|
|
|
|
function getBlockchainInfo() {
|
|
return new Promise(function(resolve, reject) {
|
|
resolve({
|
|
blocks: currentBlockHeight
|
|
});
|
|
});
|
|
}
|
|
|
|
function getNetworkInfo() {
|
|
return getRpcData("getnetworkinfo");
|
|
}
|
|
|
|
function getNetTotals() {
|
|
return getRpcData("getnettotals");
|
|
}
|
|
|
|
function getMempoolInfo() {
|
|
return getRpcData("getmempoolinfo");
|
|
}
|
|
|
|
function getUptimeSeconds() {
|
|
return getRpcData("uptime");
|
|
}
|
|
|
|
function getRawMempool() {
|
|
return getRpcDataWithParams("getrawmempool", true);
|
|
}
|
|
|
|
function getBlockByHeight(blockHeight) {
|
|
var txCount = utils.seededRandomIntBetween(blockHeight, 1, 20);
|
|
var txids = [];
|
|
for (var i = 0; i < txCount; i++) {
|
|
txids.push(SHA256("" + blockHeight + "_" + i));
|
|
}
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
resolve({
|
|
"hash": SHA256("" + blockHeight),
|
|
"confirmations": currentBlockHeight - blockHeight,
|
|
"strippedsize": 56098,
|
|
"size": 65384,
|
|
"weight": 233678,
|
|
"height": blockHeight,
|
|
"version": 536870912,
|
|
"versionHex": "20000000",
|
|
"merkleroot": "567a3d773b07372179ad651edc02776f851020af69b7375a68ad89557dcbff5b",
|
|
"tx": txids,
|
|
"time": 1529848136,
|
|
"mediantime": 1529846560,
|
|
"nonce": 3615953854,
|
|
"bits": "17376f56",
|
|
"difficulty": "5077499034879.017",
|
|
"chainwork": SHA256("xyz" + blockHeight),
|
|
"previousblockhash": SHA256("" + (blockHeight - 1)),
|
|
"nextblockhash": SHA256("" + (blockHeight + 1))
|
|
});
|
|
});
|
|
}
|
|
|
|
function getBlocksByHeight(blockHeights) {
|
|
console.log("mock.getBlocksByHeight: " + blockHeights);
|
|
return new Promise(function(resolve, reject) {
|
|
var blocks = [];
|
|
for (var i = 0; i < blockHeights.length; i++) {
|
|
getBlockByHeight(blockHeights[i]).then(function(result) {
|
|
blocks.push(result);
|
|
});
|
|
/*blocks.push({
|
|
"hash": "000000000000000000001542470d8261b9e5a2c3c2be2e2ab292d1a4c8250b12",
|
|
"confirmations": 3,
|
|
"strippedsize": 56098,
|
|
"size": 65384,
|
|
"weight": 233678,
|
|
"height": blockHeights[i],
|
|
"version": 536870912,
|
|
"versionHex": "20000000",
|
|
"merkleroot": "567a3d773b07372179ad651edc02776f851020af69b7375a68ad89557dcbff5b",
|
|
"tx": [
|
|
"a97a04ebcaaca0ec80a6b2f295171eb8b082b4bc5446cd085444c304dca6f014",
|
|
"223fdd9cae01f3253adc0f0133cc8e6bebdb6f1481dfa0cd9cbfebff656f32f8",
|
|
"e999b2b8f1ee1e0b1adcc138d96d16e4fb65f2b422fc08d59a3b306b6a5c73d6",
|
|
"328ae013c7870ab29ffd93e1a1c01db6205229f261a91a04e73539c99861923f",
|
|
"b0604a447db9a0170a10a8d6cd2d68258783ae3061e5bfe5e26bcb6e76728c08",
|
|
],
|
|
"time": 1529848136,
|
|
"mediantime": 1529846560,
|
|
"nonce": 3615953854,
|
|
"bits": "17376f56",
|
|
"difficulty": "5077499034879.017",
|
|
"chainwork": "00000000000000000000000000000000000000000226420affb91a60111258b4",
|
|
"previousblockhash": "0000000000000000003147c5229962ca4e38714fc5aee8cf38670cf1a4ef297b",
|
|
"nextblockhash": "0000000000000000003382a0eef5b127c5d5ea270c85d9db3f3c605d32287cc5"
|
|
});*/
|
|
}
|
|
|
|
resolve(blocks);
|
|
});
|
|
}
|
|
|
|
function getBlockByHash(blockHash) {
|
|
return new Promise(function(resolve, reject) {
|
|
resolve({
|
|
"hash": blockHash,
|
|
"confirmations": 3,
|
|
"strippedsize": 56098,
|
|
"size": 65384,
|
|
"weight": 233678,
|
|
"height": 123456,
|
|
"version": 536870912,
|
|
"versionHex": "20000000",
|
|
"merkleroot": "567a3d773b07372179ad651edc02776f851020af69b7375a68ad89557dcbff5b",
|
|
"tx": [
|
|
"a97a04ebcaaca0ec80a6b2f295171eb8b082b4bc5446cd085444c304dca6f014",
|
|
"223fdd9cae01f3253adc0f0133cc8e6bebdb6f1481dfa0cd9cbfebff656f32f8",
|
|
"e999b2b8f1ee1e0b1adcc138d96d16e4fb65f2b422fc08d59a3b306b6a5c73d6",
|
|
"328ae013c7870ab29ffd93e1a1c01db6205229f261a91a04e73539c99861923f",
|
|
"b0604a447db9a0170a10a8d6cd2d68258783ae3061e5bfe5e26bcb6e76728c08",
|
|
],
|
|
"time": 1529848136,
|
|
"mediantime": 1529846560,
|
|
"nonce": 3615953854,
|
|
"bits": "17376f56",
|
|
"difficulty": "5077499034879.017",
|
|
"chainwork": "00000000000000000000000000000000000000000226420affb91a60111258b4",
|
|
"previousblockhash": "0000000000000000003147c5229962ca4e38714fc5aee8cf38670cf1a4ef297b",
|
|
"nextblockhash": "0000000000000000003382a0eef5b127c5d5ea270c85d9db3f3c605d32287cc5"
|
|
});
|
|
});
|
|
}
|
|
|
|
function getBlocksByHash(blockHashes) {
|
|
return new Promise(function(resolve, reject) {
|
|
var blocks = [];
|
|
for (var i = 0; i < blockHashes.length; i++) {
|
|
blocks.push({
|
|
"hash": blockHashes[i],
|
|
"confirmations": 3,
|
|
"strippedsize": 56098,
|
|
"size": 65384,
|
|
"weight": 233678,
|
|
"height": 123456,
|
|
"version": 536870912,
|
|
"versionHex": "20000000",
|
|
"merkleroot": "567a3d773b07372179ad651edc02776f851020af69b7375a68ad89557dcbff5b",
|
|
"tx": [
|
|
"a97a04ebcaaca0ec80a6b2f295171eb8b082b4bc5446cd085444c304dca6f014",
|
|
"223fdd9cae01f3253adc0f0133cc8e6bebdb6f1481dfa0cd9cbfebff656f32f8",
|
|
"e999b2b8f1ee1e0b1adcc138d96d16e4fb65f2b422fc08d59a3b306b6a5c73d6",
|
|
"328ae013c7870ab29ffd93e1a1c01db6205229f261a91a04e73539c99861923f",
|
|
"b0604a447db9a0170a10a8d6cd2d68258783ae3061e5bfe5e26bcb6e76728c08",
|
|
],
|
|
"time": 1529848136,
|
|
"mediantime": 1529846560,
|
|
"nonce": 3615953854,
|
|
"bits": "17376f56",
|
|
"difficulty": "5077499034879.017",
|
|
"chainwork": "00000000000000000000000000000000000000000226420affb91a60111258b4",
|
|
"previousblockhash": "0000000000000000003147c5229962ca4e38714fc5aee8cf38670cf1a4ef297b",
|
|
"nextblockhash": "0000000000000000003382a0eef5b127c5d5ea270c85d9db3f3c605d32287cc5"
|
|
});
|
|
}
|
|
|
|
resolve(blocks);
|
|
});
|
|
}
|
|
|
|
function getRawTransaction(txid) {
|
|
return new Promise(function(resolve, reject) {
|
|
resolve({
|
|
"txid": txid,
|
|
"hash": txid,
|
|
"version": 1,
|
|
"size": 237,
|
|
"vsize": 210,
|
|
"locktime": 0,
|
|
"vin": [
|
|
{
|
|
"coinbase": "03851208fabe6d6d7bf60491521f081d77fa018fb41a167dd447bf20e7d2487426c3cee65332cdb50100000000000000266508019fcf7fcb7b01002ffd0c2f736c7573682f",
|
|
"sequence": 0
|
|
}
|
|
],
|
|
"vout": [
|
|
{
|
|
"value": 12.51946416,
|
|
"n": 0,
|
|
"scriptPubKey": {
|
|
"asm": "OP_DUP OP_HASH160 7c154ed1dc59609e3d26abb2df2ea3d587cd8c41 OP_EQUALVERIFY OP_CHECKSIG",
|
|
"hex": "76a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac",
|
|
"reqSigs": 1,
|
|
"type": "pubkeyhash",
|
|
"addresses": [
|
|
"1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"value": 0,
|
|
"n": 1,
|
|
"scriptPubKey": {
|
|
"asm": "OP_RETURN aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b986281",
|
|
"hex": "6a24aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b986281",
|
|
"type": "nulldata"
|
|
}
|
|
}
|
|
],
|
|
"hex": "010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff4503851208fabe6d6d7bf60491521f081d77fa018fb41a167dd447bf20e7d2487426c3cee65332cdb50100000000000000266508019fcf7fcb7b01002ffd0c2f736c7573682f0000000002b02f9f4a000000001976a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac0000000000000000266a24aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b9862810120000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"blockhash": "000000000000000000001542470d8261b9e5a2c3c2be2e2ab292d1a4c8250b12",
|
|
"confirmations": 3,
|
|
"time": 1529848136,
|
|
"blocktime": 1529848136
|
|
});
|
|
});
|
|
}
|
|
|
|
function getAddress(address) {
|
|
return getRpcDataWithParams("validateaddress", address);
|
|
}
|
|
|
|
function getRawTransactions(txids) {
|
|
return new Promise(function(resolve, reject) {
|
|
var txs = [];
|
|
for (var i = 0; i < txids.length; i++) {
|
|
txs.push({
|
|
"txid": txid,
|
|
"hash": txid,
|
|
"version": 1,
|
|
"size": 237,
|
|
"vsize": 210,
|
|
"locktime": 0,
|
|
"vin": [
|
|
{
|
|
"coinbase": "03851208fabe6d6d7bf60491521f081d77fa018fb41a167dd447bf20e7d2487426c3cee65332cdb50100000000000000266508019fcf7fcb7b01002ffd0c2f736c7573682f",
|
|
"sequence": 0
|
|
}
|
|
],
|
|
"vout": [
|
|
{
|
|
"value": 12.51946416,
|
|
"n": 0,
|
|
"scriptPubKey": {
|
|
"asm": "OP_DUP OP_HASH160 7c154ed1dc59609e3d26abb2df2ea3d587cd8c41 OP_EQUALVERIFY OP_CHECKSIG",
|
|
"hex": "76a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac",
|
|
"reqSigs": 1,
|
|
"type": "pubkeyhash",
|
|
"addresses": [
|
|
"1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"value": 0,
|
|
"n": 1,
|
|
"scriptPubKey": {
|
|
"asm": "OP_RETURN aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b986281",
|
|
"hex": "6a24aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b986281",
|
|
"type": "nulldata"
|
|
}
|
|
}
|
|
],
|
|
"hex": "010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff4503851208fabe6d6d7bf60491521f081d77fa018fb41a167dd447bf20e7d2487426c3cee65332cdb50100000000000000266508019fcf7fcb7b01002ffd0c2f736c7573682f0000000002b02f9f4a000000001976a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac0000000000000000266a24aa21a9ed2b367f88dbcc39b83e89703d5425a9b51fa3d2d921b8f39a42bc54492b9862810120000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"blockhash": "000000000000000000001542470d8261b9e5a2c3c2be2e2ab292d1a4c8250b12",
|
|
"confirmations": 3,
|
|
"time": 1529848136,
|
|
"blocktime": 1529848136
|
|
});
|
|
}
|
|
|
|
resolve(txs);
|
|
});
|
|
}
|
|
|
|
function getMinerFromCoinbaseTx(tx) {
|
|
return null;
|
|
}
|
|
|
|
function getHelp() {
|
|
return new Promise(function(resolve, reject) {
|
|
reject("Not implemented");
|
|
});
|
|
}
|
|
|
|
function getRpcMethodHelp(methodName) {
|
|
return new Promise(function(resolve, reject) {
|
|
reject("Not implemented");
|
|
});
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
getBlockchainInfo: getBlockchainInfo,
|
|
getNetworkInfo: getNetworkInfo,
|
|
getNetTotals: getNetTotals,
|
|
getMempoolInfo: getMempoolInfo,
|
|
getBlockByHeight: getBlockByHeight,
|
|
getBlocksByHeight: getBlocksByHeight,
|
|
getBlockByHash: getBlockByHash,
|
|
getRawTransaction: getRawTransaction,
|
|
getRawTransactions: getRawTransactions,
|
|
getRawMempool: getRawMempool,
|
|
getUptimeSeconds: getUptimeSeconds,
|
|
getHelp: getHelp,
|
|
getRpcMethodHelp: getRpcMethodHelp,
|
|
getAddress: getAddress
|
|
};
|