@neuraiproject/neurai-jswallet
v0.7.25
Published
Neurai JavaScript wallet library
Downloads
1
Readme
neurai-jswallet
Neurai wallet library for JavaScript. By default it interacts with the Neurai blockchain using public RPC services from https://rpc.ting.finance/ for both testnet and mainnet. You are free to use any RPC-service you like, including your own. See section An Internal Link to a Section Heading for more info
EXPERIMENTAL.
This lib needs a lot of testing before being used in production. Only use on mainnet if you "play around". This lib supports EVR as well (see section at the end)
Example code
To run these code examples
- Create an empty npm project
- Install
@neuraiproject/neurai-jswallet
- Set "type" to "module" in your package.json
- Create a .mjs file called
index.mjs
Minimalistic example
import NeuraiWallet from "@neuraiproject/neurai-jswallet";
NeuraiWallet.createInstance({
mnemonic: "horse sort develop lab chest talk gift damp session sun festival squirrel",
network: "xna-test"
})
.then(wallet => wallet.getBalance())
.then(console.log);
Configure to use with your local node
In this example we run a local node in testnet mode, and RPC port is set to 8888
const wallet = await NeuraiWallet.createInstance({
mnemonic,
network: "xna-test",
rpc_password: "mypassword",
rpc_username: "myuser",
rpc_url: "http://localhost:8888",
});
Send XNA and ASSETS
//index.mjs very important that file extension is .mjs
import NeuraiWallet from "@neuraiproject/neurai-jswallet";
//This wallet belongs to account "Crazy Cat" on https://testnet.ting.finance/signin/
const options = {
mnemonic:
"mesh beef tuition ensure apart picture rabbit tomato ancient someone alter embrace",
network: "xna-test",
};
const wallet = await NeuraiWallet.createInstance(options);
const addy = await wallet.getReceiveAddress();
console.log("My receive address", addy);
//Send 100 XNA to Barry Crump on https://testnet.ting.finance/
await wallet.send({
//Send 100 XNA
toAddress: "mhBKhj5FxzBu1h8U6pSB16pwmjP7xo4ehG",
amount: 100,
assetName:"XNA",
});
//Send 313 BUTTER tokens to Barry Crump on https://testnet.ting.finance/
const transactionId = await wallet.send({
assetName: "BUTTER",
amount: 313,
toAddress: "mhBKhj5FxzBu1h8U6pSB16pwmjP7xo4ehG",
});
console.log("Sending", transactionId);
Evrmore
To support EVR instead of XNA Create an instance of wallet and set baseCurrency
wallet.setBaseCurrency("EVR");
API
When you create your instance of a wallet you can specify some stuff.
You can set network to be something else than XNA, for example EVR.
You can specify your own RPC node URL and username/password.
export interface IOptions {
mnemonic: string;
network?: ChainType; (that is "xna" | "xna-test" | "evr" | "evr-test")
rpc_username?: string;
rpc_password?: string;
rpc_url?: string;
}
Check the TypeScript definitions for all the details
Run your own blockchain node
If you want to run your own internet exposed Node, checkout our RPC proxy. With RPC proxy and Cloudlare you can get a secure endpoint like https://rpc.mydomain.com/rpc checkout
- https://github.com/neuraiproject/neurai-rpc-proxy
- https://www.cloudflare.com/products/tunnel/
Advanced - pure RPC
You have access to the underlaying RPC function, wallet.rpc. See example
import NeuraiWallet from "@neuraiproject/neurai-jswallet";
async function main(){
const wallet = await NeuraiWallet.createInstance({
mnemonic: "horse sort develop lab chest talk gift damp session sun festival squirrel",
network: "xna-test",
});
const blockhash = await wallet.rpc("getbestblockhash", []);
const block = await wallet.rpc("getblock", [blockhash]);
console.log(block);
}
main();