Skip to content

Commit 3446856

Browse files
committed
fix(sdk-coin-xrp): add destinationTag field
TICKET: WIN-3813
1 parent 08c0c4a commit 3446856

File tree

3 files changed

+22
-21
lines changed

3 files changed

+22
-21
lines changed

modules/bitgo/test/v2/unit/recovery.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ describe('Recovery:', function () {
5555
})
5656
.then(function (recovery) {
5757
recovery.txHex.should.equal(
58-
'12000022800000002400000004201B0015519161400000024F37EDC068400000000000001E7300811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267F3E0107321026C91974146427889C801BD26CE31CE0E10307A69DFE4139DE45E5E35933A6B03744630440220263C30D0CBB59076D0541E1D8919B0D467FDC9CFC63D2FB43E22A26924FB174E02204EFFD8F2269D1F701FF3D816A215884226BCB6668222B962FD124A9F8264E98D8114ABB5B7C843F3AA8D8EFACC3C5A7D9B0484C17442E1E010732102F4E376133012F5404990C7E1DF83A9F943B30D55F0D856632C8E8378FCEB70D274473045022100D3D94038EE6D5A2E4E9C2B79ED176066C7FE8019B2ACD1F028FD3212A7BA4E6F02205E39C9734873441D8018D2A72C42F31D1863B65215AFC9674820A8A3135E81248114ACEF9F0A2FCEC44A9A213444A9E6C57E2D02856AE1F1'
58+
'120000228000000024000000042E00003039201B0015519161400000024F37EDC068400000000000001E7300811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267F3E0107321026C91974146427889C801BD26CE31CE0E10307A69DFE4139DE45E5E35933A6B03744630440220692763F79B6C61D50BE57C613C589EF33FC7A5063169F7E21ABDBF9BFB84A26C022062DC329F27F678AAE51C85896298C54D9D1174E891D52199DED13898F94ECA1A8114ABB5B7C843F3AA8D8EFACC3C5A7D9B0484C17442E1E010732102F4E376133012F5404990C7E1DF83A9F943B30D55F0D856632C8E8378FCEB70D27446304402203F8DAA9F0B26D902A20BBDE426B80941E2E75784EE40290203607BAEEFF080E802207C651C9DE5DB949A3231A70F199939624FB92B36BDA23D2A5858643CA0C288EC8114ACEF9F0A2FCEC44A9A213444A9E6C57E2D02856AE1F1'
5959
);
60-
recovery.id.should.equal('25B104FD0B9649AB38950202741356C75DBEEAD3E9F1F43097C8A649D3FE8E94');
60+
recovery.id.should.equal('0123383D6E12E9F7B3A13727CCE4D15895014FB3957D29610D308E300EA742C1');
6161
recovery.outputAmount.should.equal('9919000000');
6262
recovery.outputs.length.should.equal(1);
63-
recovery.outputs[0].address.should.equal('rsv2kremJSSFbbaLqrf8fWxxN5QnsynNm2');
63+
recovery.outputs[0].address.should.equal('rsv2kremJSSFbbaLqrf8fWxxN5QnsynNm2?dt=12345');
6464
recovery.outputs[0].amount.should.equal('9919000000');
6565
recovery.fee.fee.should.equal('30');
6666
});
@@ -83,12 +83,12 @@ describe('Recovery:', function () {
8383
})
8484
.then(function (recovery) {
8585
recovery.txHex.should.equal(
86-
'12000022800000002400000004201B0015519161400000024F37EDC068400000000000001E7300811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267F3E010732102F4E376133012F5404990C7E1DF83A9F943B30D55F0D856632C8E8378FCEB70D274473045022100D3D94038EE6D5A2E4E9C2B79ED176066C7FE8019B2ACD1F028FD3212A7BA4E6F02205E39C9734873441D8018D2A72C42F31D1863B65215AFC9674820A8A3135E81248114ACEF9F0A2FCEC44A9A213444A9E6C57E2D02856AE1F1'
86+
'120000228000000024000000042E00003039201B0015519161400000024F37EDC068400000000000001E7300811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267F3E010732102F4E376133012F5404990C7E1DF83A9F943B30D55F0D856632C8E8378FCEB70D27446304402203F8DAA9F0B26D902A20BBDE426B80941E2E75784EE40290203607BAEEFF080E802207C651C9DE5DB949A3231A70F199939624FB92B36BDA23D2A5858643CA0C288EC8114ACEF9F0A2FCEC44A9A213444A9E6C57E2D02856AE1F1'
8787
);
88-
recovery.id.should.equal('11D09331E7AC76D4817F08D359F8CEB06A10DFCBE4B7ABAE45C7A1131443C6F1');
88+
recovery.id.should.equal('397C13D060B4BE43E7F2EEAE5B35E27DA306A7F6766A38C4F0570E359E71D090');
8989
recovery.outputAmount.should.equal('9919000000');
9090
recovery.outputs.length.should.equal(1);
91-
recovery.outputs[0].address.should.equal('rsv2kremJSSFbbaLqrf8fWxxN5QnsynNm2');
91+
recovery.outputs[0].address.should.equal('rsv2kremJSSFbbaLqrf8fWxxN5QnsynNm2?dt=12345');
9292
recovery.outputs[0].amount.should.equal('9919000000');
9393
recovery.fee.fee.should.equal('30');
9494
});
@@ -111,12 +111,13 @@ describe('Recovery:', function () {
111111
})
112112
.then(function (recovery) {
113113
recovery.txHex.should.equal(
114-
'12000022800000002400000004201B0015519161400000024F37EDC068400000000000001E811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267'
114+
'120000228000000024000000042E00003039201B0015519161400000024F37EDC068400000000000001E811439CA010E0E0198150F8DDD5768CCD2B095701D8C8314201276ADC469C4F10D1369E0F5C5A7DEF37B2267'
115115
);
116116
const tx: any = Utils.decodeTransaction(recovery.txHex);
117117
tx.TransactionType.should.equal('Payment');
118118
tx.Account.should.equal('raGZWRkRBUWdQJsKYEzwXJNbCZMTqX56aA');
119119
tx.Destination.should.equal('rsv2kremJSSFbbaLqrf8fWxxN5QnsynNm2');
120+
tx.DestinationTag.should.equal(12345);
120121
tx.Amount.should.equal('9919000000');
121122
tx.Flags.should.equal(2147483648);
122123
tx.LastLedgerSequence.should.equal(1397137);

modules/sdk-coin-xrp/src/xrp.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -505,10 +505,10 @@ export class Xrp extends BaseCoin {
505505

506506
const rawDestination = params.recoveryDestination;
507507
const destinationDetails = url.parse(rawDestination);
508-
const destinationAddress = destinationDetails.pathname;
508+
// const destinationAddress = destinationDetails.pathname;
509509

510510
// parse destination tag from query
511-
let destinationTag: number | undefined;
511+
// let destinationTag: number | undefined;
512512
if (destinationDetails.query) {
513513
const queryDetails = querystring.parse(destinationDetails.query);
514514
if (Array.isArray(queryDetails.dt)) {
@@ -518,10 +518,10 @@ export class Xrp extends BaseCoin {
518518
);
519519
}
520520

521-
const parsedTag = parseInt(queryDetails.dt as string, 10);
522-
if (Number.isInteger(parsedTag)) {
523-
destinationTag = parsedTag;
524-
}
521+
// const parsedTag = parseInt(queryDetails.dt as string, 10);
522+
// if (Number.isInteger(parsedTag)) {
523+
// destinationTag = parsedTag;
524+
// }
525525
}
526526

527527
if (recoverableBalance.toNumber() <= 0) {
@@ -533,8 +533,7 @@ export class Xrp extends BaseCoin {
533533
const tokenName = params?.tokenName;
534534
if (!!tokenName) {
535535
const tokenParams = {
536-
destinationAddress,
537-
destinationTag,
536+
recoveryDestination: params.recoveryDestination,
538537
recoverableBalance,
539538
currentLedger,
540539
openLedgerFee,
@@ -553,7 +552,7 @@ export class Xrp extends BaseCoin {
553552
const factory = new TransactionBuilderFactory(coins.get(this.getChain()));
554553
const txBuilder = factory.getTransferBuilder() as TransferBuilder;
555554
txBuilder
556-
.to(destinationAddress as string)
555+
.to(params.recoveryDestination as string)
557556
.amount(recoverableBalance.toFixed(0))
558557
.sender(params.rootAddress)
559558
.flags(2147483648)
@@ -631,7 +630,7 @@ export class Xrp extends BaseCoin {
631630
const factory = new TransactionBuilderFactory(coins.get(tokenName));
632631
const txBuilder = factory.getTokenTransferBuilder() as TokenTransferBuilder;
633632
txBuilder
634-
.to(tokenParams.destinationAddress)
633+
.to(tokenParams.recoveryDestination)
635634
.amount(amount)
636635
.sender(params.rootAddress)
637636
.flags(FLAG_VALUE)

modules/sdk-coin-xrp/test/unit/xrp.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ describe('XRP:', function () {
231231
describe('Recover Token Transactions', () => {
232232
const sandBox = sinon.createSandbox();
233233
const tokenName = 'txrp:rlusd';
234-
const destination = 'raBSn6ipeWXYe7rNbNafZSx9dV2fU3zRyP';
234+
const destination = 'raBSn6ipeWXYe7rNbNafZSx9dV2fU3zRyP?dt=12345';
235235
const passPhrase = '#Bondiola1234';
236236
let xrplStub;
237237

@@ -293,12 +293,12 @@ describe('XRP:', function () {
293293
res.should.hasOwnProperty('txHex');
294294
res.should.hasOwnProperty('fee');
295295
res.should.hasOwnProperty('outputAmount');
296-
res.id.should.equal('BED49314330C3EB252B7275B1ADDBB6BF87439F2886ED7ACB1255BFF3A113FBC');
296+
res.id.should.equal('09F430C97394F0E6A1690A5DB0FD16E47D210815A9C8257DFBDAEE225D7402AA');
297297
res.outputAmount.value.should.equal('4');
298298
res.outputAmount.currency.should.equal('524C555344000000000000000000000000000000');
299299
res.outputAmount.issuer.should.equal('rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV');
300300
res.txHex.should.equal(
301-
'120000228000000024000C50B8201B002B750061D48E35FA931A0000524C555344000000000000000000000000000000FCF4DD8C64636BC503F4A58DC6C684D2C7C3C24F68400000000000001E730081149389EC07DF6E6567D658BACC54606EBB33DC13E6831438D1B9A61C0FFA1A82FCF8A40AF709A9C8CF1890F3E0107321035F72A84A6BCD8ED2D26EAD2C5F864C55C26364EAF20257EFF7241F0F8D987BDA74463044022014B6C2471088A08B1C4FD065CE87DEB7AB30EBDB00C1A38A689BCFC36AA3D02402205CF25122414B766FBAA87EED35C12579799EC06DB3E9B41ABBDF47A4C9FAFEF681146BBA54CE60D9F3C926711A2C60D1CC712F21993CE1E01073210261E923400BDF6024D1D05574A7303C3D6878C7678F31254BD769DD4037495D9974473045022100AA1386B125E3131D21A95D735CDCC1923CDCE0B950F1B165F9DC50336F6C68A40220791EE568403D444E218E7BACF203B63AE96A803C0AF704F9EB6DD1FF91A355D88114EE3FBE636ADCBDD05B53493501DA6FBBC9287562E1F1'
301+
'120000228000000024000C50B82E00003039201B002B750061D48E35FA931A0000524C555344000000000000000000000000000000FCF4DD8C64636BC503F4A58DC6C684D2C7C3C24F68400000000000001E730081149389EC07DF6E6567D658BACC54606EBB33DC13E6831438D1B9A61C0FFA1A82FCF8A40AF709A9C8CF1890F3E0107321035F72A84A6BCD8ED2D26EAD2C5F864C55C26364EAF20257EFF7241F0F8D987BDA74473045022100A954411577684F5844C79F7B49FBE2D71E6E8AEC6A6BF4C04C3E3A208F5DA3F702206C114D4E2B7EA16CAF1DFAE2CE9D5C878818F879B8C921E5CF389F5AB87FE59381146BBA54CE60D9F3C926711A2C60D1CC712F21993CE1E01073210261E923400BDF6024D1D05574A7303C3D6878C7678F31254BD769DD4037495D9974473045022100F0FCF1044224A1DCB6ACE8AB057FD2344B39ED5C09B436A2B94EB1EF1A7ED99802206EFB9321E6344C94591B9D1F921045DDBAE3EC78808CB30D6C9CA18F02A11E7B8114EE3FBE636ADCBDD05B53493501DA6FBBC9287562E1F1'
302302
);
303303
});
304304

@@ -357,7 +357,7 @@ describe('XRP:', function () {
357357
res.should.not.be.empty();
358358
res.should.hasOwnProperty('txHex');
359359
res.txHex.should.equal(
360-
'120000228000000024000C50B8201B002B750061D48E35FA931A0000524C555344000000000000000000000000000000FCF4DD8C64636BC503F4A58DC6C684D2C7C3C24F68400000000000001E811439CA010E0E0198150F8DDD5768CCD2B095701D8C831438D1B9A61C0FFA1A82FCF8A40AF709A9C8CF1890'
360+
'120000228000000024000C50B82E00003039201B002B750061D48E35FA931A0000524C555344000000000000000000000000000000FCF4DD8C64636BC503F4A58DC6C684D2C7C3C24F68400000000000001E811439CA010E0E0198150F8DDD5768CCD2B095701D8C831438D1B9A61C0FFA1A82FCF8A40AF709A9C8CF1890'
361361
);
362362
const tx: any = xrpl.decode(res.txHex);
363363
tx.TransactionType.should.equal('Payment');
@@ -367,6 +367,7 @@ describe('XRP:', function () {
367367
tx.Fee.should.equal('30');
368368
tx.Account.should.equal('raGZWRkRBUWdQJsKYEzwXJNbCZMTqX56aA');
369369
tx.Destination.should.equal('raBSn6ipeWXYe7rNbNafZSx9dV2fU3zRyP');
370+
tx.DestinationTag.should.equal(12345);
370371
});
371372
});
372373

0 commit comments

Comments
 (0)