@hyperlane-xyz/sdk 41.2.0 → 41.3.1
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/ccip/consts.d.ts.map +1 -1
- package/dist/ccip/consts.js +0 -80
- package/dist/ccip/consts.js.map +1 -1
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +0 -118
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/deploy/warp.d.ts.map +1 -1
- package/dist/deploy/warp.js +11 -2
- package/dist/deploy/warp.js.map +1 -1
- package/dist/metadata/warpRouteConfig.d.ts +10 -8
- package/dist/metadata/warpRouteConfig.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +38 -10
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.test.js +182 -2
- package/dist/middleware/account/InterchainAccount.test.js.map +1 -1
- package/dist/providers/transactionFeeEstimators.d.ts.map +1 -1
- package/dist/providers/transactionFeeEstimators.js +26 -18
- package/dist/providers/transactionFeeEstimators.js.map +1 -1
- package/dist/providers/transactionFeeEstimators.test.js +141 -1
- package/dist/providers/transactionFeeEstimators.test.js.map +1 -1
- package/dist/token/EvmWarpModule.d.ts +4 -0
- package/dist/token/EvmWarpModule.d.ts.map +1 -1
- package/dist/token/EvmWarpModule.hardhat-test.js +109 -0
- package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmWarpModule.js +92 -4
- package/dist/token/EvmWarpModule.js.map +1 -1
- package/dist/token/EvmWarpRouteReader.d.ts +1 -0
- package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
- package/dist/token/EvmWarpRouteReader.hardhat-test.js +68 -3
- package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -1
- package/dist/token/EvmWarpRouteReader.js +83 -6
- package/dist/token/EvmWarpRouteReader.js.map +1 -1
- package/dist/token/ITokenMetadata.d.ts +3 -2
- package/dist/token/ITokenMetadata.d.ts.map +1 -1
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +4 -0
- package/dist/token/Token.js.map +1 -1
- package/dist/token/Token.test.js +16 -0
- package/dist/token/Token.test.js.map +1 -1
- package/dist/token/TokenStandard.d.ts +3 -1
- package/dist/token/TokenStandard.d.ts.map +1 -1
- package/dist/token/TokenStandard.js +6 -0
- package/dist/token/TokenStandard.js.map +1 -1
- package/dist/token/config.d.ts +2 -0
- package/dist/token/config.d.ts.map +1 -1
- package/dist/token/config.js +4 -0
- package/dist/token/config.js.map +1 -1
- package/dist/token/configUtils.d.ts +5 -0
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +28 -6
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/configUtils.test.js +21 -1
- package/dist/token/configUtils.test.js.map +1 -1
- package/dist/token/contracts.d.ts +3 -1
- package/dist/token/contracts.d.ts.map +1 -1
- package/dist/token/contracts.js +3 -1
- package/dist/token/contracts.js.map +1 -1
- package/dist/token/deploy.d.ts +2 -1
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.hardhat-test.js +111 -3
- package/dist/token/deploy.hardhat-test.js.map +1 -1
- package/dist/token/deploy.js +45 -3
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/tokenMetadataUtils.d.ts.map +1 -1
- package/dist/token/tokenMetadataUtils.js +20 -2
- package/dist/token/tokenMetadataUtils.js.map +1 -1
- package/dist/token/types.d.ts +1049 -22
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +29 -0
- package/dist/token/types.js.map +1 -1
- package/dist/token/warpCheck.d.ts.map +1 -1
- package/dist/token/warpCheck.js +12 -0
- package/dist/token/warpCheck.js.map +1 -1
- package/dist/warp/types.d.ts +5 -4
- package/dist/warp/types.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -7,7 +7,7 @@ import { defaultRegistryTypes } from '@cosmjs/stargate';
|
|
|
7
7
|
import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx.js';
|
|
8
8
|
import { VersionedTransaction } from '@solana/web3.js';
|
|
9
9
|
import { StargateClientCache, disconnectStargateClient, shouldCacheStargateClient, } from '@hyperlane-xyz/cosmos-sdk';
|
|
10
|
-
import { ProtocolType, assert, convertToProtocolAddress, } from '@hyperlane-xyz/utils';
|
|
10
|
+
import { ProtocolType, assert, convertToProtocolAddress, isNullish, } from '@hyperlane-xyz/utils';
|
|
11
11
|
import { ProviderType, } from './ProviderType.js';
|
|
12
12
|
const stargateClientCache = new StargateClientCache(32);
|
|
13
13
|
export function clearCachedStargateClients() {
|
|
@@ -29,8 +29,10 @@ export async function estimateTransactionFeeEthersV5({ transaction, provider, se
|
|
|
29
29
|
// Separating out inner function to allow WarpCore to reuse logic
|
|
30
30
|
export async function estimateTransactionFeeEthersV5ForGasUnits({ provider, gasUnits, }) {
|
|
31
31
|
const feeData = await provider.getFeeData();
|
|
32
|
-
return computeEvmTxFee(gasUnits,
|
|
33
|
-
? BigInt(feeData.
|
|
32
|
+
return computeEvmTxFee(gasUnits, !isNullish(feeData.gasPrice)
|
|
33
|
+
? BigInt(feeData.gasPrice.toString())
|
|
34
|
+
: undefined, !isNullish(feeData.maxFeePerGas)
|
|
35
|
+
? BigInt(feeData.maxFeePerGas.toString())
|
|
34
36
|
: undefined);
|
|
35
37
|
}
|
|
36
38
|
export async function estimateTransactionFeeViem({ transaction, provider, sender, }) {
|
|
@@ -40,14 +42,14 @@ export async function estimateTransactionFeeViem({ transaction, provider, sender
|
|
|
40
42
|
account: sender,
|
|
41
43
|
}); // Cast to silence overly-protective type enforcement from viem here
|
|
42
44
|
const feeData = await provider.provider.estimateFeesPerGas();
|
|
43
|
-
return computeEvmTxFee(gasUnits, feeData.gasPrice, feeData.maxFeePerGas
|
|
45
|
+
return computeEvmTxFee(gasUnits, feeData.gasPrice, feeData.maxFeePerGas);
|
|
44
46
|
}
|
|
45
|
-
function computeEvmTxFee(gasUnits, gasPrice, maxFeePerGas
|
|
47
|
+
function computeEvmTxFee(gasUnits, gasPrice, maxFeePerGas) {
|
|
46
48
|
let estGasPrice;
|
|
47
|
-
if (maxFeePerGas
|
|
48
|
-
estGasPrice = maxFeePerGas
|
|
49
|
+
if (!isNullish(maxFeePerGas)) {
|
|
50
|
+
estGasPrice = maxFeePerGas;
|
|
49
51
|
}
|
|
50
|
-
else if (gasPrice) {
|
|
52
|
+
else if (!isNullish(gasPrice)) {
|
|
51
53
|
estGasPrice = gasPrice;
|
|
52
54
|
}
|
|
53
55
|
else {
|
|
@@ -62,23 +64,29 @@ function computeEvmTxFee(gasUnits, gasPrice, maxFeePerGas, maxPriorityFeePerGas)
|
|
|
62
64
|
export async function estimateTransactionFeeSolanaWeb3({ provider, transaction, }) {
|
|
63
65
|
const connection = provider.provider;
|
|
64
66
|
const inner = transaction.transaction;
|
|
67
|
+
const message = inner instanceof VersionedTransaction
|
|
68
|
+
? inner.message
|
|
69
|
+
: inner.compileMessage();
|
|
65
70
|
// The two arms are intentionally identical: `Connection.simulateTransaction`
|
|
66
71
|
// has separate overloads for legacy `Transaction` and `VersionedTransaction`
|
|
67
72
|
// and the union satisfies neither, so we branch purely to narrow `inner` to a
|
|
68
73
|
// concrete type and let overload resolution pick the matching signature.
|
|
69
|
-
const
|
|
70
|
-
?
|
|
71
|
-
:
|
|
74
|
+
const simulation = inner instanceof VersionedTransaction
|
|
75
|
+
? connection.simulateTransaction(inner)
|
|
76
|
+
: connection.simulateTransaction(inner);
|
|
77
|
+
const [{ value }, feeResponse] = await Promise.all([
|
|
78
|
+
simulation,
|
|
79
|
+
connection.getFeeForMessage(message),
|
|
80
|
+
]);
|
|
72
81
|
assert(!value.err, `Solana gas estimation failed: ${JSON.stringify(value)}`);
|
|
73
|
-
const gasUnits = BigInt(value.unitsConsumed
|
|
74
|
-
|
|
75
|
-
// prioritizationFee is in micro-lamports per compute unit; divide by 1e6 to get lamports
|
|
76
|
-
const microLamportsPerCu = BigInt(recentFees[0]?.prioritizationFee ?? 0);
|
|
77
|
-
const fee = (gasUnits * microLamportsPerCu) / 1000000n;
|
|
82
|
+
const gasUnits = BigInt(value.unitsConsumed ?? 0);
|
|
83
|
+
assert(feeResponse.value !== null, 'Solana transaction fee estimation failed');
|
|
78
84
|
return {
|
|
79
85
|
gasUnits,
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
// Solana's message fee includes fixed signature and optional priority fees,
|
|
87
|
+
// so it cannot be represented as one price per consumed compute unit.
|
|
88
|
+
gasPrice: 0n,
|
|
89
|
+
fee: BigInt(feeResponse.value),
|
|
82
90
|
};
|
|
83
91
|
}
|
|
84
92
|
// This is based on a reverse-engineered version of the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionFeeEstimators.js","sourceRoot":"","sources":["../../src/providers/transactionFeeEstimators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMvD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,YAAY,EACZ,MAAM,EACN,wBAAwB,
|
|
1
|
+
{"version":3,"file":"transactionFeeEstimators.js","sourceRoot":"","sources":["../../src/providers/transactionFeeEstimators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import sinon from 'sinon';
|
|
3
3
|
import { StargateClient } from '@cosmjs/stargate';
|
|
4
|
+
import { Connection, Keypair, SystemProgram, Transaction, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
5
|
+
import { BigNumber, providers as EthersV5Providers } from 'ethers';
|
|
6
|
+
import { createPublicClient, custom } from 'viem';
|
|
4
7
|
import { ProviderType } from './ProviderType.js';
|
|
5
|
-
import { clearCachedStargateClients, estimateTransactionFeeCosmJsWasm, } from './transactionFeeEstimators.js';
|
|
8
|
+
import { clearCachedStargateClients, estimateTransactionFeeCosmJsWasm, estimateTransactionFeeEthersV5ForGasUnits, estimateTransactionFeeSolanaWeb3, estimateTransactionFeeViem, } from './transactionFeeEstimators.js';
|
|
9
|
+
const EVM_ADDRESS = '0x0000000000000000000000000000000000000001';
|
|
10
|
+
const EVM_HASH = `0x${'01'.repeat(32)}`;
|
|
6
11
|
describe('transactionFeeEstimators', () => {
|
|
7
12
|
const sender = 'cosmos1sender';
|
|
8
13
|
const senderPubKey = `02${'aa'.repeat(32)}`;
|
|
@@ -22,6 +27,77 @@ describe('transactionFeeEstimators', () => {
|
|
|
22
27
|
clearCachedStargateClients();
|
|
23
28
|
sandbox.restore();
|
|
24
29
|
});
|
|
30
|
+
function makeEthersFeeProvider({ gasPrice, maxFeePerGas, }) {
|
|
31
|
+
const provider = new EthersV5Providers.JsonRpcProvider();
|
|
32
|
+
sandbox.stub(provider, 'getFeeData').resolves({
|
|
33
|
+
gasPrice: gasPrice === null ? null : BigNumber.from(gasPrice),
|
|
34
|
+
lastBaseFeePerGas: null,
|
|
35
|
+
maxFeePerGas: maxFeePerGas === null ? null : BigNumber.from(maxFeePerGas),
|
|
36
|
+
maxPriorityFeePerGas: null,
|
|
37
|
+
});
|
|
38
|
+
return provider;
|
|
39
|
+
}
|
|
40
|
+
it('uses the EIP-1559 max fee as the total gas price cap', async () => {
|
|
41
|
+
const estimate = await estimateTransactionFeeEthersV5ForGasUnits({
|
|
42
|
+
provider: makeEthersFeeProvider({ gasPrice: 1n, maxFeePerGas: 2n }),
|
|
43
|
+
gasUnits: 600000n,
|
|
44
|
+
});
|
|
45
|
+
expect(estimate).to.deep.equal({
|
|
46
|
+
gasUnits: 600000n,
|
|
47
|
+
gasPrice: 2n,
|
|
48
|
+
fee: 1200000n,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
it('keeps zero-valued Ethers fee data as present', async () => {
|
|
52
|
+
const estimate = await estimateTransactionFeeEthersV5ForGasUnits({
|
|
53
|
+
provider: makeEthersFeeProvider({ gasPrice: 0n, maxFeePerGas: 0n }),
|
|
54
|
+
gasUnits: 600000n,
|
|
55
|
+
});
|
|
56
|
+
expect(estimate).to.deep.equal({
|
|
57
|
+
gasUnits: 600000n,
|
|
58
|
+
gasPrice: 0n,
|
|
59
|
+
fee: 0n,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
it('keeps zero-valued Viem fee data as present', async () => {
|
|
63
|
+
const client = createPublicClient({
|
|
64
|
+
transport: custom({
|
|
65
|
+
request: async () => {
|
|
66
|
+
throw new Error('Unexpected RPC request');
|
|
67
|
+
},
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
sandbox.stub(client, 'estimateGas').resolves(21000n);
|
|
71
|
+
sandbox.stub(client, 'estimateFeesPerGas').resolves({ gasPrice: 0n });
|
|
72
|
+
const transaction = {
|
|
73
|
+
blockHash: EVM_HASH,
|
|
74
|
+
blockNumber: 1n,
|
|
75
|
+
from: EVM_ADDRESS,
|
|
76
|
+
gas: 21000n,
|
|
77
|
+
gasPrice: 0n,
|
|
78
|
+
hash: EVM_HASH,
|
|
79
|
+
input: '0x',
|
|
80
|
+
nonce: 0,
|
|
81
|
+
r: '0x',
|
|
82
|
+
s: '0x',
|
|
83
|
+
to: EVM_ADDRESS,
|
|
84
|
+
transactionIndex: 0,
|
|
85
|
+
type: 'legacy',
|
|
86
|
+
typeHex: '0x0',
|
|
87
|
+
v: 27n,
|
|
88
|
+
value: 0n,
|
|
89
|
+
};
|
|
90
|
+
const estimate = await estimateTransactionFeeViem({
|
|
91
|
+
transaction: { type: ProviderType.Viem, transaction },
|
|
92
|
+
provider: { type: ProviderType.Viem, provider: client },
|
|
93
|
+
sender: EVM_ADDRESS,
|
|
94
|
+
});
|
|
95
|
+
expect(estimate).to.deep.equal({
|
|
96
|
+
gasUnits: 21000n,
|
|
97
|
+
gasPrice: 0n,
|
|
98
|
+
fee: 0n,
|
|
99
|
+
});
|
|
100
|
+
});
|
|
25
101
|
function makeProvider(url) {
|
|
26
102
|
return {
|
|
27
103
|
type: ProviderType.CosmJsWasm,
|
|
@@ -34,6 +110,70 @@ describe('transactionFeeEstimators', () => {
|
|
|
34
110
|
}),
|
|
35
111
|
};
|
|
36
112
|
}
|
|
113
|
+
it('returns the Solana base fee when priority pricing is zero', async () => {
|
|
114
|
+
const sender = Keypair.generate();
|
|
115
|
+
const transaction = new Transaction({
|
|
116
|
+
feePayer: sender.publicKey,
|
|
117
|
+
recentBlockhash: '11111111111111111111111111111111',
|
|
118
|
+
}).add(SystemProgram.transfer({
|
|
119
|
+
fromPubkey: sender.publicKey,
|
|
120
|
+
toPubkey: Keypair.generate().publicKey,
|
|
121
|
+
lamports: 1,
|
|
122
|
+
}));
|
|
123
|
+
const connection = new Connection('http://localhost:8899');
|
|
124
|
+
sandbox.stub(connection, 'simulateTransaction').resolves({
|
|
125
|
+
context: { slot: 1 },
|
|
126
|
+
value: { err: null, logs: null, unitsConsumed: 200_000 },
|
|
127
|
+
});
|
|
128
|
+
const getRecentPrioritizationFees = sandbox
|
|
129
|
+
.stub(connection, 'getRecentPrioritizationFees')
|
|
130
|
+
.resolves([{ prioritizationFee: 0, slot: 1 }]);
|
|
131
|
+
const getFeeForMessage = sandbox
|
|
132
|
+
.stub(connection, 'getFeeForMessage')
|
|
133
|
+
.resolves({ context: { slot: 1 }, value: 5_000 });
|
|
134
|
+
const estimate = await estimateTransactionFeeSolanaWeb3({
|
|
135
|
+
transaction: { type: ProviderType.SolanaWeb3, transaction },
|
|
136
|
+
provider: { type: ProviderType.SolanaWeb3, provider: connection },
|
|
137
|
+
});
|
|
138
|
+
expect(estimate).to.deep.equal({
|
|
139
|
+
gasUnits: 200000n,
|
|
140
|
+
gasPrice: 0n,
|
|
141
|
+
fee: 5000n,
|
|
142
|
+
});
|
|
143
|
+
expect(getFeeForMessage.calledOnce).to.equal(true);
|
|
144
|
+
expect(getRecentPrioritizationFees.notCalled).to.equal(true);
|
|
145
|
+
});
|
|
146
|
+
it('uses the message fee for versioned Solana transactions', async () => {
|
|
147
|
+
const sender = Keypair.generate();
|
|
148
|
+
const message = new TransactionMessage({
|
|
149
|
+
payerKey: sender.publicKey,
|
|
150
|
+
recentBlockhash: '11111111111111111111111111111111',
|
|
151
|
+
instructions: [
|
|
152
|
+
SystemProgram.transfer({
|
|
153
|
+
fromPubkey: sender.publicKey,
|
|
154
|
+
toPubkey: Keypair.generate().publicKey,
|
|
155
|
+
lamports: 1,
|
|
156
|
+
}),
|
|
157
|
+
],
|
|
158
|
+
}).compileToV0Message();
|
|
159
|
+
const connection = new Connection('http://localhost:8899');
|
|
160
|
+
sandbox.stub(connection, 'simulateTransaction').resolves({
|
|
161
|
+
context: { slot: 1 },
|
|
162
|
+
value: { err: null, logs: null, unitsConsumed: 200_000 },
|
|
163
|
+
});
|
|
164
|
+
const getFeeForMessage = sandbox
|
|
165
|
+
.stub(connection, 'getFeeForMessage')
|
|
166
|
+
.resolves({ context: { slot: 1 }, value: 5_123 });
|
|
167
|
+
const estimate = await estimateTransactionFeeSolanaWeb3({
|
|
168
|
+
transaction: {
|
|
169
|
+
type: ProviderType.SolanaWeb3,
|
|
170
|
+
transaction: new VersionedTransaction(message),
|
|
171
|
+
},
|
|
172
|
+
provider: { type: ProviderType.SolanaWeb3, provider: connection },
|
|
173
|
+
});
|
|
174
|
+
expect(estimate.fee).to.equal(5123n);
|
|
175
|
+
expect(getFeeForMessage.calledOnceWithExactly(message)).to.equal(true);
|
|
176
|
+
});
|
|
37
177
|
function makeStargateClient(simulate) {
|
|
38
178
|
return {
|
|
39
179
|
disconnect: sandbox.stub(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionFeeEstimators.test.js","sourceRoot":"","sources":["../../src/providers/transactionFeeEstimators.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"transactionFeeEstimators.test.js","sourceRoot":"","sources":["../../src/providers/transactionFeeEstimators.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,6 +104,10 @@ export declare class EvmWarpModule extends HyperlaneModule<ProtocolType.Ethereum
|
|
|
104
104
|
getAllowedBridgesApprovalTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<AnnotatedEV5Transaction[]>;
|
|
105
105
|
createAddAllowedBridgesUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): Promise<AnnotatedEV5Transaction[]>;
|
|
106
106
|
createRemoveBridgesTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedEV5Transaction[];
|
|
107
|
+
createAddRebalanceTargetsUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedEV5Transaction[];
|
|
108
|
+
createRemoveRebalanceTargetsTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedEV5Transaction[];
|
|
109
|
+
createSetRecipientsUpdateTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedEV5Transaction[];
|
|
110
|
+
createRemoveRecipientsTxs(actualConfig: DerivedTokenRouterConfig, expectedConfig: HypTokenRouterConfig): AnnotatedEV5Transaction[];
|
|
107
111
|
/**
|
|
108
112
|
* Revokes legacy standing ERC20 allowances for bridges that remain allowlisted
|
|
109
113
|
* after an in-place upgrade.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmWarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmWarpModule.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EAkBb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AASvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASvD,OAAO,EAEL,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"EvmWarpModule.d.ts","sourceRoot":"","sources":["../../src/token/EvmWarpModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -728,6 +728,115 @@ describe('EvmWarpModule', async () => {
|
|
|
728
728
|
]);
|
|
729
729
|
expect(unenrollRouters.map((router) => router.toLowerCase()).sort()).to.deep.equal([routerOne.toLowerCase(), routerTwo.toLowerCase()].sort());
|
|
730
730
|
});
|
|
731
|
+
it('preserves canonical bytes32 rebalance targets and recipients', () => {
|
|
732
|
+
const localDomain = multiProvider.getDomainId(chain);
|
|
733
|
+
const target = addressToBytes32('0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
734
|
+
const recipient = addressToBytes32('0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
|
|
735
|
+
const module = new EvmWarpModule(multiProvider, {
|
|
736
|
+
chain,
|
|
737
|
+
config: {
|
|
738
|
+
...baseConfig,
|
|
739
|
+
type: TokenType.crossCollateral,
|
|
740
|
+
token: token.address,
|
|
741
|
+
},
|
|
742
|
+
addresses: {
|
|
743
|
+
...ismFactoryAddresses,
|
|
744
|
+
deployedTokenRoute: randomAddress(),
|
|
745
|
+
},
|
|
746
|
+
});
|
|
747
|
+
const actualConfig = {
|
|
748
|
+
...baseConfig,
|
|
749
|
+
hook: ethers.constants.AddressZero,
|
|
750
|
+
interchainSecurityModule: ethers.constants.AddressZero,
|
|
751
|
+
type: TokenType.crossCollateral,
|
|
752
|
+
token: token.address,
|
|
753
|
+
tokenFee: undefined,
|
|
754
|
+
rebalanceTargets: {},
|
|
755
|
+
rebalanceRecipients: {},
|
|
756
|
+
};
|
|
757
|
+
const expectedConfig = {
|
|
758
|
+
...baseConfig,
|
|
759
|
+
type: TokenType.crossCollateral,
|
|
760
|
+
token: token.address,
|
|
761
|
+
rebalanceTargets: { [localDomain]: [target] },
|
|
762
|
+
rebalanceRecipients: { [localDomain]: recipient },
|
|
763
|
+
};
|
|
764
|
+
const [targetTx] = module.createAddRebalanceTargetsUpdateTxs(actualConfig, expectedConfig);
|
|
765
|
+
assert(targetTx.data, 'Expected rebalance target calldata');
|
|
766
|
+
const [, decodedTarget] = CrossCollateralRouter__factory.createInterface().decodeFunctionData('addRebalanceTarget(uint32,bytes32)', targetTx.data);
|
|
767
|
+
expect(decodedTarget.toLowerCase()).to.equal(target);
|
|
768
|
+
const [recipientTx] = module.createSetRecipientsUpdateTxs(actualConfig, expectedConfig);
|
|
769
|
+
assert(recipientTx.data, 'Expected rebalance recipient calldata');
|
|
770
|
+
const [, decodedRecipient] = CrossCollateralRouter__factory.createInterface().decodeFunctionData('setRecipient(uint32,bytes32)', recipientTx.data);
|
|
771
|
+
expect(decodedRecipient.toLowerCase()).to.equal(recipient);
|
|
772
|
+
});
|
|
773
|
+
it('rejects rebalance domains that cannot be read back', () => {
|
|
774
|
+
const localDomain = multiProvider.getDomainId(chain);
|
|
775
|
+
const unknownDomain = localDomain + 1000;
|
|
776
|
+
const module = new EvmWarpModule(multiProvider, {
|
|
777
|
+
chain,
|
|
778
|
+
config: {
|
|
779
|
+
...baseConfig,
|
|
780
|
+
type: TokenType.crossCollateral,
|
|
781
|
+
token: token.address,
|
|
782
|
+
},
|
|
783
|
+
addresses: {
|
|
784
|
+
...ismFactoryAddresses,
|
|
785
|
+
deployedTokenRoute: randomAddress(),
|
|
786
|
+
},
|
|
787
|
+
});
|
|
788
|
+
const actualConfig = {
|
|
789
|
+
...baseConfig,
|
|
790
|
+
hook: ethers.constants.AddressZero,
|
|
791
|
+
interchainSecurityModule: ethers.constants.AddressZero,
|
|
792
|
+
type: TokenType.crossCollateral,
|
|
793
|
+
token: token.address,
|
|
794
|
+
tokenFee: undefined,
|
|
795
|
+
};
|
|
796
|
+
const expectedConfig = {
|
|
797
|
+
...baseConfig,
|
|
798
|
+
type: TokenType.crossCollateral,
|
|
799
|
+
token: token.address,
|
|
800
|
+
rebalanceTargets: {
|
|
801
|
+
[unknownDomain]: [addressToBytes32(randomAddress())],
|
|
802
|
+
},
|
|
803
|
+
};
|
|
804
|
+
expect(() => module.createAddRebalanceTargetsUpdateTxs(actualConfig, expectedConfig)).to.throw(`Rebalance domain ${unknownDomain}`);
|
|
805
|
+
});
|
|
806
|
+
it('removes stale rebalance config when expected fields are omitted', () => {
|
|
807
|
+
const localDomain = multiProvider.getDomainId(chain);
|
|
808
|
+
const target = addressToBytes32(randomAddress());
|
|
809
|
+
const recipient = addressToBytes32(randomAddress());
|
|
810
|
+
const module = new EvmWarpModule(multiProvider, {
|
|
811
|
+
chain,
|
|
812
|
+
config: {
|
|
813
|
+
...baseConfig,
|
|
814
|
+
type: TokenType.crossCollateral,
|
|
815
|
+
token: token.address,
|
|
816
|
+
},
|
|
817
|
+
addresses: {
|
|
818
|
+
...ismFactoryAddresses,
|
|
819
|
+
deployedTokenRoute: randomAddress(),
|
|
820
|
+
},
|
|
821
|
+
});
|
|
822
|
+
const actualConfig = {
|
|
823
|
+
...baseConfig,
|
|
824
|
+
hook: ethers.constants.AddressZero,
|
|
825
|
+
interchainSecurityModule: ethers.constants.AddressZero,
|
|
826
|
+
type: TokenType.crossCollateral,
|
|
827
|
+
token: token.address,
|
|
828
|
+
tokenFee: undefined,
|
|
829
|
+
rebalanceTargets: { [localDomain]: [target] },
|
|
830
|
+
rebalanceRecipients: { [localDomain]: recipient },
|
|
831
|
+
};
|
|
832
|
+
const expectedConfig = {
|
|
833
|
+
...baseConfig,
|
|
834
|
+
type: TokenType.crossCollateral,
|
|
835
|
+
token: token.address,
|
|
836
|
+
};
|
|
837
|
+
expect(module.createRemoveRebalanceTargetsTxs(actualConfig, expectedConfig)).to.have.length(1);
|
|
838
|
+
expect(module.createRemoveRecipientsTxs(actualConfig, expectedConfig)).to.have.length(1);
|
|
839
|
+
});
|
|
731
840
|
it('includes MC crossCollateralRouters domains in destination gas txs', async () => {
|
|
732
841
|
const destinationDomain = multiProvider.getDomainId(TestChainName.test2);
|
|
733
842
|
const enrolledRouter = addressToBytes32('0x4444444444444444444444444444444444444444');
|