Skip to content

Commit 4ba3c27

Browse files
fix: upgrade taquito sdk version
TICKET: WIN-7396
1 parent 5940da3 commit 4ba3c27

File tree

7 files changed

+53
-28
lines changed

7 files changed

+53
-28
lines changed

modules/sdk-coin-xtz/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
"@bitgo/secp256k1": "^1.6.0",
4646
"@bitgo/statics": "^58.7.0",
4747
"@noble/curves": "1.8.1",
48-
"@taquito/local-forging": "6.3.5-beta.0",
49-
"@taquito/signer": "6.3.5-beta.0",
48+
"@taquito/local-forging": "^23.0.2",
49+
"@taquito/signer": "^23.0.2",
5050
"bignumber.js": "^9.0.0",
5151
"bs58check": "^2.1.2",
5252
"libsodium-wrappers": "^0.7.6",

modules/sdk-coin-xtz/src/lib/iface.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
TransactionRecipient as Recipient,
77
TransactionPrebuild as BaseTransactionPrebuild,
88
} from '@bitgo/sdk-core';
9+
import { OperationContents } from '@taquito/rpc';
910

1011
export interface XtzSignTransactionOptions extends SignTransactionOptions {
1112
txPrebuild: TransactionPrebuild;
@@ -79,7 +80,7 @@ export interface TransactionOp extends Operation {
7980

8081
export interface ParsedTransaction {
8182
branch: string;
82-
contents: Operation[];
83+
contents: OperationContents[];
8384
}
8485

8586
/**

modules/sdk-coin-xtz/src/lib/transaction.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import {
66
TransactionType,
77
} from '@bitgo/sdk-core';
88
import { BaseCoin as CoinConfig } from '@bitgo/statics';
9-
import { CODEC, localForger } from '@taquito/local-forging';
9+
import { localForger } from '@taquito/local-forging';
1010
import BigNumber from 'bignumber.js';
1111
import { IndexedSignature, OriginationOp, ParsedTransaction, RevealOp, TransactionOp } from './iface';
12+
import { OperationContents } from '@taquito/rpc';
1213
import { KeyPair } from './keyPair';
1314
import {
1415
getMultisigTransferDataFromOperation,
@@ -19,6 +20,19 @@ import {
1920
} from './multisigUtils';
2021
import * as Utils from './utils';
2122

23+
/**
24+
* Type guard to check if an operation has required fee-based properties
25+
*/
26+
function isOperationWithFees(op: OperationContents): op is OperationContents & {
27+
counter: string;
28+
source: string;
29+
fee: string;
30+
gas_limit: string;
31+
storage_limit: string;
32+
} {
33+
return 'counter' in op && 'source' in op && 'fee' in op && 'gas_limit' in op && 'storage_limit' in op;
34+
}
35+
2236
/**
2337
* Tezos transaction model.
2438
*/
@@ -88,6 +102,11 @@ export class Transaction extends BaseTransaction {
88102
this._parsedTransaction = parsedTransaction;
89103
let operationIndex = 0;
90104
for (const operation of parsedTransaction.contents) {
105+
// Skip operations that don't have the required properties (like attestations)
106+
if (!isOperationWithFees(operation)) {
107+
continue;
108+
}
109+
91110
if (this._source && this._source !== operation.source) {
92111
throw new InvalidTransactionError(
93112
'Source must be the same for every operation but it changed from ' + this._source + ' to ' + operation.source
@@ -96,14 +115,14 @@ export class Transaction extends BaseTransaction {
96115
this._source = operation.source;
97116
}
98117
switch (operation.kind) {
99-
case CODEC.OP_ORIGINATION:
118+
case 'origination':
100119
await this.recordOriginationOpFields(operation as OriginationOp, operationIndex);
101120
operationIndex++;
102121
break;
103-
case CODEC.OP_REVEAL:
122+
case 'reveal':
104123
this.recordRevealOpFields(operation as RevealOp);
105124
break;
106-
case CODEC.OP_TRANSACTION:
125+
case 'transaction':
107126
this.recordTransactionOpFields(operation as TransactionOp);
108127
break;
109128
default:

modules/sdk-coin-xtz/src/lib/transactionBuilder.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { BaseKey, BuildTransactionError, SigningError, BaseTransactionBuilder, T
22
import { BaseCoin as CoinConfig } from '@bitgo/statics';
33
import BigNumber from 'bignumber.js';
44
import { Address } from './address';
5-
import { Fee, IndexedData, IndexedSignature, Key, Operation, OriginationOp, RevealOp, TransactionOp } from './iface';
5+
import { Fee, IndexedData, IndexedSignature, Key, OriginationOp, RevealOp, TransactionOp } from './iface';
6+
import { OperationContents } from '@taquito/rpc';
67
import { KeyPair } from './keyPair';
78
import {
89
forwarderOriginationOperation,
@@ -149,34 +150,34 @@ export class TransactionBuilder extends BaseTransactionBuilder {
149150
}
150151
// TODO: make changes to the transaction if any extra parameter has been set then sign it
151152
} else {
152-
let contents: Operation[] = [];
153+
let contents: OperationContents[] = [];
153154
switch (this._type) {
154155
case TransactionType.AccountUpdate:
155156
if (this._publicKeyToReveal) {
156-
contents.push(this.buildPublicKeyRevelationOperation());
157+
contents.push(this.buildPublicKeyRevelationOperation() as OperationContents);
157158
}
158159
break;
159160
case TransactionType.WalletInitialization:
160161
if (this._publicKeyToReveal) {
161-
contents.push(this.buildPublicKeyRevelationOperation());
162+
contents.push(this.buildPublicKeyRevelationOperation() as OperationContents);
162163
}
163-
contents.push(this.buildWalletInitializationOperations());
164+
contents.push(this.buildWalletInitializationOperations() as OperationContents);
164165
break;
165166
case TransactionType.Send:
166167
if (this._publicKeyToReveal) {
167-
contents.push(this.buildPublicKeyRevelationOperation());
168+
contents.push(this.buildPublicKeyRevelationOperation() as OperationContents);
168169
}
169-
contents = contents.concat(await this.buildSendTransactionContent());
170+
contents = contents.concat((await this.buildSendTransactionContent()) as OperationContents[]);
170171
break;
171172
case TransactionType.AddressInitialization:
172173
if (this._publicKeyToReveal) {
173-
contents.push(this.buildPublicKeyRevelationOperation());
174+
contents.push(this.buildPublicKeyRevelationOperation() as OperationContents);
174175
}
175-
contents = contents.concat(this.buildForwarderDeploymentContent());
176+
contents.push(this.buildForwarderDeploymentContent() as OperationContents);
176177
break;
177178
case TransactionType.SingleSigSend:
178179
// No support for revelation txns as primary use case is to send from fee address
179-
contents = contents.concat(await this.buildSendTransactionContent());
180+
contents = contents.concat((await this.buildSendTransactionContent()) as OperationContents[]);
180181
break;
181182
default:
182183
throw new BuildTransactionError('Unsupported transaction type');

modules/sdk-coin-xtz/test/unit/offlineTransactionBuilder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ describe('Offline Tezos Transaction builder', function () {
105105
offlineTxBuilder.sign({ key: defaultKeyPair.getKeys().prv });
106106
const signedTx = await offlineTxBuilder.build();
107107

108-
signedTx.id.should.equal('oomXs6PuWtmGwMKoXTNsu9XJHnGXtuRujcHMeYS9y37Xj6sXPHb');
108+
signedTx.id.should.equal('oos4n1zJAGeqLQrNsnGAfzzj6FeZqbSrnAMVTdC485cinFWN6su');
109109
signedTx.type.should.equal(TransactionType.AccountUpdate);
110110
signedTx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
111111
should.equal(signedTx.inputs.length, 1);
@@ -114,7 +114,7 @@ describe('Offline Tezos Transaction builder', function () {
114114
signedTx.inputs[0].value.should.equal('1420');
115115
signedTx.signature.length.should.equal(1);
116116
signedTx.signature[0].should.equal(
117-
'sigQyYsfhtrJBKZuJSEizDdxoejNVvJWRZPDMWdpXVvdTVix37HzURwXfXsi9METnRzskvjgsBSgiF4pr7RVxzWLuixxJL8U'
117+
'sigTtfcxtvU5zWbsWDJwKvHdDcWYDhgsb9ozmQ44AUGHnSJJgvPR2CvNCUX8axezJKoZRzgv9gSE3GSDh5SEbm31JqM53yyg'
118118
);
119119
});
120120

@@ -310,9 +310,9 @@ describe('Offline Tezos Transaction builder', function () {
310310
});
311311

312312
should.exist(consolidationResult);
313-
consolidationResult.id.should.equal('opNrMMvnmQ6cE9JqRD8g14B6XfwGEUs7L9Bgn9qEkTtLeFEX9Tk');
313+
consolidationResult.id.should.equal('op22ZtxX7ZsogUuMdvwuMCS6tegJXV8FKsAjzoWAt3JwibBV2A5');
314314
consolidationResult.tx.should.equal(
315-
'ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01c62f80a80ce748a8b5ffcf97004b9807cb59b0b78c0bc1f5851ae852000102e8c94e3e18d8a493a2f0baa81eb0ab7fac5d23fe672f9133048ebc8cccc6f5066c01c62f80a80ce748a8b5ffcf97004b9807cb59b0b798f402c2f5851af02eac020001bda70b50cf607aee95c10322a8bff9fc4df50f8500ffff046d61696e0000005f070707070081eb8b34050502000000440320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a009482fd11034f034d031b020000000603060306030661836db09de792bfba0cb422fbb61c77b77fd80e22386cc9d7380fb7da67347f594bd8d809bfaf3d1ff172b329263ac1ad9ef2e3eacf1a199f918e33c2bd4adb'
315+
'ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01c62f80a80ce748a8b5ffcf97004b9807cb59b0b78c0bc1f5851ae852000102e8c94e3e18d8a493a2f0baa81eb0ab7fac5d23fe672f9133048ebc8cccc6f506006c01c62f80a80ce748a8b5ffcf97004b9807cb59b0b798f402c2f5851af02eac020001bda70b50cf607aee95c10322a8bff9fc4df50f8500ffff046d61696e0000005f070707070081eb8b34050502000000440320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a009482fd11034f034d031b0200000006030603060306e13e1be168af9539e0b7cb89689ce734bae6fcf3bed1a5a60749ce3bcd8864ea4c2623a0989f5de75c935746e3c88c9caab821876a060019e70f385bf3af4548'
316316
);
317317
});
318318

@@ -345,7 +345,7 @@ describe('Offline Tezos Transaction builder', function () {
345345

346346
should.exist(consolidationResult);
347347
consolidationResult.txHex.should.equal(
348-
'ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01b6da9737d1b4b75053a387d9122c22598ead2d3d8c0bcfda9c1ae852000102f1eb6b09e45afffb3aca4215637edf54d2ea3c4491726128ce5a6071a57dac0e6c01b6da9737d1b4b75053a387d9122c22598ead2d3d98f402d0da9c1af02eac020001ea4d295f3387e9efbf6d791475cb936839eb8d5800ffff046d61696e0000005e07070707008fb5b934050502000000430320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a0080897a034f034d031b0200000006030603060306'
348+
'ed8f6833f4db890c1f923d51074aa7b3982f7281f42da80212b819ad68c223776b01b6da9737d1b4b75053a387d9122c22598ead2d3d8c0bcfda9c1ae852000102f1eb6b09e45afffb3aca4215637edf54d2ea3c4491726128ce5a6071a57dac0e006c01b6da9737d1b4b75053a387d9122c22598ead2d3d98f402d0da9c1af02eac020001ea4d295f3387e9efbf6d791475cb936839eb8d5800ffff046d61696e0000005e07070707008fb5b934050502000000430320053d036d0743035d0100000024747a3252746e76454c564157356455547473424e47366362534132655146695974345270031e0743036a0080897a034f034d031b0200000006030603060306'
349349
);
350350
consolidationResult.source.should.equal('KT1Vwe7wFy6JmspMv4UmFFJU3JLtbfghBTBM');
351351
consolidationResult.dataToSign.should.equal(

modules/sdk-coin-xtz/test/unit/transaction.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
signedSerializedOriginationTransaction,
77
parsedTransaction,
88
} from '../resources';
9+
import { OperationContents } from '@taquito/rpc';
910
import { XtzLib } from '../../src';
1011

1112
describe('Tezos transaction', function () {
@@ -104,7 +105,10 @@ describe('Tezos transaction', function () {
104105

105106
it('to sign the transaction if the keys are invalid', async () => {
106107
const tx = new XtzLib.Transaction(coins.get('txtz'));
107-
await tx.initFromParsedTransaction(parsedTransaction);
108+
await tx.initFromParsedTransaction({
109+
...parsedTransaction,
110+
contents: parsedTransaction.contents as OperationContents[],
111+
});
108112
const signer = new XtzLib.KeyPair({ pub: 'sppk7ZWB8diU2TWehxdkWCV2DTFvn1hPz4qLjiD3nJQozKnoSEnSC8b' });
109113
await tx.sign(signer).should.be.rejectedWith('Missing private key');
110114
});

modules/sdk-coin-xtz/test/unit/transactionBuilder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ describe('Tezos Transaction builder', function () {
186186
txBuilder.sign({ key: defaultKeyPair.getKeys().prv });
187187
const tx = await txBuilder.build();
188188

189-
tx.id.should.equal('oo9rzcHZcGBBKtUfe3aL82isMf8SscBsLE7PBmBQXA2EKGT9yz7');
189+
tx.id.should.equal('onpN4Zq664YTriyVmBbgEZAReHbucvD31XwvnpP5T9qzfhbanbx');
190190
tx.type.should.equal(TransactionType.WalletInitialization);
191191
tx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
192192
should.equal(tx.inputs.length, 2);
@@ -195,12 +195,12 @@ describe('Tezos Transaction builder', function () {
195195
tx.inputs[0].value.should.equal('1420');
196196
tx.inputs[1].address.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
197197
tx.inputs[1].value.should.equal('1004764');
198-
tx.outputs[0].address.should.equal('KT1JQQUXLfoxL6ifTz2SyQK7ZEAvF1m7KXgC');
198+
tx.outputs[0].address.should.equal('KT1Hdttpv7CBaJ8igdkhCudMHBWUqNviJCTf');
199199
tx.outputs[0].value.should.equal('1000000');
200200
tx.delegate.should.equal('tz1KpbK5v1NB2vg3JHBxXJZhyQ7ur83Xp7iC');
201201
tx.signature.length.should.equal(1);
202202
tx.signature[0].should.equal(
203-
'sigUyznaJo4JdLuyS7wpP5fDe12cUutDiABEYHHMEpaNYY6TQstAfvLJPQTcFWJJ2QRMZxC46nUvKEdaBJfPN5dzCGMQDtXn'
203+
'sigtJtqVf7FJVqkDPyPW878FfCnpCPNb6JJdXAxezepe4t97BwfouYJ6GMqHGSNhevu4uiLSQ2h374a4NxMnA9E9qLXa4j93'
204204
);
205205
const indexesByTransactionType = tx.getIndexesByTransactionType();
206206
Object.keys(indexesByTransactionType).length.should.equal(2);
@@ -224,7 +224,7 @@ describe('Tezos Transaction builder', function () {
224224
txBuilder.sign({ key: defaultKeyPair.getKeys().prv });
225225
const tx = await txBuilder.build();
226226

227-
tx.id.should.equal('oomXs6PuWtmGwMKoXTNsu9XJHnGXtuRujcHMeYS9y37Xj6sXPHb');
227+
tx.id.should.equal('oos4n1zJAGeqLQrNsnGAfzzj6FeZqbSrnAMVTdC485cinFWN6su');
228228
tx.type.should.equal(TransactionType.AccountUpdate);
229229
tx.source.should.equal('tz2PtJ9zgEgFVTRqy6GXsst54tH3ksEnYvvS');
230230
should.equal(tx.inputs.length, 1);
@@ -234,7 +234,7 @@ describe('Tezos Transaction builder', function () {
234234
should.not.exist(tx.delegate);
235235
tx.signature.length.should.equal(1);
236236
tx.signature[0].should.equal(
237-
'sigQyYsfhtrJBKZuJSEizDdxoejNVvJWRZPDMWdpXVvdTVix37HzURwXfXsi9METnRzskvjgsBSgiF4pr7RVxzWLuixxJL8U'
237+
'sigTtfcxtvU5zWbsWDJwKvHdDcWYDhgsb9ozmQ44AUGHnSJJgvPR2CvNCUX8axezJKoZRzgv9gSE3GSDh5SEbm31JqM53yyg'
238238
);
239239
const indexesByTransactionType = tx.getIndexesByTransactionType();
240240
indexesByTransactionType.reveal.length.should.equal(1);

0 commit comments

Comments
 (0)