UNPKG

test-triam-base-contract

Version:

Low level triam smart cotnract support library

119 lines (104 loc) 2.69 kB
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; };