Skip to content

Commit bf638fb

Browse files
committed
chore: audited contract changes
1 parent e04e6f9 commit bf638fb

File tree

7 files changed

+70
-14
lines changed

7 files changed

+70
-14
lines changed

evm/ts/src/ethers-contracts/1_1_0/MultiTokenNtt.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,14 @@ export declare namespace IMultiTokenRateLimiter {
9191
export type InboundQueuedTransferStruct = {
9292
txTimestamp: BigNumberish;
9393
sourceChainId: BigNumberish;
94+
transferDigest: BytesLike;
9495
};
9596

9697
export type InboundQueuedTransferStructOutput = [
9798
txTimestamp: bigint,
98-
sourceChainId: bigint
99-
] & { txTimestamp: bigint; sourceChainId: bigint };
99+
sourceChainId: bigint,
100+
transferDigest: string
101+
] & { txTimestamp: bigint; sourceChainId: bigint; transferDigest: string };
100102

101103
export type OutboundQueuedTransferStruct = {
102104
recipient: BytesLike;
@@ -272,7 +274,7 @@ export interface MultiTokenNttInterface extends Interface {
272274
): string;
273275
encodeFunctionData(
274276
functionFragment: "completeInboundQueuedTransfer",
275-
values: [NativeTokenTransferCodec.NativeTokenTransferStruct]
277+
values: [BytesLike, NativeTokenTransferCodec.NativeTokenTransferStruct]
276278
): string;
277279
encodeFunctionData(
278280
functionFragment: "completeOutboundQueuedTransfer",
@@ -341,7 +343,7 @@ export interface MultiTokenNttInterface extends Interface {
341343
): string;
342344
encodeFunctionData(
343345
functionFragment: "receiveMessage",
344-
values: [BigNumberish, BytesLike, BytesLike]
346+
values: [BytesLike, BigNumberish, BytesLike, BytesLike]
345347
): string;
346348
encodeFunctionData(
347349
functionFragment: "setInboundLimit",
@@ -816,7 +818,10 @@ export interface MultiTokenNtt extends BaseContract {
816818
>;
817819

818820
completeInboundQueuedTransfer: TypedContractMethod<
819-
[nativeTokenTransfer: NativeTokenTransferCodec.NativeTokenTransferStruct],
821+
[
822+
digest: BytesLike,
823+
nativeTokenTransfer: NativeTokenTransferCodec.NativeTokenTransferStruct
824+
],
820825
[void],
821826
"nonpayable"
822827
>;
@@ -902,7 +907,12 @@ export interface MultiTokenNtt extends BaseContract {
902907
rateLimitDuration: TypedContractMethod<[], [bigint], "view">;
903908

904909
receiveMessage: TypedContractMethod<
905-
[sourceChainId: BigNumberish, sender: BytesLike, data: BytesLike],
910+
[
911+
digest: BytesLike,
912+
sourceChainId: BigNumberish,
913+
sender: BytesLike,
914+
data: BytesLike
915+
],
906916
[void],
907917
"nonpayable"
908918
>;
@@ -977,7 +987,10 @@ export interface MultiTokenNtt extends BaseContract {
977987
getFunction(
978988
nameOrSignature: "completeInboundQueuedTransfer"
979989
): TypedContractMethod<
980-
[nativeTokenTransfer: NativeTokenTransferCodec.NativeTokenTransferStruct],
990+
[
991+
digest: BytesLike,
992+
nativeTokenTransfer: NativeTokenTransferCodec.NativeTokenTransferStruct
993+
],
981994
[void],
982995
"nonpayable"
983996
>;
@@ -1076,7 +1089,12 @@ export interface MultiTokenNtt extends BaseContract {
10761089
getFunction(
10771090
nameOrSignature: "receiveMessage"
10781091
): TypedContractMethod<
1079-
[sourceChainId: BigNumberish, sender: BytesLike, data: BytesLike],
1092+
[
1093+
digest: BytesLike,
1094+
sourceChainId: BigNumberish,
1095+
sender: BytesLike,
1096+
data: BytesLike
1097+
],
10801098
[void],
10811099
"nonpayable"
10821100
>;

evm/ts/src/ethers-contracts/1_1_0/factories/GmpManager__factory.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

evm/ts/src/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.ts

Lines changed: 32 additions & 1 deletion
Large diffs are not rendered by default.

evm/ts/src/multiTokenNtt.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ export class EvmMultiTokenNtt<N extends Network, C extends EvmChains>
295295
})
296296
);
297297

298-
// The contract expects the instructions to be sorted by transceiver index.
298+
// The contract requires the instructions to be sorted by transceiver index in ascending order.
299299
instructions.sort((a, b) => a.index - b.index);
300300

301301
return instructions;
@@ -537,11 +537,14 @@ export class EvmMultiTokenNtt<N extends Network, C extends EvmChains>
537537
}
538538

539539
async *completeInboundQueuedTransfer(
540+
fromChain: Chain,
540541
transceiverMessage: MultiTokenNtt.Message
541542
) {
542543
const { trimmedAmount, token, sender, to } =
543544
transceiverMessage.payload.data;
544545

546+
const digest = MultiTokenNtt.messageDigest(fromChain, transceiverMessage);
547+
545548
const transfer: NativeTokenTransferCodec.NativeTokenTransferStruct = {
546549
amount: trimmedAmount.amount,
547550
token: {
@@ -558,6 +561,7 @@ export class EvmMultiTokenNtt<N extends Network, C extends EvmChains>
558561

559562
const tx =
560563
await this.multiTokenNtt.completeInboundQueuedTransfer.populateTransaction(
564+
digest,
561565
transfer
562566
);
563567

sdk/definitions/src/layouts/multiToken.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ export const tokenInfoLayoutItem = {
3939
} as const;
4040

4141
export const multiTokenNativeTokenTransferLayout = [
42-
prefixItem([0x99, 0x4e, 0x54, 0x54]),
42+
// bytes4 constant MTT_PREFIX = 0x994D5454;
43+
prefixItem([0x99, 0x4d, 0x54, 0x54]),
4344
{ name: "trimmedAmount", ...trimmedAmountItem },
4445
{ name: "token", ...tokenInfoLayoutItem },
4546
{ name: "sender", ...layoutItems.universalAddressItem },

sdk/definitions/src/multiTokenNtt.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export interface MultiTokenNtt<N extends Network, C extends Chain> {
150150
): Promise<MultiTokenNtt.InboundQueuedTransfer | null>;
151151

152152
completeInboundQueuedTransfer(
153+
fromChain: Chain,
153154
transceiverMessage: MultiTokenNtt.Message
154155
): AsyncGenerator<UnsignedTransaction<N, C>>;
155156

sdk/route/src/types.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,7 @@ export namespace MultiTokenNttRoute {
597597
multiTokenNtt: receipt.params.normalizedParams.destinationContracts,
598598
});
599599
const completeTransfer = ntt.completeInboundQueuedTransfer(
600+
receipt.from,
600601
vaa.payload.nttManagerPayload
601602
);
602603
const finalizeTxids = await signSendWait(chain, completeTransfer, signer);
@@ -852,8 +853,8 @@ export namespace MultiTokenNttRoute {
852853

853854
yield receipt;
854855

855-
// sleep for a few seconds so we don't spam the endpoints
856-
await new Promise((resolve) => setTimeout(resolve, 3000));
856+
// Sleep for a bit so we don't spam requests
857+
await new Promise((resolve) => setTimeout(resolve, 5000));
857858
leftover -= Date.now() - start;
858859
}
859860

0 commit comments

Comments
 (0)