@across-protocol/sdk 4.3.36 → 4.3.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.js +36 -107
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/provider.d.ts +1 -1
- package/dist/cjs/arch/svm/provider.js +2 -1
- package/dist/cjs/arch/svm/provider.js.map +1 -1
- package/dist/cjs/arch/svm/utils.d.ts +2 -0
- package/dist/cjs/arch/svm/utils.js +20 -2
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +1 -1
- package/dist/esm/arch/svm/SpokeUtils.js +40 -109
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/provider.d.ts +1 -1
- package/dist/esm/arch/svm/provider.js +1 -1
- package/dist/esm/arch/svm/provider.js.map +1 -1
- package/dist/esm/arch/svm/utils.d.ts +8 -0
- package/dist/esm/arch/svm/utils.js +24 -1
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/pool/poolClient.js +1 -1
- package/dist/esm/utils/AddressUtils.js +1 -1
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/utils/abi/index.d.ts +1 -1
- package/dist/esm/utils/abi/index.js +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/provider.d.ts +1 -1
- package/dist/types/arch/svm/provider.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +8 -0
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/utils/abi/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/arch/svm/SpokeUtils.ts +36 -124
- package/src/arch/svm/provider.ts +1 -0
- package/src/arch/svm/utils.ts +25 -1
- package/src/caching/Arweave/ArweaveClient.ts +1 -1
- package/src/pool/poolClient.ts +1 -1
- package/src/providers/rateLimitedProvider.ts +1 -1
- package/src/utils/AddressUtils.ts +1 -1
- package/src/utils/BlockExplorerUtils.ts +1 -1
- package/src/utils/abi/index.ts +1 -1
|
@@ -73,7 +73,7 @@ function _createBlockExplorerLinkMarkdown(hex, chainId) {
|
|
|
73
73
|
var _b = _a[_i], length_1 = _b[0], route = _b[1];
|
|
74
74
|
// If the hex string is the correct length, return the link.
|
|
75
75
|
if (hex.length === length_1) {
|
|
76
|
-
return "<".concat(constructURL(explorerDomain, [route, hex]), "|").concat(shortURLString, ">");
|
|
76
|
+
return "<".concat(constructURL(explorerDomain, [route, hex]), " | ").concat(shortURLString, ">");
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockExplorerUtils.js","sourceRoot":"","sources":["../../../src/utils/BlockExplorerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAuB,EAAE,OAAwB;;IACjF,OAAO,MAAA,gCAAgC,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,mCAAI,IAAI,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAiB;;IAC1D,OAAO,MAAA,eAAe,CAAC,SAAS,CAAC,0CAAE,aAAa,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,KAAe;IACnD,gFAAgF;IAChF,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAZ,CAAY,CAAC,CAAC;IAC3C,0BAA0B;IAC1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,EAAE,EAAR,CAAQ,CAAC,CAAC;IACtC,6BAA6B;IAC7B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,OAAO,UAAG,MAAM,cAAI,IAAI,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,gCAAgC,CAAC,GAAW,EAAE,OAAW;IAAX,wBAAA,EAAA,WAAW;IAChE,sEAAsE;IACtE,IAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;QAC9B,OAAO,kCAA2B,OAAO,cAAI,GAAG,OAAI,CAAC;KACtD;IACD,+EAA+E;IAC/E,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QAChC,GAAG,GAAG,YAAK,GAAG,CAAE,CAAC;KAClB;IACD,4DAA4D;IAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;IACD,gCAAgC;IAChC,IAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACjD,6CAA6C;IAC7C,KAA8B,UAGP,EAHO,KAAA;QAC5B,CAAC,EAAE,EAAE,IAAI,CAAC;QACV,CAAC,EAAE,EAAE,SAAS,CAAC;KACM,EAHO,cAGP,EAHO,IAGP,EAAE;QAHd,IAAA,WAAe,EAAd,QAAM,QAAA,EAAE,KAAK,QAAA;QAIvB,4DAA4D;QAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,QAAM,EAAE;YACzB,OAAO,WAAI,YAAY,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"BlockExplorerUtils.js","sourceRoot":"","sources":["../../../src/utils/BlockExplorerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAuB,EAAE,OAAwB;;IACjF,OAAO,MAAA,gCAAgC,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,mCAAI,IAAI,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAiB;;IAC1D,OAAO,MAAA,eAAe,CAAC,SAAS,CAAC,0CAAE,aAAa,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,KAAe;IACnD,gFAAgF;IAChF,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAZ,CAAY,CAAC,CAAC;IAC3C,0BAA0B;IAC1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,EAAE,EAAR,CAAQ,CAAC,CAAC;IACtC,6BAA6B;IAC7B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,OAAO,UAAG,MAAM,cAAI,IAAI,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,gCAAgC,CAAC,GAAW,EAAE,OAAW;IAAX,wBAAA,EAAA,WAAW;IAChE,sEAAsE;IACtE,IAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;QAC9B,OAAO,kCAA2B,OAAO,cAAI,GAAG,OAAI,CAAC;KACtD;IACD,+EAA+E;IAC/E,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QAChC,GAAG,GAAG,YAAK,GAAG,CAAE,CAAC;KAClB;IACD,4DAA4D;IAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;IACD,gCAAgC;IAChC,IAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACjD,6CAA6C;IAC7C,KAA8B,UAGP,EAHO,KAAA;QAC5B,CAAC,EAAE,EAAE,IAAI,CAAC;QACV,CAAC,EAAE,EAAE,SAAS,CAAC;KACM,EAHO,cAGP,EAHO,IAGP,EAAE;QAHd,IAAA,WAAe,EAAd,QAAM,QAAA,EAAE,KAAK,QAAA;QAIvB,4DAA4D;QAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,QAAM,EAAE;YACzB,OAAO,WAAI,YAAY,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,gBAAM,cAAc,MAAG,CAAC;SAC9E;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,mBAA6B,EAAE,OAAwB;IACxF,OAAO,mBAAmB,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,UAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAI,EAAvC,CAAuC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { ContractInterface } from "ethers";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function getABIDir(): string;
|
|
13
13
|
/**
|
|
14
|
-
* @notice Retrieve an ABI
|
|
14
|
+
* @notice Retrieve an ABI description from the set of known contracts.
|
|
15
15
|
* @param contractName Name of the contract ABI to retrieve.
|
|
16
16
|
* @returns Contract ABI as an ethers ContractInterface type.
|
|
17
17
|
*/
|
|
@@ -15,7 +15,7 @@ export function getABIDir() {
|
|
|
15
15
|
return "".concat(__dirname, "/contracts");
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* @notice Retrieve an ABI
|
|
18
|
+
* @notice Retrieve an ABI description from the set of known contracts.
|
|
19
19
|
* @param contractName Name of the contract ABI to retrieve.
|
|
20
20
|
* @returns Contract ABI as an ethers ContractInterface type.
|
|
21
21
|
*/
|
|
@@ -109,7 +109,7 @@ export declare function findFillEvent(relayData: RelayData, destinationChainId:
|
|
|
109
109
|
* @param repaymentChainId Optional repaymentChainId (defaults to destinationChainId).
|
|
110
110
|
* @returns An Ethers UnsignedTransaction instance.
|
|
111
111
|
*/
|
|
112
|
-
export declare function fillRelayInstruction(spokePool: SvmAddress, relayData: ProtoFill, signer: TransactionSigner<string>, recipientTokenAccount: Address<string>, repaymentAddress
|
|
112
|
+
export declare function fillRelayInstruction(spokePool: SvmAddress, relayData: ProtoFill, signer: TransactionSigner<string>, recipientTokenAccount: Address<string>, repaymentAddress: EvmAddress | SvmAddress, repaymentChainId: number): Promise<SvmSpokeClient.FillRelayInstruction<Address<"DLv3NggMiSaef97YCkew5xKUHDh13tVGZ7tydt3ZeAru">, string, string, string, string, string, string, string, string, string, string, string, string, string, []>>;
|
|
113
113
|
/**
|
|
114
114
|
* @param mint Address of the token corresponding to the account being made.
|
|
115
115
|
* @param relayer Address of the relayer filling the deposit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAA8B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SVM RPC provider error codes
|
|
3
3
|
* See https://www.quicknode.com/docs/solana/error-references
|
|
4
4
|
*/
|
|
5
|
-
export { isSolanaError, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE as SVM_BLOCK_NOT_AVAILABLE, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED as SVM_SLOT_SKIPPED, } from "@solana/kit";
|
|
5
|
+
export { isSolanaError, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE as SVM_BLOCK_NOT_AVAILABLE, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED as SVM_SLOT_SKIPPED, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE as SVM_TRANSACTION_PREFLIGHT_FAILURE, } from "@solana/kit";
|
|
6
6
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,aAAa,EACb,wDAAwD,IAAI,uBAAuB,EACnF,iDAAiD,IAAI,gBAAgB,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,aAAa,EACb,wDAAwD,IAAI,uBAAuB,EACnF,iDAAiD,IAAI,gBAAgB,EACrE,uEAAuE,IAAI,iCAAiC,GAC7G,MAAM,aAAa,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { SvmSpokeClient } from "@across-protocol/contracts";
|
|
2
3
|
import { Idl } from "@coral-xyz/anchor";
|
|
3
4
|
import { Address, IInstruction, KeyPairSigner, type Commitment, type TransactionSigner } from "@solana/kit";
|
|
4
5
|
import { RelayData } from "../../interfaces";
|
|
@@ -137,6 +138,13 @@ export declare const createDefaultTransaction: (rpcClient: SVMProvider, signer:
|
|
|
137
138
|
* @returns The decoded result.
|
|
138
139
|
*/
|
|
139
140
|
export declare const simulateAndDecode: <P extends (buf: Buffer) => unknown>(solanaClient: SVMProvider, ix: IInstruction, signer: KeyPairSigner, parser: P) => Promise<ReturnType<P>>;
|
|
141
|
+
/**
|
|
142
|
+
* Converts a common `RelayData` type to an SvmSpokeClient.RelayData` type. This is useful for when we need
|
|
143
|
+
* to interface directly with the SvmSpoke.
|
|
144
|
+
* @param relayData The common RelayData TS type.
|
|
145
|
+
* @returns RelayData which conforms to the typing of the SvmSpoke.
|
|
146
|
+
*/
|
|
147
|
+
export declare function toSvmRelayData(relayData: RelayData): SvmSpokeClient.RelayData;
|
|
140
148
|
/**
|
|
141
149
|
* Returns the PDA for the CCTP nonce.
|
|
142
150
|
* @param solanaClient The Solana client.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/utils.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { ContractInterface } from "ethers";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function getABIDir(): string;
|
|
13
13
|
/**
|
|
14
|
-
* @notice Retrieve an ABI
|
|
14
|
+
* @notice Retrieve an ABI description from the set of known contracts.
|
|
15
15
|
* @param contractName Name of the contract ABI to retrieve.
|
|
16
16
|
* @returns Contract ABI as an ethers ContractInterface type.
|
|
17
17
|
*/
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { MessageTransmitterClient, SvmSpokeClient, TokenMessengerMinterClient } from "@across-protocol/contracts";
|
|
2
2
|
import { decodeFillStatusAccount, fetchState } from "@across-protocol/contracts/dist/src/svm/clients/SvmSpoke";
|
|
3
3
|
import { decodeMessageHeader, hashNonEmptyMessage } from "@across-protocol/contracts/dist/src/svm/web3-v1";
|
|
4
|
-
import { intToU8Array32 } from "@across-protocol/contracts/dist/src/svm/web3-v1/conversionUtils";
|
|
5
4
|
import { SYSTEM_PROGRAM_ADDRESS } from "@solana-program/system";
|
|
6
5
|
import {
|
|
7
6
|
ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
@@ -34,7 +33,7 @@ import {
|
|
|
34
33
|
type TransactionSigner,
|
|
35
34
|
} from "@solana/kit";
|
|
36
35
|
import assert from "assert";
|
|
37
|
-
import { arrayify
|
|
36
|
+
import { arrayify } from "ethers/lib/utils";
|
|
38
37
|
import { Logger } from "winston";
|
|
39
38
|
import { CHAIN_IDs, TOKEN_SYMBOLS_MAP } from "../../constants";
|
|
40
39
|
import { DepositWithBlock, FillStatus, FillWithBlock, RelayData, RelayExecutionEventInfo } from "../../interfaces";
|
|
@@ -54,7 +53,6 @@ import {
|
|
|
54
53
|
toAddressType,
|
|
55
54
|
} from "../../utils";
|
|
56
55
|
import {
|
|
57
|
-
bigToU8a32,
|
|
58
56
|
createDefaultTransaction,
|
|
59
57
|
getCCTPNoncePda,
|
|
60
58
|
getEventAuthority,
|
|
@@ -66,6 +64,7 @@ import {
|
|
|
66
64
|
toAddress,
|
|
67
65
|
unwrapEventData,
|
|
68
66
|
getRootBundlePda,
|
|
67
|
+
toSvmRelayData,
|
|
69
68
|
} from "./";
|
|
70
69
|
import { SvmCpiEventsClient } from "./eventsClient";
|
|
71
70
|
import { SVM_BLOCK_NOT_AVAILABLE, SVM_SLOT_SKIPPED, isSolanaError } from "./provider";
|
|
@@ -465,11 +464,10 @@ export async function fillRelayInstruction(
|
|
|
465
464
|
relayData: ProtoFill,
|
|
466
465
|
signer: TransactionSigner<string>,
|
|
467
466
|
recipientTokenAccount: Address<string>,
|
|
468
|
-
repaymentAddress: EvmAddress | SvmAddress
|
|
469
|
-
repaymentChainId
|
|
467
|
+
repaymentAddress: EvmAddress | SvmAddress,
|
|
468
|
+
repaymentChainId: number
|
|
470
469
|
) {
|
|
471
470
|
const program = toAddress(spokePool);
|
|
472
|
-
|
|
473
471
|
assert(
|
|
474
472
|
repaymentAddress.isValidOn(repaymentChainId),
|
|
475
473
|
`Invalid repayment address for chain ${repaymentChainId}: ${repaymentAddress.toNative()}.`
|
|
@@ -480,61 +478,29 @@ export async function fillRelayInstruction(
|
|
|
480
478
|
|
|
481
479
|
const relayer = SvmAddress.from(signer.address);
|
|
482
480
|
|
|
483
|
-
|
|
484
|
-
const relayerTokenAccount = await getAssociatedTokenAddress(relayer, relayData.outputToken);
|
|
485
|
-
|
|
486
|
-
const [statePda, fillStatusPda, eventAuthority] = await Promise.all([
|
|
481
|
+
const [statePda, fillStatusPda, eventAuthority, delegatePda, relayerTokenAccount] = await Promise.all([
|
|
487
482
|
getStatePda(program),
|
|
488
483
|
getFillStatusPda(program, relayData, relayData.destinationChainId),
|
|
489
484
|
getEventAuthority(program),
|
|
485
|
+
getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), signer.address, program),
|
|
486
|
+
getAssociatedTokenAddress(relayer, relayData.outputToken),
|
|
490
487
|
]);
|
|
491
488
|
|
|
492
|
-
const
|
|
493
|
-
const shortenedBuffer = new Uint8Array(Buffer.from(relayData.depositId.toHexString().slice(2), "hex"));
|
|
494
|
-
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
495
|
-
|
|
496
|
-
const delegatePda = await getFillRelayDelegatePda(
|
|
497
|
-
relayDataHash,
|
|
498
|
-
BigInt(repaymentChainId),
|
|
499
|
-
toAddress(relayer),
|
|
500
|
-
program
|
|
501
|
-
);
|
|
502
|
-
|
|
503
|
-
const [recipient, outputToken, exclusiveRelayer, depositor, inputToken] = [
|
|
504
|
-
relayData.recipient,
|
|
505
|
-
relayData.outputToken,
|
|
506
|
-
relayData.exclusiveRelayer,
|
|
507
|
-
relayData.depositor,
|
|
508
|
-
relayData.inputToken,
|
|
509
|
-
].map(toAddress);
|
|
510
|
-
|
|
489
|
+
const svmRelayData = toSvmRelayData(relayData);
|
|
511
490
|
return SvmSpokeClient.getFillRelayInstruction({
|
|
512
491
|
signer,
|
|
513
492
|
state: statePda,
|
|
514
493
|
delegate: toAddress(SvmAddress.from(delegatePda.toString())),
|
|
515
|
-
mint: outputToken,
|
|
494
|
+
mint: svmRelayData.outputToken,
|
|
516
495
|
relayerTokenAccount: relayerTokenAccount,
|
|
517
496
|
recipientTokenAccount: recipientTokenAccount,
|
|
518
497
|
fillStatus: fillStatusPda,
|
|
519
498
|
eventAuthority,
|
|
520
499
|
program,
|
|
521
500
|
relayHash: relayDataHash,
|
|
522
|
-
relayData: some(
|
|
523
|
-
depositor,
|
|
524
|
-
recipient,
|
|
525
|
-
exclusiveRelayer,
|
|
526
|
-
inputToken,
|
|
527
|
-
outputToken,
|
|
528
|
-
inputAmount: bigToU8a32(relayData.inputAmount.toBigInt()),
|
|
529
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
530
|
-
originChainId: BigInt(relayData.originChainId),
|
|
531
|
-
fillDeadline: relayData.fillDeadline,
|
|
532
|
-
exclusivityDeadline: relayData.exclusivityDeadline,
|
|
533
|
-
depositId: depositIdBuffer,
|
|
534
|
-
message: new Uint8Array(Buffer.from(relayData.message.slice(2), "hex")),
|
|
535
|
-
}),
|
|
501
|
+
relayData: some(svmRelayData),
|
|
536
502
|
repaymentChainId: some(BigInt(repaymentChainId)),
|
|
537
|
-
repaymentAddress: toAddress(repaymentAddress),
|
|
503
|
+
repaymentAddress: some(toAddress(repaymentAddress)),
|
|
538
504
|
});
|
|
539
505
|
}
|
|
540
506
|
|
|
@@ -575,7 +541,7 @@ export async function getFillRelayTx(
|
|
|
575
541
|
repaymentChainId: number,
|
|
576
542
|
repaymentAddress: SdkAddress
|
|
577
543
|
) {
|
|
578
|
-
const
|
|
544
|
+
const svmRelayData = toSvmRelayData(relayData);
|
|
579
545
|
|
|
580
546
|
assert(
|
|
581
547
|
repaymentAddress.isValidOn(repaymentChainId),
|
|
@@ -583,44 +549,27 @@ export async function getFillRelayTx(
|
|
|
583
549
|
);
|
|
584
550
|
|
|
585
551
|
const program = toAddress(spokePoolAddr);
|
|
586
|
-
const _relayDataHash = getRelayDataHash(relayData, destinationChainId);
|
|
552
|
+
const _relayDataHash = getRelayDataHash(relayData, relayData.destinationChainId);
|
|
587
553
|
const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
588
554
|
|
|
589
|
-
const [state, delegate] = await Promise.all([
|
|
555
|
+
const [state, delegate, mintInfo, fillStatus, eventAuthority] = await Promise.all([
|
|
590
556
|
getStatePda(program),
|
|
591
557
|
getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), toAddress(repaymentAddress), program),
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const mint = toAddress(outputToken);
|
|
595
|
-
const mintInfo = await getMintInfo(solanaClient, mint);
|
|
596
|
-
|
|
597
|
-
const [recipientAta, relayerAta, fillStatus, eventAuthority] = await Promise.all([
|
|
598
|
-
getAssociatedTokenAddress(recipient, outputToken, mintInfo.programAddress),
|
|
599
|
-
getAssociatedTokenAddress(SvmAddress.from(signer.address), outputToken, mintInfo.programAddress),
|
|
600
|
-
getFillStatusPda(program, relayData, destinationChainId),
|
|
558
|
+
getMintInfo(solanaClient, svmRelayData.outputToken),
|
|
559
|
+
getFillStatusPda(program, relayData, relayData.destinationChainId),
|
|
601
560
|
getEventAuthority(program),
|
|
602
561
|
]);
|
|
603
562
|
|
|
604
|
-
const
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
inputToken: toAddress(inputToken),
|
|
609
|
-
outputToken: mint,
|
|
610
|
-
inputAmount: bigToU8a32(relayData.inputAmount.toBigInt()),
|
|
611
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
612
|
-
originChainId: relayData.originChainId,
|
|
613
|
-
depositId: new Uint8Array(intToU8Array32(relayData.depositId.toNumber())),
|
|
614
|
-
fillDeadline: relayData.fillDeadline,
|
|
615
|
-
exclusivityDeadline: relayData.exclusivityDeadline,
|
|
616
|
-
message: new Uint8Array(Buffer.from(relayData.message, "hex")),
|
|
617
|
-
};
|
|
563
|
+
const [recipientAta, relayerAta] = await Promise.all([
|
|
564
|
+
getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
|
|
565
|
+
getAssociatedTokenAddress(SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
|
|
566
|
+
]);
|
|
618
567
|
|
|
619
568
|
const fillInput: SvmSpokeClient.FillRelayInput = {
|
|
620
569
|
signer: signer,
|
|
621
570
|
state,
|
|
622
571
|
delegate,
|
|
623
|
-
mint,
|
|
572
|
+
mint: svmRelayData.outputToken,
|
|
624
573
|
relayerTokenAccount: relayerAta,
|
|
625
574
|
recipientTokenAccount: recipientAta,
|
|
626
575
|
fillStatus,
|
|
@@ -777,48 +726,16 @@ export async function getSlowFillRequestTx(
|
|
|
777
726
|
},
|
|
778
727
|
signer: TransactionSigner
|
|
779
728
|
) {
|
|
780
|
-
const {
|
|
781
|
-
depositor,
|
|
782
|
-
recipient,
|
|
783
|
-
inputToken,
|
|
784
|
-
outputToken,
|
|
785
|
-
exclusiveRelayer,
|
|
786
|
-
destinationChainId,
|
|
787
|
-
originChainId,
|
|
788
|
-
depositId,
|
|
789
|
-
fillDeadline,
|
|
790
|
-
exclusivityDeadline,
|
|
791
|
-
message,
|
|
792
|
-
} = relayData;
|
|
793
|
-
|
|
794
729
|
const program = toAddress(spokePoolAddr);
|
|
795
|
-
const relayDataHash = getRelayDataHash(relayData, destinationChainId);
|
|
730
|
+
const relayDataHash = getRelayDataHash(relayData, relayData.destinationChainId);
|
|
796
731
|
|
|
797
732
|
const [state, fillStatus, eventAuthority] = await Promise.all([
|
|
798
733
|
getStatePda(program),
|
|
799
|
-
getFillStatusPda(program, relayData, destinationChainId),
|
|
734
|
+
getFillStatusPda(program, relayData, relayData.destinationChainId),
|
|
800
735
|
getEventAuthority(program),
|
|
801
736
|
]);
|
|
802
737
|
|
|
803
|
-
const
|
|
804
|
-
const shortenedBuffer = arrayify(depositId.toHexString());
|
|
805
|
-
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
806
|
-
|
|
807
|
-
const relayDataInput: SvmSpokeClient.RequestSlowFillInput["relayData"] = {
|
|
808
|
-
depositor: toAddress(depositor),
|
|
809
|
-
recipient: toAddress(recipient),
|
|
810
|
-
exclusiveRelayer: toAddress(exclusiveRelayer),
|
|
811
|
-
inputToken: toAddress(inputToken),
|
|
812
|
-
outputToken: toAddress(outputToken),
|
|
813
|
-
inputAmount: bigToU8a32(relayData.inputAmount.toBigInt()),
|
|
814
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
815
|
-
originChainId: BigInt(originChainId),
|
|
816
|
-
depositId: depositIdBuffer,
|
|
817
|
-
fillDeadline: fillDeadline,
|
|
818
|
-
exclusivityDeadline: exclusivityDeadline,
|
|
819
|
-
message: arrayify(message),
|
|
820
|
-
};
|
|
821
|
-
|
|
738
|
+
const svmRelayData = toSvmRelayData(relayData);
|
|
822
739
|
const requestSlowFillInput: SvmSpokeClient.RequestSlowFillInput = {
|
|
823
740
|
signer,
|
|
824
741
|
state,
|
|
@@ -826,7 +743,7 @@ export async function getSlowFillRequestTx(
|
|
|
826
743
|
eventAuthority,
|
|
827
744
|
program,
|
|
828
745
|
relayHash: arrayify(relayDataHash),
|
|
829
|
-
relayData:
|
|
746
|
+
relayData: svmRelayData,
|
|
830
747
|
systemProgram: SYSTEM_PROGRAM_ADDRESS,
|
|
831
748
|
};
|
|
832
749
|
|
|
@@ -882,28 +799,23 @@ export async function getAssociatedTokenAddress(
|
|
|
882
799
|
}
|
|
883
800
|
|
|
884
801
|
export function getRelayDataHash(relayData: RelayData, destinationChainId: number): string {
|
|
885
|
-
|
|
802
|
+
assert(relayData.message.startsWith("0x"), "Message must be a hex string");
|
|
886
803
|
const uint64Encoder = getU64Encoder();
|
|
887
|
-
const uint32Encoder = getU32Encoder();
|
|
888
804
|
|
|
889
|
-
|
|
890
|
-
const
|
|
805
|
+
const svmRelayData = toSvmRelayData(relayData);
|
|
806
|
+
const relayDataEncoder = SvmSpokeClient.getRelayDataEncoder();
|
|
807
|
+
const encodedRelayData = relayDataEncoder.encode(svmRelayData);
|
|
808
|
+
const encodedMessage = Buffer.from(relayData.message.slice(2), "hex");
|
|
891
809
|
|
|
810
|
+
// Reformat the encoded relay data the same way it is done in the SvmSpoke:
|
|
811
|
+
// https://github.com/across-protocol/contracts/blob/3310f8dc716407a5f97ef5fd2eae63df83251f2f/programs/svm-spoke/src/utils/merkle_proof_utils.rs#L5
|
|
812
|
+
const messageOffset = encodedRelayData.length - 4 - encodedMessage.length;
|
|
892
813
|
const contentToHash = Buffer.concat([
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
encodeAddress(relayData.exclusiveRelayer),
|
|
896
|
-
encodeAddress(relayData.inputToken),
|
|
897
|
-
encodeAddress(relayData.outputToken),
|
|
898
|
-
arrayify(hexZeroPad(hexlify(relayData.inputAmount), 32)),
|
|
899
|
-
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.outputAmount.toString()))),
|
|
900
|
-
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.originChainId.toString()))),
|
|
901
|
-
arrayify(hexZeroPad(hexlify(relayData.depositId), 32)),
|
|
902
|
-
Uint8Array.from(uint32Encoder.encode(relayData.fillDeadline)),
|
|
903
|
-
Uint8Array.from(uint32Encoder.encode(relayData.exclusivityDeadline)),
|
|
904
|
-
hashNonEmptyMessage(Buffer.from(arrayify(relayData.message))),
|
|
814
|
+
encodedRelayData.slice(0, messageOffset),
|
|
815
|
+
hashNonEmptyMessage(encodedMessage),
|
|
905
816
|
Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
|
|
906
817
|
]);
|
|
818
|
+
|
|
907
819
|
return keccak256(contentToHash);
|
|
908
820
|
}
|
|
909
821
|
|
package/src/arch/svm/provider.ts
CHANGED
|
@@ -6,4 +6,5 @@ export {
|
|
|
6
6
|
isSolanaError,
|
|
7
7
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE as SVM_BLOCK_NOT_AVAILABLE,
|
|
8
8
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED as SVM_SLOT_SKIPPED,
|
|
9
|
+
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE as SVM_TRANSACTION_PREFLIGHT_FAILURE,
|
|
9
10
|
} from "@solana/kit";
|
package/src/arch/svm/utils.ts
CHANGED
|
@@ -125,7 +125,8 @@ export function parseEventData(eventData: any): any {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
if (typeof eventData === "object") {
|
|
128
|
-
|
|
128
|
+
const stringTag = Object.prototype.toString.call(eventData);
|
|
129
|
+
if (stringTag.includes("PublicKey")) {
|
|
129
130
|
return address(eventData.toString());
|
|
130
131
|
}
|
|
131
132
|
if (BN.isBN(eventData)) {
|
|
@@ -429,6 +430,29 @@ export const simulateAndDecode = async <P extends (buf: Buffer) => unknown>(
|
|
|
429
430
|
return parser(Buffer.from(simulationResult.value.returnData.data[0], "base64")) as ReturnType<P>;
|
|
430
431
|
};
|
|
431
432
|
|
|
433
|
+
/**
|
|
434
|
+
* Converts a common `RelayData` type to an SvmSpokeClient.RelayData` type. This is useful for when we need
|
|
435
|
+
* to interface directly with the SvmSpoke.
|
|
436
|
+
* @param relayData The common RelayData TS type.
|
|
437
|
+
* @returns RelayData which conforms to the typing of the SvmSpoke.
|
|
438
|
+
*/
|
|
439
|
+
export function toSvmRelayData(relayData: RelayData): SvmSpokeClient.RelayData {
|
|
440
|
+
return {
|
|
441
|
+
originChainId: BigInt(relayData.originChainId),
|
|
442
|
+
depositor: address(relayData.depositor.toBase58()),
|
|
443
|
+
recipient: address(relayData.recipient.toBase58()),
|
|
444
|
+
depositId: ethers.utils.arrayify(ethers.utils.hexZeroPad(relayData.depositId.toHexString(), 32)),
|
|
445
|
+
inputToken: address(relayData.inputToken.toBase58()),
|
|
446
|
+
outputToken: address(relayData.outputToken.toBase58()),
|
|
447
|
+
inputAmount: ethers.utils.arrayify(ethers.utils.hexZeroPad(relayData.inputAmount.toHexString(), 32)),
|
|
448
|
+
outputAmount: relayData.outputAmount.toBigInt(),
|
|
449
|
+
message: Uint8Array.from(Buffer.from(relayData.message.slice(2), "hex")),
|
|
450
|
+
fillDeadline: relayData.fillDeadline,
|
|
451
|
+
exclusiveRelayer: address(relayData.exclusiveRelayer.toBase58()),
|
|
452
|
+
exclusivityDeadline: relayData.exclusivityDeadline,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
|
|
432
456
|
/**
|
|
433
457
|
* Returns the PDA for the CCTP nonce.
|
|
434
458
|
* @param solanaClient The Solana client.
|
|
@@ -101,7 +101,7 @@ export class ArweaveClient {
|
|
|
101
101
|
const transactionUrl = `${this.gatewayUrl}/${transactionID}`;
|
|
102
102
|
// We should query in via Axios directly to the gateway URL. The reasoning behind this is
|
|
103
103
|
// that the Arweave SDK's `getData` method is too slow and does not provide a way to set a timeout.
|
|
104
|
-
// Therefore, something that could take
|
|
104
|
+
// Therefore, something that could take milliseconds to complete could take tens of minutes.
|
|
105
105
|
const { data, status: responseStatus } = await axios.get<Record<string, unknown>>(transactionUrl);
|
|
106
106
|
// Ensure that the result is successful. If it is not, the retrieved value is not our expected type
|
|
107
107
|
// but rather a {status: string, statusText: string} object. We can detect that and return null.
|
package/src/pool/poolClient.ts
CHANGED
|
@@ -216,7 +216,7 @@ export class PoolEventState {
|
|
|
216
216
|
|
|
217
217
|
// save these events
|
|
218
218
|
this.processEvents(events);
|
|
219
|
-
// only process token receipt events,
|
|
219
|
+
// only process token receipt events, because we just want the l1 token involved with this transfer
|
|
220
220
|
const eventState = hubPool.getEventState(events);
|
|
221
221
|
// event state is keyed by l1token address
|
|
222
222
|
const l1Tokens = Object.keys(eventState);
|
|
@@ -68,7 +68,7 @@ export class RateLimitedProvider extends ethers.providers.StaticJsonRpcProvider
|
|
|
68
68
|
return result;
|
|
69
69
|
} catch (error) {
|
|
70
70
|
// Log errors as well.
|
|
71
|
-
// For now, to keep logs light, don't log the error itself, just
|
|
71
|
+
// For now, to keep logs light, don't log the error itself, just propagate and let it be handled higher up.
|
|
72
72
|
const elapsedTimeS = (performance.now() - startTime) / 1000;
|
|
73
73
|
this.logger.debug({
|
|
74
74
|
...loggerArgs,
|
|
@@ -154,7 +154,7 @@ export abstract class Address {
|
|
|
154
154
|
return (this.evmAddress ??= parseRawAddress());
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
// Converts the address to a hex string. This method should be
|
|
157
|
+
// Converts the address to a hex string. This method should be overridden by subclasses to obtain more meaningful
|
|
158
158
|
// address representations for the target chain ID.
|
|
159
159
|
toNative(): string {
|
|
160
160
|
return this.toBytes32();
|
|
@@ -73,7 +73,7 @@ function _createBlockExplorerLinkMarkdown(hex: string, chainId = 1): string | nu
|
|
|
73
73
|
] as [number, string][]) {
|
|
74
74
|
// If the hex string is the correct length, return the link.
|
|
75
75
|
if (hex.length === length) {
|
|
76
|
-
return `<${constructURL(explorerDomain, [route, hex])}
|
|
76
|
+
return `<${constructURL(explorerDomain, [route, hex])} | ${shortURLString}>`;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
return null;
|
package/src/utils/abi/index.ts
CHANGED
|
@@ -18,7 +18,7 @@ export function getABIDir(): string {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* @notice Retrieve an ABI
|
|
21
|
+
* @notice Retrieve an ABI description from the set of known contracts.
|
|
22
22
|
* @param contractName Name of the contract ABI to retrieve.
|
|
23
23
|
* @returns Contract ABI as an ethers ContractInterface type.
|
|
24
24
|
*/
|