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