Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ref!(v18): use separate base urls for insight sub-services #49

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions bin/_qr-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ async function save(filepath, data, opts) {

//@ts-ignore
Qr.save = save;

module.exports = Qr;
106 changes: 51 additions & 55 deletions bin/crowdnode.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let Path = require("path");
let Cipher = require("./_cipher.js");
let CrowdNode = require("../crowdnode.js");
let Dash = require("../dashapi.js");
let Insight = require("dashsight");
let Dashsight = require("dashsight");
let Prompt = require("./_prompt.js");
let Qr = require("./_qr-node.js");
let Ws = require("dashsight/ws");
Expand Down Expand Up @@ -137,6 +137,14 @@ function showHelp() {

let cmds = {};

let dashsightBaseUrl =
process.env.DASHSIGHT_BASE_URL ||
"https://dashsight.dashincubator.dev/insight-api";
let dashsocketBaseUrl =
process.env.DASHSOCKET_BASE_URL || "https://insight.dash.org/socket.io";
let insightBaseUrl =
process.env.INSIGHT_BASE_URL || "https://insight.dash.org/insight-api";

async function main() {
/*jshint maxcomplexity:40 */
/*jshint maxstatements:500 */
Expand Down Expand Up @@ -180,17 +188,18 @@ async function main() {
);
defaultAddr = defaultAddr.trim();

let insightBaseUrl =
process.env.INSIGHT_BASE_URL || "https://insight.dash.org";
let insightApi = Insight.create({ baseUrl: insightBaseUrl });
let dashApi = Dash.create({ insightApi: insightApi });
let dashsightApi = Dashsight.create({
dashsightBaseUrl: dashsightBaseUrl,
dashsocketBaseUrl: dashsocketBaseUrl,
insightBaseUrl: insightBaseUrl,
});
let dashApi = Dash.create({ insightApi: dashsightApi });

if ("stake" === subcommand) {
await stakeDash(
{
dashApi,
insightApi,
insightBaseUrl,
insightApi: dashsightApi,
defaultAddr,
forceGenerate,
noReserve,
Expand Down Expand Up @@ -290,7 +299,12 @@ async function main() {
// helper for debugging
if ("transfer" === subcommand) {
await transferBalance(
{ dashApi, defaultAddr, forceConfirm, insightBaseUrl, insightApi },
{
dashApi,
defaultAddr,
forceConfirm,
insightApi: dashsightApi,
},
args,
);
process.exit(0);
Expand All @@ -308,7 +322,7 @@ async function main() {

let [addr] = await mustGetAddr({ defaultAddr }, args);

await initCrowdNode(insightBaseUrl);
await initCrowdNode();
// ex: http <rpc>(<pub>, ...)
args.unshift(addr);
let hasRpc = rpc in CrowdNode.http;
Expand Down Expand Up @@ -339,7 +353,7 @@ async function main() {

// keeping rm for backwards compat
if ("rm" === subcommand || "delete" === subcommand) {
await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let [addr, filepath] = await mustGetAddr({ defaultAddr }, args);
await removeKey({ addr, dashApi, filepath, insightBaseUrl }, args);
process.exit(0);
Expand Down Expand Up @@ -377,10 +391,7 @@ async function main() {
}

if ("deposit" === subcommand) {
await depositDash(
{ dashApi, defaultAddr, insightBaseUrl, noReserve },
args,
);
await depositDash({ dashApi, defaultAddr, noReserve }, args);
process.exit(0);
return;
}
Expand Down Expand Up @@ -416,14 +427,7 @@ async function main() {
* @param {Array<String>} args
*/
async function stakeDash(
{
dashApi,
defaultAddr,
forceGenerate,
insightApi,
insightBaseUrl,
noReserve,
},
{ dashApi, defaultAddr, forceGenerate, insightApi, noReserve },
args,
) {
let err = await Fs.access(args[0]).catch(Object);
Expand All @@ -446,6 +450,8 @@ async function stakeDash(
console.info("Checking CrowdNode account... ");
await CrowdNode.init({
baseUrl: "https://app.crowdnode.io",
dashsightBaseUrl,
dashsocketBaseUrl,
insightBaseUrl,
});
let hotwallet = CrowdNode.main.hotwallet;
Expand Down Expand Up @@ -480,7 +486,6 @@ async function stakeDash(
addr,
effectiveDash,
effectiveDuff,
insightBaseUrl,
});
}

Expand All @@ -492,7 +497,7 @@ async function stakeDash(
}

await depositDash(
{ dashApi, defaultAddr: addr, insightBaseUrl, noReserve },
{ dashApi, defaultAddr: addr, noReserve },
[addr].concat(args),
);

Expand All @@ -514,16 +519,15 @@ async function initKeystore({ defaultAddr }) {
return defaultAddr || wifnames[0];
}

/**
* @param {String} insightBaseUrl
*/
async function initCrowdNode(insightBaseUrl) {
if (CrowdNode.main.hotwallet) {
async function initCrowdNode() {
if (CrowdNode._initialized) {
return;
}
process.stdout.write("Checking CrowdNode API... ");
await CrowdNode.init({
baseUrl: "https://app.crowdnode.io",
dashsightBaseUrl,
dashsocketBaseUrl,
insightBaseUrl,
});
console.info(`(hotwallet ${CrowdNode.main.hotwallet})`);
Expand Down Expand Up @@ -1529,7 +1533,7 @@ async function removeKey({ addr, dashApi, filepath, insightBaseUrl }, args) {
return;
}

await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let crowdNodeBalance = await CrowdNode.http.GetBalance(addr);
if (!crowdNodeBalance) {
// may be janky if not registered
Expand Down Expand Up @@ -1659,12 +1663,7 @@ function roundDuff(effectiveDuff, numDigits) {
* @param {Number} opts.effectiveDuff
* @param {String} opts.insightBaseUrl
*/
async function plainLoadAddr({
addr,
effectiveDash,
effectiveDuff,
insightBaseUrl,
}) {
async function plainLoadAddr({ addr, effectiveDash, effectiveDuff }) {
console.info(``);
showQr(addr, effectiveDuff);
console.info(``);
Expand All @@ -1678,7 +1677,7 @@ async function plainLoadAddr({
console.info(``);
console.info(`(waiting...)`);
console.info(``);
let payment = await Ws.waitForVout(insightBaseUrl, addr, 0);
let payment = await Ws.waitForVout(dashsocketBaseUrl, addr, 0);
console.info(`Received ${payment.satoshis}`);
}

Expand Down Expand Up @@ -1707,7 +1706,7 @@ async function getBalance({ dashApi, defaultAddr }, args) {
*/
// ex: node ./bin/crowdnode.js transfer Xxxxx 'pub' 0.01
async function transferBalance(
{ dashApi, defaultAddr, forceConfirm, insightBaseUrl, insightApi },
{ dashApi, defaultAddr, forceConfirm, insightApi },
args,
) {
/** @type Array<String> */
Expand Down Expand Up @@ -1764,7 +1763,7 @@ async function transferBalance(
}
process.exit(1);
}, 30 * 1000);
await Ws.waitForVout(insightBaseUrl, newAddr, 0);
await Ws.waitForVout(dashsocketBaseUrl, newAddr, 0);
console.info(`Accepted!`);
return;
}
Expand All @@ -1778,7 +1777,7 @@ async function transferBalance(
*/
async function getStatus({ dashApi, defaultAddr, insightBaseUrl }, args) {
let [addr] = await mustGetAddr({ defaultAddr }, args);
await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let hotwallet = CrowdNode.main.hotwallet;
let state = await getCrowdNodeStatus({ addr, hotwallet });

Expand Down Expand Up @@ -1816,7 +1815,7 @@ async function getStatus({ dashApi, defaultAddr, insightBaseUrl }, args) {
*/
async function sendSignup({ dashApi, defaultAddr, insightBaseUrl }, args) {
let [addr, name] = await mustGetAddr({ defaultAddr }, args);
await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let hotwallet = CrowdNode.main.hotwallet;
let state = await getCrowdNodeStatus({ addr, hotwallet });
let balanceInfo = await dashApi.getInstantBalance(addr);
Expand All @@ -1831,7 +1830,7 @@ async function sendSignup({ dashApi, defaultAddr, insightBaseUrl }, args) {

let hasEnough = balanceInfo.balanceSat > signupOnly + feeEstimate;
if (!hasEnough) {
await collectSignupFees(insightBaseUrl, addr);
await collectSignupFees(addr);
}

let wif = await maybeReadKeyPaths(name, { wif: true });
Expand All @@ -1853,7 +1852,7 @@ async function sendSignup({ dashApi, defaultAddr, insightBaseUrl }, args) {
async function acceptTerms({ dashApi, defaultAddr, insightBaseUrl }, args) {
let [addr, name] = await mustGetAddr({ defaultAddr }, args);

await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let hotwallet = CrowdNode.main.hotwallet;
let state = await getCrowdNodeStatus({ addr, hotwallet });
let balanceInfo = await dashApi.getInstantBalance(addr);
Expand All @@ -1875,7 +1874,7 @@ async function acceptTerms({ dashApi, defaultAddr, insightBaseUrl }, args) {
}
let hasEnough = balanceInfo.balanceSat > acceptOnly + feeEstimate;
if (!hasEnough) {
await collectSignupFees(insightBaseUrl, addr);
await collectSignupFees(addr);
}

let wif = await maybeReadKeyPaths(name, { wif: true });
Expand All @@ -1895,12 +1894,9 @@ async function acceptTerms({ dashApi, defaultAddr, insightBaseUrl }, args) {
* @param {Boolean} opts.noReserve
* @param {Array<String>} args
*/
async function depositDash(
{ dashApi, defaultAddr, insightBaseUrl, noReserve },
args,
) {
async function depositDash({ dashApi, defaultAddr, noReserve }, args) {
let [addr, name] = await mustGetAddr({ defaultAddr }, args);
await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let hotwallet = CrowdNode.main.hotwallet;
let state = await getCrowdNodeStatus({ addr, hotwallet });
let balanceInfo = await dashApi.getInstantBalance(addr);
Expand Down Expand Up @@ -1939,7 +1935,7 @@ async function depositDash(
if (desiredAmountDuff) {
ask = desiredAmountDuff + reserve + -balanceInfo.balanceSat;
}
await collectDeposit(insightBaseUrl, addr, ask);
await collectDeposit(addr, ask);
balanceInfo = await dashApi.getInstantBalance(addr);
if (balanceInfo.balanceSat < needed) {
let balanceDash = toDash(balanceInfo.balanceSat);
Expand Down Expand Up @@ -1976,7 +1972,7 @@ async function depositDash(
*/
async function withdrawDash({ dashApi, defaultAddr, insightBaseUrl }, args) {
let [addr] = await mustGetAddr({ defaultAddr }, args);
await initCrowdNode(insightBaseUrl);
await initCrowdNode();
let hotwallet = CrowdNode.main.hotwallet;
let state = await getCrowdNodeStatus({ addr, hotwallet });

Expand Down Expand Up @@ -2050,7 +2046,7 @@ async function wifFileToAddr(name) {
* @param {String} insightBaseUrl
* @param {String} addr
*/
async function collectSignupFees(insightBaseUrl, addr) {
async function collectSignupFees(addr) {
console.info(``);
showQr(addr);

Expand All @@ -2068,7 +2064,7 @@ async function collectSignupFees(insightBaseUrl, addr) {
console.info("");
console.info("(waiting...)");
console.info("");
let payment = await Ws.waitForVout(insightBaseUrl, addr, 0);
let payment = await Ws.waitForVout(dashsocketBaseUrl, addr, 0);
console.info(`Received ${payment.satoshis}`);
}

Expand All @@ -2077,7 +2073,7 @@ async function collectSignupFees(insightBaseUrl, addr) {
* @param {String} addr
* @param {Number} duffAmount
*/
async function collectDeposit(insightBaseUrl, addr, duffAmount) {
async function collectDeposit(addr, duffAmount) {
console.info(``);
showQr(addr, duffAmount);

Expand All @@ -2097,7 +2093,7 @@ async function collectDeposit(insightBaseUrl, addr, duffAmount) {
console.info("");
console.info("(waiting...)");
console.info("");
let payment = await Ws.waitForVout(insightBaseUrl, addr, 0);
let payment = await Ws.waitForVout(dashsocketBaseUrl, addr, 0);
console.info(`Received ${payment.satoshis}`);
}

Expand Down
Loading