0.5.0 • Published 4 years ago

scdo.js v0.5.0

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

ScdoJS

ScdoJS is a generic scripting API library for Scdo's blockchain.

Import

NPM

npm install scdoproject.js@0.5.0

Due to problems with the keccak library, some errors will occur during installation, but if Keccak bindings compilation fail. Pure JS implementation will be used. occurs, it doesn't matter, the package is normal. Follow-up will consider blocking this error.

Browser

Alternatively, if you are in the client/browser you can import scdo_browserify.js(github.com/scdoproject/scdo.js/browserify/scdo_browserify.js) directly , then you can use ScdoJS.

This file is generated using the command and runs browserify -r ./src/scdo.js:scdo.js > ./browserify/scdo_browserify.js in the root folder.

<script src="./browserify/scdo_browserify.js"></script>
<script>
const scdojs = require('scdo.js');

const client = new scdojs().client;
client.getInfo().then(data => {
  console.log("data")
  console.log(data)
}).catch(err => {
  console.log("err")
  console.log(err)
})
</script>

Meteor

wangff:scdojs@0.1.5 Or meteor add wangff:scdojs@0.1.5

Also, when you import scdo.js /scdo_browerify.js, the global variable Scdo is set, so you can use it directly, just like:

const client = new Scdo().client;

client.getInfo().then(data => {
  console.log("data")
  console.log(data)
}).catch(err => {
  console.log("err")
  console.log(err)
})

Example

Async Call

These functions will return a Promise object, you can use then to process the result and use catch to handle the error.

const scdojs = require('scdo.js');

const client = new scdojs();
// async - Call mode 1
let sendR = client.send("getInfo");
sendR.then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

// async - Call mode 2
let execR = client.exec("getInfo");
execR.then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

// async - Call mode 3
client.getInfo().then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

Sync Call

const scdojs = require('scdo.js');

const client = new scdojs();
// sync - Call mode 1
let info = client.sendSync("getInfo");
console.log(info);

// sync - Call mode 2
let execI = client.execSync("getInfo");
console.log(execI);

Options

You can pass options to the initialization function or use the default options.

const scdojs = require('scdo.js');

function scdojs(host, headers, user, password, timeout){
  ...
};

Available options and default values:

  • host(String) : The communication protocol plus the domain name or IP address plus the requested server port. Default: http://localhost:8037.
  • headers(Object) : An object containing request headers, the format must be {'name':'', 'vaule':''}, {'name':'', 'vaule':''}....
  • user(String) : Basic authentication i.e. 'user:password' to compute an Authorization header. Not used.
  • password(String) : Basic authentication i.e. 'user:password' to compute an Authorization header. Not used.
  • timeout(Number) : timeout A number specifying the socket timeout in milliseconds. This will set the timeout before the socket is connected. Default: 30000.

Methods

The Scdo API is supported as direct methods. Use camelcase and lowercase first letter.

client.getInfo().then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

.send(command string, ...arguments..., callback function)

Sends the given command with optional arguments. Function callback defaults to console.log. All of the API commands are supported in camelcase and lowercase first letter.

client.send("getBlock", "", 1, false).then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

.sendSync(command string, ...arguments...)

Sends the given command with optional arguments. This function will return a Promise object, and you can use to handle the result. All of the API commands are supported in camelcase and lowercase first letter.

var result = client.sendSync("getInfo")
console.log("sendSync"+JSON.stringify(result))

.exec(command string, ...arguments..., callback function)

Executes the given command with optional arguments. Function callback defaults to console.log. All of the API commands are supported in camelcase and lowercase first letter.

client.exec("getInfo");

client.exec("getInfo").then(data => {
    console.log("data")
    console.log(data)
}).catch(err => {
    console.log("err")
    console.log(err)
})

.execSync(command string, ...arguments...)

Executes the given command with optional arguments. This function will return a Promise object, and you can use to handle the result. All of the API commands are supported in camelcase and lowercase first letter.

var result = client.execSync("getInfo")
console.log("execSync"+JSON.stringify(result))

.generateTx(privatekey Hex String, rawTx JSON String) return tx Object

Generate transaction and sign, the rawTx must be in the example format, otherwise an error will occur.

var privatekey = "0x24ce9cadcc9207c94296db166ab7a0fa686f2a6d29f7ea54fe8c22271c40812e"
var rawTx = {
  "From":"0xa61e5b0b30e91c4ae10dda3a6ddeb9d9d35ebfe1",
  "To":"0x0000000000000000000000000000000000000000",
  "Amount":0,
  "AccountNonce":123,
  "GasPrice":1,
  "GasLimit":3000000,
  "Timestamp":0,
  "Payload":""
}

tx = generateTx(privatekey, rawTx)

.filterBlockTx(height Number, address Hex String, flag Number) return txs Array - tx JSON

Filtering transactions for a specific address based on block height, an error occurs if the block height does not exist. If the height is -1, it will filter the current block. When the flag is 1, the transaction from equal to the address is filtered in the block. When the flag is 2, the transaction to equal to the address is filtered in the block.

var txs = client.filterBlockTx(-1, "0x4c10f2cd2159bb432094e3be7e17904c2b4aeb21", "2")
console.log("sync:"+JSON.stringify(txs))

Properties

.wallet

This object is used to create the Scdo account and export/import the keystore file.

  • shardnum(Number) : The Scdo shard number. Default: 2.
  • accounts(Array) : The accountsi means the wallet contains the accounts of the shard i+1. Default: [[],[]].

Method

.create() return keypair JSON String, contains 'publickey' and 'privatekey'

Create a Scdo account for the random shard.

let keypair = client.wallet.create()
console.log(keypair)
.createbyshard(shard Number) return keypair JSON String, contains 'publickey' and 'privatekey' Hex String

Create a Scdo account for the specified shard.

let keypair = client.wallet.createbyshard(2)
console.log(keypair)
.getshardnum(publickey Hex String) return shard Number

Calculate the shard of the publickey.

let keypair = client.wallet.create()
let shard = client.wallet.getshardnum(keypair.publickey)
console.log(shard)