41 lines
1012 B
JavaScript
41 lines
1012 B
JavaScript
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
|
|
})
|
|
|
|
function parseAMBMessage(message) {
|
|
message = strip0x(message)
|
|
|
|
const messageId = `0x${message.slice(0, 64)}`
|
|
const sender = `0x${message.slice(64, 104)}`
|
|
const executor = `0x${message.slice(104, 144)}`
|
|
const dataType = parseInt(message.slice(156, 158), 16)
|
|
|
|
return {
|
|
sender,
|
|
executor,
|
|
messageId,
|
|
dataType,
|
|
decodedDataType: decodeAMBDataType(dataType)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
addTxHashToData,
|
|
parseAMBMessage,
|
|
strip0x
|
|
}
|