tokenbridge/commons/message.js

41 lines
1012 B
JavaScript
Raw Normal View History

2019-10-21 15:57:28 +03:00
function strip0x(input) {
return input.replace(/^0x/, '')
}
function addTxHashToData({ encodedData, transactionHash }) {
return encodedData.slice(0, 2) + strip0x(transactionHash) + encodedData.slice(2)
}
/**
* Decodes the datatype byte from the AMB message.
* First (the most significant bit) denotes if the message should be forwarded to the manual lane.
* @param dataType: number datatype of the received AMB message.
* @return {{manualLane: boolean}}
*/
const decodeAMBDataType = dataType => ({
manualLane: (dataType & 128) === 128
})
2019-10-21 15:57:28 +03:00
function parseAMBMessage(message) {
message = strip0x(message)
const messageId = `0x${message.slice(0, 64)}`
2019-10-21 15:57:28 +03:00
const sender = `0x${message.slice(64, 104)}`
const executor = `0x${message.slice(104, 144)}`
const dataType = parseInt(message.slice(156, 158), 16)
2019-10-21 15:57:28 +03:00
return {
sender,
executor,
messageId,
dataType,
decodedDataType: decodeAMBDataType(dataType)
2019-10-21 15:57:28 +03:00
}
}
module.exports = {
addTxHashToData,
parseAMBMessage,
strip0x
}