scprime.js
v0.1.0
Published
Node wrapper for spd of the ScPrime network
Downloads
5
Maintainers
Readme
Nodejs Wrapper
A Highly Efficient Decentralized Storage Network
This is a Nodejs wrapper for SCP. Use it in your apps to easily interact with the SCP storage network via function calls instead of manual http requests.
Prerequisites
Installation
npm install scprime.js
Example Usage
import { connect } from "scprime.js";
// Using promises...
// connect to an already running SCP daemon on localhost:4280 and print its version
connect("localhost:4280")
.then((spd) => {
spd.call("/daemon/version").then((version) => console.log(version));
})
.catch((err) => {
console.error(err);
});
// Or ES7 async/await
async function getVersion() {
try {
const spd = await connect("localhost:4280");
const version = await spd.call("/daemon/version");
console.log("SPD has version: " + version);
} catch (e) {
console.error(e);
}
}
You can also forgo using connect
and use call
directly by providing an API address as the first parameter:
import { call } from "scprime.js";
async function getVersion(address) {
try {
const version = await call(address, "/daemon/version");
return version;
} catch (e) {
console.error("error getting " + address + " version: " + e.toString());
}
}
console.log(getVersion("10.0.0.1:4280"));
scprime.js
can also launch a spd instance given a path on disk to the spd
binary. launch
takes an object defining the flags to use as its second argument, and returns the child_process
object. You are responsible for keeping track of the state of this child_process
object, and catching any errors launch
may throw.
import { launch } from "scprime.js";
try {
// Flags are passed in as an object in the second argument to `launch`.
// if no flags are passed, the default flags will be used.
const spdProcess = launch("/path/to/your/spd", {
modules: "cghmrtw",
profile: true,
});
// spdProcess is a ChildProcess class. See https://nodejs.org/api/child_process.html#child_process_class_childprocess for more information on what you can do with it.
spdProcess.on("error", (err) =>
console.log("spd encountered an error " + err)
);
} catch (e) {
console.error("error launching spd: " + e.toString());
}
The call object passed as the first argument into call() are funneled directly
into the request
library, so checkout
their options to
see how to access the full functionality of SCP's
API
Spd.call({
url: "/consensus/block",
method: "GET",
qs: {
height: 0,
},
});
Should log something like:
null { block:
{ parentid: '0000000000000000000000000000000000000000000000000000000000000000',
nonce: [ 0, 0, 0, 0, 0, 0, 0, 0 ],
timestamp: 1433600000,
minerpayouts: null,
transactions: [ [Object] ] } }