eToken
@@ -396,7 +396,7 @@
exports[`Wallet without BCH balance 1`] = `
Array [
XEC
eToken
diff --git a/web/cashtab/src/hooks/__mocks__/mockParsedTxs.js b/web/cashtab/src/hooks/__mocks__/mockParsedTxs.js
--- a/web/cashtab/src/hooks/__mocks__/mockParsedTxs.js
+++ b/web/cashtab/src/hooks/__mocks__/mockParsedTxs.js
@@ -9,6 +9,7 @@
'bitcoincash:qphpmfj0qn7znklqhrfn5dq7qh36l3vxavu346vqcl',
height: 674993,
outgoingTx: true,
+ isCashtabMessage: false,
opReturnMessage: '',
tokenTx: false,
txid: '089f2188d5771a7de0589def2b8d6c1a1f33f45b6de26d9a0ef32782f019ecf1',
@@ -25,6 +26,7 @@
'bitcoincash:qpmytrdsakt0axrrlswvaj069nat3p9s7ct4lsf8k9',
height: 672077,
outgoingTx: false,
+ isCashtabMessage: false,
opReturnMessage: '',
tokenTx: false,
txid: '42d39fbe068a40fe691f987b22fdf04b80f94d71d2fec20a58125e7b1a06d2a9',
@@ -41,6 +43,7 @@
'bitcoincash:qzj5zu6fgg8v2we82gh76xnrk9njcregluzgaztm45',
height: 674444,
outgoingTx: true,
+ isCashtabMessage: false,
opReturnMessage: '',
tokenTx: true,
txid: 'ffe3a7500dbcc98021ad581c98d9947054d1950a7f3416664715066d3d20ad72',
@@ -56,6 +59,7 @@
'bitcoincash:qpmytrdsakt0axrrlswvaj069nat3p9s7ct4lsf8k9',
height: 674143,
outgoingTx: false,
+ isCashtabMessage: false,
opReturnMessage: '',
tokenTx: true,
txid: '618d0dd8c0c5fa5a34c6515c865dd72bb76f8311cd6ee9aef153bab20dabc0e6',
@@ -71,6 +75,7 @@
height: undefined,
opReturnMessage: new Buffer('testing message 12'),
outgoingTx: false,
+ isCashtabMessage: false,
tokenTx: false,
txid: 'dd35690b0cefd24dcc08acba8694ecd49293f365a81372cb66c8f1c1291d97c5',
},
@@ -85,6 +90,7 @@
height: undefined,
opReturnMessage: new Buffer('testing message 13'),
outgoingTx: false,
+ isCashtabMessage: true,
tokenTx: false,
txid: '5adc33b5c0509b31c6da359177b19467c443bdc4dd37c283c0f87244c0ad63af',
},
diff --git a/web/cashtab/src/hooks/__mocks__/mockTxDataWithPassthrough.js b/web/cashtab/src/hooks/__mocks__/mockTxDataWithPassthrough.js
--- a/web/cashtab/src/hooks/__mocks__/mockTxDataWithPassthrough.js
+++ b/web/cashtab/src/hooks/__mocks__/mockTxDataWithPassthrough.js
@@ -840,7 +840,7 @@
value: 0,
n: 0,
scriptPubKey: {
- asm: 'OP_RETURN 621 74657374696e67206d657373616765203133',
+ asm: 'OP_RETURN 621 3158065 74657374696e67206d657373616765203133',
hex: '6a026d021274657374696e67206d657373616765203133',
type: 'nulldata',
},
diff --git a/web/cashtab/src/hooks/useBCH.js b/web/cashtab/src/hooks/useBCH.js
--- a/web/cashtab/src/hooks/useBCH.js
+++ b/web/cashtab/src/hooks/useBCH.js
@@ -124,6 +124,7 @@
let amountSent = 0;
let amountReceived = 0;
let opReturnMessage = '';
+ let isCashtabMessage = false;
// Assume an incoming transaction
let outgoingTx = false;
let tokenTx = false;
@@ -154,7 +155,16 @@
// if this is not an eToken tx and does not contain addresses, then assume encoded message
asm = removeOpReturnPrefixes(asm);
let msgBody = asm.substr(asm.indexOf(' ') + 1); // extract everything after the OP_RETURN opcode
- opReturnMessage = Buffer.from(msgBody, 'hex');
+ if (msgBody.split(' ')[0] === '3158065') {
+ // this is a Cashtab.com generated message
+ opReturnMessage = Buffer.from(
+ msgBody.substr(msgBody.indexOf(' ') + 1),
+ 'hex',
+ ); // extract everything after the Cashtab prefix
+ isCashtabMessage = true;
+ } else {
+ opReturnMessage = Buffer.from(msgBody, 'hex');
+ }
}
continue; // skipping the remainder of tx data parsing logic in both token and OP_RETURN tx cases
}
@@ -180,7 +190,7 @@
parsedTx.outgoingTx = outgoingTx;
parsedTx.destinationAddress = destinationAddress;
parsedTx.opReturnMessage = opReturnMessage;
-
+ parsedTx.isCashtabMessage = isCashtabMessage;
parsedTxHistory.push(parsedTx);
}
return parsedTxHistory;
@@ -950,6 +960,7 @@
const script = [
BCH.Script.opcodes.OP_RETURN,
Buffer.from('6d02', 'hex'),
+ Buffer.from('313030', 'hex'), // Cashtab's '100' prefix
Buffer.from(optionalOpReturnMsg),
];
const data = BCH.Script.encode(script);