test-triam-base-contract
Version:
Low level triam smart cotnract support library
119 lines (104 loc) • 2.69 kB
JavaScript
export function State () {
const ledSeq = process.argv[6];
const sender = process.argv[5];
const currentState = process.argv[4];
let param = process.argv[3];
let functionName = process.argv[2];
let argvFileName = process.argv[1].split ('/');
let contractKey = argvFileName[argvFileName.length - 1].replace ('.js', '');
let input;
if (functionName == "fallback") {
let tmp = param.split ('*');
let assetcode = new Buffer (tmp[2], 'hex');
input = {
assetCode: assetcode.toString ('utf8'),
assetIssuer: tmp[3],
amount: tmp[1],
sender: tmp[0]
}
} else {
let buf = Buffer.from (param, 'hex');
let ab = toArrayBuffer (buf);
let params = ab2str (ab);
input = JSON.parse (params);
}
return {
currentState: currentState,
sender: sender,
ledSeq: ledSeq,
param: input,
functionName: functionName,
contractKey: contractKey
};
}
/*
"error": 0,
"newState": testbalance,
"ContrOps": "",
"contract": ""
*/
export function OutputFormat (_error, _newState, _ContrOps, _contract, _message) {
return {
"error": _error,
"newState": _newState,
"ContrOps": _ContrOps,
"contract": _contract,
"message": _message
}
}
export function ErrorHandle (_error, _message, _contract) {
throw new Error ()
}
export function ReturnData (_data) {
let data = JSON.stringify (_data);
console.log (data);
}
/**
* @return {string}
*/
export function Encode (_data) {
try {
let ab = str2ab (_data);
let buf = toBuffer (ab);
return buf.toString ('hex');
} catch (e) {
throw new Error ("Encode error: " + e.message);
}
}
export function Decode (_data) {
try {
let _buf = Buffer.from (_data, 'hex');
let _ab = toArrayBuffer (_buf);
let _state = ab2str (_ab);
return JSON.parse (_state);
} catch (e) {
throw new Error ("Decode error: " + e.message);
}
}
const ab2str = function (buf) {
return String.fromCharCode.apply (null, new Uint16Array (buf));
};
const str2ab = function (str) {
let buf = new ArrayBuffer (str.length * 2); // 2 bytes for each char
let bufView = new Uint16Array (buf);
for (let i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt (i);
}
return buf;
};
const toArrayBuffer = function (buf) {
let ab = new ArrayBuffer (buf.length);
let view = new Uint8Array (ab);
for (let i = 0; i < buf.length; ++i) {
view[i] = buf[i];
}
return ab;
};
const toBuffer = function (ab) {
let buf = new Buffer (ab.byteLength);
let view = new Uint8Array (ab);
for (let i = 0; i < buf.length; ++i) {
buf[i] = view[i];
}
return buf;
};