diff --git a/bcutils.js b/bcutils.js index ed548f2..c4be283 100644 --- a/bcutils.js +++ b/bcutils.js @@ -10,7 +10,7 @@ const BC_MAX_TOKEN_IDX = 99999; const BC_TRANSID_MAX_PARAMS_NUM = 3; const BC_TRANSID_MAX_SEQID = 9999999; -const BC_TRANS_FUNC_ACTIVATE = 11; +const BC_TRANS_FUNC_ACTIVATE = 1; const BC_EPOCH = 1643212800; @@ -76,7 +76,7 @@ function isSameAddress(a, b) { function genTransId(funcId, time, seqId, params) { let transId = - utils.pad(funcId, 2) + + utils.pad(funcId, 1) + utils.pad(toBcTime(time), 9) + utils.pad(seqId % BC_TRANSID_MAX_SEQID, 7); params.forEach @@ -92,7 +92,21 @@ function genTransId(funcId, time, seqId, params) { } function isValidTransId(transId) { - return utils.isPureNumberStr(transId.toString()) && transId.toString().length == 78; + return utils.isPureNumberStr(transId.toString()) && + (transId.toString().length == 77 || transId.toString().length == 78); +} + +function extractParamsFromTransId(transId) { + if (isValidTransId(transId)) { + return null; + } + const transIdStr = transId.toString(); + const params = []; + for (let i = 0; i < 3; ++i) { + const param = transId.substr(transIdStr.length - 20 * i , 20); + params.push(param); + } + return params; } exports.BC_BASE_GAME_ID = BC_BASE_GAME_ID; @@ -120,3 +134,4 @@ exports.isValidTokenId = isValidTokenId; exports.isSameAddress = isSameAddress; exports.genTransId = genTransId; exports.isValidTransId = isValidTransId; +exports.extractParamsFromTransId = extractParamsFromTransId; diff --git a/utils.js b/utils.js index 220479f..0e611e4 100644 --- a/utils.js +++ b/utils.js @@ -298,6 +298,12 @@ function mapToObject(mapObj) { return result; } +function arrayToStrings(arr) { + for (let i = 0; i < arr.length; ++i) { + arr[i] = arr[i].toString(); + } +} + async function serial(obj, cb) { let i = 0; const arr = obj instanceof Map ? mapToArray(obj) : obj; @@ -306,6 +312,16 @@ async function serial(obj, cb) { } } +function removeLeadZero(data) { + const dataStr = data.toString(); + for (let i = 0; i < dataStr.length; ++i) { + if (dataStr[i] != '0') { + return dataStr.substr(i); + } + } + return dataStr; +} + exports.rspErr = rspErr; exports.rspOk = rspOk; exports.rspData = rspData; @@ -344,3 +360,5 @@ exports.isPureNumberStr = isPureNumberStr; exports.serial = serial; exports.mapToArray = mapToArray; exports.mapToObject = mapToObject; +exports.arrayToStrings = arrayToStrings; +exports.removeLeadZero = removeLeadZero;