-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathutils.js
77 lines (67 loc) · 2.08 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const network = require('@stacks/network');
require('dotenv').config();
const env = process.env.NETWORK_ENV;
const request = require('request-promise');
async function processing(broadcastedResult, tx, count) {
const url = `${resolveUrl()}/extended/v1/tx/${tx}`;
var result = await fetch(url);
var value = await result.json();
console.log(count);
if (value.tx_status === "success") {
console.log(`transaction ${tx} processed`);
console.log(value);
return true;
}
if (value.tx_status === "pending") {
console.log(value);
} else if (count === 3) {
console.log(value, broadcastedResult);
}
if (count > 20) {
console.log("failed after 10 tries");
console.log(value);
return false;
}
setTimeout(function() {
return processing(broadcastedResult, tx, count + 1);
}, 3000);
}
async function getNonce(address) {
const url = `${resolveUrl()}/v2/accounts/${address}?proof=0`;
const result = await request(url, { json: true });
return result.nonce;
}
function resolveUrl() {
if (env === 'mocknet') {
return `http://localhost:${process.env.LOCAL_STACKS_API_PORT}`;
} else if (env === 'testnet') {
return 'https://stacks-node-api.testnet.stacks.co';
} else if (env === 'regtest') {
return 'https://stacks-node-api.regtest.stacks.co';
} else {
// return 'https://api.hiro.so';
return 'https://stacks-blockchain-lb.alexlab.co';
}
}
function resolveNetwork() {
if (env === 'mainnet') {
const stacksNetwork = new network.StacksMainnet();
stacksNetwork.coreApiUrl = resolveUrl();
return stacksNetwork;
} else {
const stacksNetwork = new network.StacksTestnet();
stacksNetwork.coreApiUrl = resolveUrl();
return stacksNetwork;
}
}
async function getBlockHeight() {
const url = `${resolveUrl()}/v2/info`;
const result = await request(url, { json: true });
const currentBlock = result['stacks_tip_height'];
return currentBlock;
}
exports.resolveUrl = resolveUrl;
exports.resolveNetwork = resolveNetwork;
exports.processing = processing;
exports.getNonce = getNonce;
exports.getBlockHeight = getBlockHeight;