@hyperlane-xyz/sdk 14.2.0 → 14.4.0
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/consts/testChains.d.ts +2 -0
- package/dist/consts/testChains.d.ts.map +1 -1
- package/dist/consts/testChains.js +16 -0
- package/dist/consts/testChains.js.map +1 -1
- package/dist/core/HyperlaneRelayer.d.ts +8 -8
- package/dist/core/types.d.ts +132 -132
- package/dist/deploy/proxy.js +1 -1
- package/dist/fork/types.d.ts +15 -15
- package/dist/hook/types.d.ts +1 -1
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +1 -1
- package/dist/hook/types.js.map +1 -1
- package/dist/ica/types.d.ts +18 -18
- package/dist/index.d.ts +26 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -26
- package/dist/index.js.map +1 -1
- package/dist/ism/types.d.ts +10 -10
- package/dist/metadata/agentConfig.d.ts +4 -4
- package/dist/middleware/account/InterchainAccount.d.ts +7 -7
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +10 -9
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/types.d.ts +6 -6
- package/dist/providers/transactions/submitter/builder/types.d.ts +11 -11
- package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts +16 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js +46 -22
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js.map +1 -1
- package/dist/providers/transactions/submitter/types.d.ts +4 -4
- package/dist/providers/transactions/types.d.ts +2 -2
- package/dist/router/types.d.ts +24 -24
- package/dist/token/IToken.d.ts +3 -0
- package/dist/token/IToken.d.ts.map +1 -1
- package/dist/token/IToken.js +1 -0
- package/dist/token/IToken.js.map +1 -1
- package/dist/token/checker.d.ts.map +1 -1
- package/dist/token/checker.js +2 -1
- package/dist/token/checker.js.map +1 -1
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +5 -2
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/types.d.ts +103 -103
- package/dist/types.d.ts +3 -3
- package/dist/utils/cosmos.d.ts +2 -2
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +10 -0
- package/dist/warp/WarpCore.js.map +1 -1
- package/dist/warp/WarpCore.test.js +25 -1
- package/dist/warp/WarpCore.test.js.map +1 -1
- package/dist/warp/types.d.ts +19 -14
- package/dist/warp/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.d.ts +0 -35
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.d.ts.map +0 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js +0 -171
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js.map +0 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +0 -49
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +0 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +0 -115
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +0 -1
- package/dist/middleware/liquidity-layer/contracts.d.ts +0 -10
- package/dist/middleware/liquidity-layer/contracts.d.ts.map +0 -1
- package/dist/middleware/liquidity-layer/contracts.js +0 -9
- package/dist/middleware/liquidity-layer/contracts.js.map +0 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.d.ts +0 -2
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.d.ts.map +0 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +0 -112
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +0 -1
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
import { CircleBridgeAdapter__factory, ICircleMessageTransmitter__factory, ITokenMessenger__factory, Mailbox__factory, PortalAdapter__factory, } from '@hyperlane-xyz/core';
|
|
3
|
-
import { addressToBytes32, ensure0x, eqAddress, rootLogger, strip0x, } from '@hyperlane-xyz/utils';
|
|
4
|
-
import { HyperlaneApp } from '../../app/HyperlaneApp.js';
|
|
5
|
-
import { fetchWithTimeout } from '../../utils/fetch.js';
|
|
6
|
-
const logger = rootLogger.child({ module: 'LiquidityLayerApp' });
|
|
7
|
-
const PORTAL_VAA_SERVICE_TESTNET_BASE_URL = 'https://wormhole-v2-testnet-api.certus.one/v1/signed_vaa/';
|
|
8
|
-
const CIRCLE_ATTESTATIONS_TESTNET_BASE_URL = 'https://iris-api-sandbox.circle.com/attestations/';
|
|
9
|
-
const CIRCLE_ATTESTATIONS_MAINNET_BASE_URL = 'https://iris-api.circle.com/attestations/';
|
|
10
|
-
const PORTAL_VAA_SERVICE_SUCCESS_CODE = 5;
|
|
11
|
-
const TokenMessengerInterface = ITokenMessenger__factory.createInterface();
|
|
12
|
-
const CircleBridgeAdapterInterface = CircleBridgeAdapter__factory.createInterface();
|
|
13
|
-
const PortalAdapterInterface = PortalAdapter__factory.createInterface();
|
|
14
|
-
const MailboxInterface = Mailbox__factory.createInterface();
|
|
15
|
-
const BridgedTokenTopic = CircleBridgeAdapterInterface.getEventTopic(CircleBridgeAdapterInterface.getEvent('BridgedToken'));
|
|
16
|
-
const PortalBridgedTokenTopic = PortalAdapterInterface.getEventTopic(PortalAdapterInterface.getEvent('BridgedToken'));
|
|
17
|
-
export class LiquidityLayerApp extends HyperlaneApp {
|
|
18
|
-
contractsMap;
|
|
19
|
-
multiProvider;
|
|
20
|
-
config;
|
|
21
|
-
constructor(contractsMap, multiProvider, config) {
|
|
22
|
-
super(contractsMap, multiProvider);
|
|
23
|
-
this.contractsMap = contractsMap;
|
|
24
|
-
this.multiProvider = multiProvider;
|
|
25
|
-
this.config = config;
|
|
26
|
-
}
|
|
27
|
-
async fetchCircleMessageTransactions(chain) {
|
|
28
|
-
logger.info(`Fetch circle messages for ${chain}`);
|
|
29
|
-
const url = new URL(this.multiProvider.getExplorerApiUrl(chain));
|
|
30
|
-
url.searchParams.set('module', 'logs');
|
|
31
|
-
url.searchParams.set('action', 'getLogs');
|
|
32
|
-
url.searchParams.set('address', this.getContracts(chain).circleBridgeAdapter.address);
|
|
33
|
-
url.searchParams.set('topic0', BridgedTokenTopic);
|
|
34
|
-
const req = await fetchWithTimeout(url);
|
|
35
|
-
const response = await req.json();
|
|
36
|
-
return response.result.map((tx) => tx.transactionHash).flat();
|
|
37
|
-
}
|
|
38
|
-
async fetchPortalBridgeTransactions(chain) {
|
|
39
|
-
const url = new URL(this.multiProvider.getExplorerApiUrl(chain));
|
|
40
|
-
url.searchParams.set('module', 'logs');
|
|
41
|
-
url.searchParams.set('action', 'getLogs');
|
|
42
|
-
url.searchParams.set('address', this.getContracts(chain).portalAdapter.address);
|
|
43
|
-
url.searchParams.set('topic0', PortalBridgedTokenTopic);
|
|
44
|
-
const req = await fetchWithTimeout(url);
|
|
45
|
-
const response = await req.json();
|
|
46
|
-
if (!response.result) {
|
|
47
|
-
throw Error(`Expected result in response: ${response}`);
|
|
48
|
-
}
|
|
49
|
-
return response.result.map((tx) => tx.transactionHash).flat();
|
|
50
|
-
}
|
|
51
|
-
async parsePortalMessages(chain, txHash) {
|
|
52
|
-
const provider = this.multiProvider.getProvider(chain);
|
|
53
|
-
const receipt = await provider.getTransactionReceipt(txHash);
|
|
54
|
-
const matchingLogs = receipt.logs
|
|
55
|
-
.map((log) => {
|
|
56
|
-
try {
|
|
57
|
-
return [PortalAdapterInterface.parseLog(log)];
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return [];
|
|
61
|
-
}
|
|
62
|
-
})
|
|
63
|
-
.flat();
|
|
64
|
-
if (matchingLogs.length == 0)
|
|
65
|
-
return [];
|
|
66
|
-
const event = matchingLogs.find((log) => log.name === 'BridgedToken');
|
|
67
|
-
const portalSequence = event.args.portalSequence.toNumber();
|
|
68
|
-
const nonce = event.args.nonce.toNumber();
|
|
69
|
-
const destination = this.multiProvider.getChainName(event.args.destination);
|
|
70
|
-
return [{ origin: chain, nonce, portalSequence, destination }];
|
|
71
|
-
}
|
|
72
|
-
async parseCircleMessages(chain, txHash) {
|
|
73
|
-
logger.debug(`Parse Circle messages for chain ${chain} ${txHash}`);
|
|
74
|
-
const provider = this.multiProvider.getProvider(chain);
|
|
75
|
-
const receipt = await provider.getTransactionReceipt(txHash);
|
|
76
|
-
const matchingLogs = receipt.logs
|
|
77
|
-
.map((log) => {
|
|
78
|
-
try {
|
|
79
|
-
return [TokenMessengerInterface.parseLog(log)];
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
try {
|
|
83
|
-
return [CircleBridgeAdapterInterface.parseLog(log)];
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
try {
|
|
87
|
-
return [MailboxInterface.parseLog(log)];
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return [];
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
.flat();
|
|
96
|
-
if (matchingLogs.length == 0)
|
|
97
|
-
return [];
|
|
98
|
-
const message = matchingLogs.find((log) => log.name === 'MessageSent')
|
|
99
|
-
.args.message;
|
|
100
|
-
const nonce = matchingLogs.find((log) => log.name === 'BridgedToken').args
|
|
101
|
-
.nonce;
|
|
102
|
-
const destinationDomain = matchingLogs.find((log) => log.name === 'Dispatch').args.destination;
|
|
103
|
-
const remoteChain = this.multiProvider.getChainName(destinationDomain);
|
|
104
|
-
const domain = this.config[chain].circle.circleDomainMapping.find((mapping) => mapping.hyperlaneDomain === this.multiProvider.getDomainId(chain)).circleDomain;
|
|
105
|
-
return [
|
|
106
|
-
{
|
|
107
|
-
chain,
|
|
108
|
-
remoteChain,
|
|
109
|
-
txHash,
|
|
110
|
-
message,
|
|
111
|
-
nonce,
|
|
112
|
-
domain,
|
|
113
|
-
nonceHash: ethers.utils.solidityKeccak256(['uint32', 'uint64'], [domain, nonce]),
|
|
114
|
-
},
|
|
115
|
-
];
|
|
116
|
-
}
|
|
117
|
-
async attemptPortalTransferCompletion(message) {
|
|
118
|
-
const destinationPortalAdapter = this.getContracts(message.destination).portalAdapter;
|
|
119
|
-
const transferId = await destinationPortalAdapter.transferId(this.multiProvider.getDomainId(message.origin), message.nonce);
|
|
120
|
-
const transferTokenAddress = await destinationPortalAdapter.portalTransfersProcessed(transferId);
|
|
121
|
-
if (!eqAddress(transferTokenAddress, ethers.constants.AddressZero)) {
|
|
122
|
-
logger.info(`Transfer with nonce ${message.nonce} from ${message.origin} to ${message.destination} already processed`);
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
const wormholeOriginDomain = this.config[message.destination].portal.wormholeDomainMapping.find((mapping) => mapping.hyperlaneDomain ===
|
|
126
|
-
this.multiProvider.getDomainId(message.origin))?.wormholeDomain;
|
|
127
|
-
const emitter = strip0x(addressToBytes32(this.config[message.origin].portal.portalBridgeAddress));
|
|
128
|
-
const vaa = await fetchWithTimeout(`${PORTAL_VAA_SERVICE_TESTNET_BASE_URL}${wormholeOriginDomain}/${emitter}/${message.portalSequence}`).then((response) => response.json());
|
|
129
|
-
if (vaa.code && vaa.code === PORTAL_VAA_SERVICE_SUCCESS_CODE) {
|
|
130
|
-
logger.info(`VAA not yet found for nonce ${message.nonce}`);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
logger.debug(`Complete portal transfer for nonce ${message.nonce} on ${message.destination}`);
|
|
134
|
-
try {
|
|
135
|
-
await this.multiProvider.handleTx(message.destination, destinationPortalAdapter.completeTransfer(ensure0x(Buffer.from(vaa.vaaBytes, 'base64').toString('hex'))));
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
if (error?.error?.reason?.includes('no wrapper for this token')) {
|
|
139
|
-
logger.info('No wrapper for this token, you should register the token at https://wormhole-foundation.github.io/example-token-bridge-ui/#/register');
|
|
140
|
-
logger.info(message);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
async attemptCircleAttestationSubmission(message) {
|
|
147
|
-
const signer = this.multiProvider.getSigner(message.remoteChain);
|
|
148
|
-
const transmitter = ICircleMessageTransmitter__factory.connect(this.config[message.remoteChain].circle.messageTransmitterAddress, signer);
|
|
149
|
-
const alreadyProcessed = await transmitter.usedNonces(message.nonceHash);
|
|
150
|
-
if (alreadyProcessed) {
|
|
151
|
-
logger.info(`Message sent on ${message.txHash} was already processed`);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
logger.info(`Attempt Circle message delivery`, JSON.stringify(message));
|
|
155
|
-
const messageHash = ethers.utils.keccak256(message.message);
|
|
156
|
-
const baseurl = this.multiProvider.getChainMetadata(message.chain).isTestnet
|
|
157
|
-
? CIRCLE_ATTESTATIONS_TESTNET_BASE_URL
|
|
158
|
-
: CIRCLE_ATTESTATIONS_MAINNET_BASE_URL;
|
|
159
|
-
const attestationsB = await fetchWithTimeout(`${baseurl}${messageHash}`);
|
|
160
|
-
const attestations = await attestationsB.json();
|
|
161
|
-
if (attestations.status !== 'complete') {
|
|
162
|
-
logger.info(`Attestations not available for message nonce ${message.nonce} on ${message.txHash}`);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
logger.info(`Ready to submit attestations for message ${message.nonce}`);
|
|
166
|
-
const tx = await transmitter.receiveMessage(message.message, attestations.attestation);
|
|
167
|
-
logger.info(`Submitted attestations in ${this.multiProvider.tryGetExplorerTxUrl(message.remoteChain, tx)}`);
|
|
168
|
-
await this.multiProvider.handleTx(message.remoteChain, tx);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=LiquidityLayerApp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LiquidityLayerApp.js","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/LiquidityLayerApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { CircleBridgeAdapter, LiquidityLayerRouter, PortalAdapter, Router } from '@hyperlane-xyz/core';
|
|
2
|
-
import { Address } from '@hyperlane-xyz/utils';
|
|
3
|
-
import { HyperlaneContracts, HyperlaneContractsMap } from '../../contracts/types.js';
|
|
4
|
-
import { ContractVerifier } from '../../deploy/verify/ContractVerifier.js';
|
|
5
|
-
import { MultiProvider } from '../../providers/MultiProvider.js';
|
|
6
|
-
import { ProxiedRouterDeployer } from '../../router/ProxiedRouterDeployer.js';
|
|
7
|
-
import { RouterConfig } from '../../router/types.js';
|
|
8
|
-
import { ChainMap, ChainName } from '../../types.js';
|
|
9
|
-
import { LiquidityLayerFactories } from './contracts.js';
|
|
10
|
-
export declare enum BridgeAdapterType {
|
|
11
|
-
Circle = "Circle",
|
|
12
|
-
Portal = "Portal"
|
|
13
|
-
}
|
|
14
|
-
export interface CircleBridgeAdapterConfig {
|
|
15
|
-
type: BridgeAdapterType.Circle;
|
|
16
|
-
tokenMessengerAddress: string;
|
|
17
|
-
messageTransmitterAddress: string;
|
|
18
|
-
usdcAddress: string;
|
|
19
|
-
circleDomainMapping: {
|
|
20
|
-
hyperlaneDomain: number;
|
|
21
|
-
circleDomain: number;
|
|
22
|
-
}[];
|
|
23
|
-
}
|
|
24
|
-
export interface PortalAdapterConfig {
|
|
25
|
-
type: BridgeAdapterType.Portal;
|
|
26
|
-
portalBridgeAddress: string;
|
|
27
|
-
wormholeDomainMapping: {
|
|
28
|
-
hyperlaneDomain: number;
|
|
29
|
-
wormholeDomain: number;
|
|
30
|
-
}[];
|
|
31
|
-
}
|
|
32
|
-
export type BridgeAdapterConfig = {
|
|
33
|
-
circle?: CircleBridgeAdapterConfig;
|
|
34
|
-
portal?: PortalAdapterConfig;
|
|
35
|
-
};
|
|
36
|
-
export type LiquidityLayerConfig = RouterConfig & BridgeAdapterConfig;
|
|
37
|
-
export declare class LiquidityLayerDeployer extends ProxiedRouterDeployer<LiquidityLayerConfig, LiquidityLayerFactories> {
|
|
38
|
-
constructor(multiProvider: MultiProvider, contractVerifier?: ContractVerifier, concurrentDeploy?: boolean);
|
|
39
|
-
routerContractName(): string;
|
|
40
|
-
routerContractKey<K extends keyof LiquidityLayerFactories>(_: RouterConfig): K;
|
|
41
|
-
router(contracts: HyperlaneContracts<LiquidityLayerFactories>): Router;
|
|
42
|
-
constructorArgs<K extends keyof LiquidityLayerFactories>(_: string, config: LiquidityLayerConfig): Promise<Parameters<LiquidityLayerFactories[K]['deploy']>>;
|
|
43
|
-
initializeArgs(chain: string, config: LiquidityLayerConfig): Promise<any>;
|
|
44
|
-
enrollRemoteRouters(contractsMap: HyperlaneContractsMap<LiquidityLayerFactories>, configMap: ChainMap<LiquidityLayerConfig>, foreignRouters: ChainMap<Address>): Promise<void>;
|
|
45
|
-
deployContracts(chain: ChainName, config: LiquidityLayerConfig): Promise<HyperlaneContracts<LiquidityLayerFactories>>;
|
|
46
|
-
deployPortalAdapter(chain: ChainName, adapterConfig: PortalAdapterConfig, owner: string, router: LiquidityLayerRouter): Promise<PortalAdapter>;
|
|
47
|
-
deployCircleBridgeAdapter(chain: ChainName, adapterConfig: CircleBridgeAdapterConfig, owner: string, router: LiquidityLayerRouter): Promise<CircleBridgeAdapter>;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=LiquidityLayerRouterDeployer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LiquidityLayerRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/LiquidityLayerRouterDeployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
import { eqAddress, objFilter, objMap } from '@hyperlane-xyz/utils';
|
|
3
|
-
import { ProxiedRouterDeployer } from '../../router/ProxiedRouterDeployer.js';
|
|
4
|
-
import { liquidityLayerFactories, } from './contracts.js';
|
|
5
|
-
export var BridgeAdapterType;
|
|
6
|
-
(function (BridgeAdapterType) {
|
|
7
|
-
BridgeAdapterType["Circle"] = "Circle";
|
|
8
|
-
BridgeAdapterType["Portal"] = "Portal";
|
|
9
|
-
})(BridgeAdapterType || (BridgeAdapterType = {}));
|
|
10
|
-
export class LiquidityLayerDeployer extends ProxiedRouterDeployer {
|
|
11
|
-
constructor(multiProvider, contractVerifier, concurrentDeploy = false) {
|
|
12
|
-
super(multiProvider, liquidityLayerFactories, {
|
|
13
|
-
contractVerifier,
|
|
14
|
-
concurrentDeploy,
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
routerContractName() {
|
|
18
|
-
return 'LiquidityLayerRouter';
|
|
19
|
-
}
|
|
20
|
-
routerContractKey(_) {
|
|
21
|
-
return 'liquidityLayerRouter';
|
|
22
|
-
}
|
|
23
|
-
router(contracts) {
|
|
24
|
-
return contracts.liquidityLayerRouter;
|
|
25
|
-
}
|
|
26
|
-
async constructorArgs(_, config) {
|
|
27
|
-
return [config.mailbox];
|
|
28
|
-
}
|
|
29
|
-
async initializeArgs(chain, config) {
|
|
30
|
-
const owner = await this.multiProvider.getSignerAddress(chain);
|
|
31
|
-
if (typeof config.interchainSecurityModule === 'object') {
|
|
32
|
-
throw new Error('ISM as object unimplemented');
|
|
33
|
-
}
|
|
34
|
-
return [
|
|
35
|
-
config.hook ?? ethers.constants.AddressZero,
|
|
36
|
-
config.interchainSecurityModule ?? ethers.constants.AddressZero,
|
|
37
|
-
owner,
|
|
38
|
-
];
|
|
39
|
-
}
|
|
40
|
-
async enrollRemoteRouters(contractsMap, configMap, foreignRouters) {
|
|
41
|
-
this.logger.debug(`Enroll LiquidityLayerRouters with each other`);
|
|
42
|
-
await super.enrollRemoteRouters(contractsMap, configMap, foreignRouters);
|
|
43
|
-
this.logger.debug(`Enroll CircleBridgeAdapters with each other`);
|
|
44
|
-
// Hack to allow use of super.enrollRemoteRouters
|
|
45
|
-
await super.enrollRemoteRouters(objMap(objFilter(contractsMap, (_, c) => !!c.circleBridgeAdapter), (_, contracts) => ({
|
|
46
|
-
liquidityLayerRouter: contracts.circleBridgeAdapter,
|
|
47
|
-
})), configMap, foreignRouters);
|
|
48
|
-
this.logger.debug(`Enroll PortalAdapters with each other`);
|
|
49
|
-
// Hack to allow use of super.enrollRemoteRouters
|
|
50
|
-
await super.enrollRemoteRouters(objMap(objFilter(contractsMap, (_, c) => !!c.portalAdapter), (_, contracts) => ({
|
|
51
|
-
liquidityLayerRouter: contracts.portalAdapter,
|
|
52
|
-
})), configMap, foreignRouters);
|
|
53
|
-
}
|
|
54
|
-
// Custom contract deployment logic can go here
|
|
55
|
-
// If no custom logic is needed, call deployContract for the router
|
|
56
|
-
async deployContracts(chain, config) {
|
|
57
|
-
// This is just the temp owner for contracts, and HyperlaneRouterDeployer#transferOwnership actually sets the configured owner
|
|
58
|
-
const deployer = await this.multiProvider.getSignerAddress(chain);
|
|
59
|
-
const routerContracts = await super.deployContracts(chain, config);
|
|
60
|
-
const bridgeAdapters = {};
|
|
61
|
-
if (config.circle) {
|
|
62
|
-
bridgeAdapters.circleBridgeAdapter = await this.deployCircleBridgeAdapter(chain, config.circle, deployer, routerContracts.liquidityLayerRouter);
|
|
63
|
-
}
|
|
64
|
-
if (config.portal) {
|
|
65
|
-
bridgeAdapters.portalAdapter = await this.deployPortalAdapter(chain, config.portal, deployer, routerContracts.liquidityLayerRouter);
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
...routerContracts,
|
|
69
|
-
...bridgeAdapters,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
async deployPortalAdapter(chain, adapterConfig, owner, router) {
|
|
73
|
-
const mailbox = await router.mailbox();
|
|
74
|
-
const portalAdapter = await this.deployContract(chain, 'portalAdapter', [mailbox], [owner, adapterConfig.portalBridgeAddress, router.address]);
|
|
75
|
-
for (const { wormholeDomain, hyperlaneDomain, } of adapterConfig.wormholeDomainMapping) {
|
|
76
|
-
const expectedCircleDomain = await portalAdapter.hyperlaneDomainToWormholeDomain(hyperlaneDomain);
|
|
77
|
-
if (expectedCircleDomain === wormholeDomain)
|
|
78
|
-
continue;
|
|
79
|
-
this.logger.debug(`Set wormhole domain ${wormholeDomain} for hyperlane domain ${hyperlaneDomain}`);
|
|
80
|
-
await this.runIfOwner(chain, portalAdapter, () => this.multiProvider.handleTx(chain, portalAdapter.addDomain(hyperlaneDomain, wormholeDomain)));
|
|
81
|
-
}
|
|
82
|
-
if (!eqAddress(await router.liquidityLayerAdapters('Portal'), portalAdapter.address)) {
|
|
83
|
-
this.logger.debug('Set Portal as LiquidityLayerAdapter on Router');
|
|
84
|
-
await this.runIfOwner(chain, portalAdapter, () => this.multiProvider.handleTx(chain, router.setLiquidityLayerAdapter(adapterConfig.type, portalAdapter.address)));
|
|
85
|
-
}
|
|
86
|
-
return portalAdapter;
|
|
87
|
-
}
|
|
88
|
-
async deployCircleBridgeAdapter(chain, adapterConfig, owner, router) {
|
|
89
|
-
const mailbox = await router.mailbox();
|
|
90
|
-
const circleBridgeAdapter = await this.deployContract(chain, 'circleBridgeAdapter', [mailbox], [
|
|
91
|
-
owner,
|
|
92
|
-
adapterConfig.tokenMessengerAddress,
|
|
93
|
-
adapterConfig.messageTransmitterAddress,
|
|
94
|
-
router.address,
|
|
95
|
-
]);
|
|
96
|
-
if (!eqAddress(await circleBridgeAdapter.tokenSymbolToAddress('USDC'), adapterConfig.usdcAddress)) {
|
|
97
|
-
this.logger.debug(`Set USDC token contract`);
|
|
98
|
-
await this.runIfOwner(chain, circleBridgeAdapter, () => this.multiProvider.handleTx(chain, circleBridgeAdapter.addToken(adapterConfig.usdcAddress, 'USDC')));
|
|
99
|
-
}
|
|
100
|
-
// Set domain mappings
|
|
101
|
-
for (const { circleDomain, hyperlaneDomain, } of adapterConfig.circleDomainMapping) {
|
|
102
|
-
const expectedCircleDomain = await circleBridgeAdapter.hyperlaneDomainToCircleDomain(hyperlaneDomain);
|
|
103
|
-
if (expectedCircleDomain === circleDomain)
|
|
104
|
-
continue;
|
|
105
|
-
this.logger.debug(`Set circle domain ${circleDomain} for hyperlane domain ${hyperlaneDomain}`);
|
|
106
|
-
await this.runIfOwner(chain, circleBridgeAdapter, () => this.multiProvider.handleTx(chain, circleBridgeAdapter.addDomain(hyperlaneDomain, circleDomain)));
|
|
107
|
-
}
|
|
108
|
-
if (!eqAddress(await router.liquidityLayerAdapters('Circle'), circleBridgeAdapter.address)) {
|
|
109
|
-
this.logger.debug('Set Circle as LiquidityLayerAdapter on Router');
|
|
110
|
-
await this.runIfOwner(chain, circleBridgeAdapter, () => this.multiProvider.handleTx(chain, router.setLiquidityLayerAdapter(adapterConfig.type, circleBridgeAdapter.address)));
|
|
111
|
-
}
|
|
112
|
-
return circleBridgeAdapter;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=LiquidityLayerRouterDeployer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LiquidityLayerRouterDeployer.js","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/LiquidityLayerRouterDeployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { CircleBridgeAdapter__factory, LiquidityLayerRouter__factory, PortalAdapter__factory } from '@hyperlane-xyz/core';
|
|
2
|
-
export declare const liquidityLayerFactories: {
|
|
3
|
-
proxyAdmin: import("@hyperlane-xyz/core").ProxyAdmin__factory;
|
|
4
|
-
timelockController: import("@hyperlane-xyz/core").TimelockController__factory;
|
|
5
|
-
circleBridgeAdapter: CircleBridgeAdapter__factory;
|
|
6
|
-
portalAdapter: PortalAdapter__factory;
|
|
7
|
-
liquidityLayerRouter: LiquidityLayerRouter__factory;
|
|
8
|
-
};
|
|
9
|
-
export type LiquidityLayerFactories = typeof liquidityLayerFactories;
|
|
10
|
-
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,uBAAuB;;;;;;CAKnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CircleBridgeAdapter__factory, LiquidityLayerRouter__factory, PortalAdapter__factory, } from '@hyperlane-xyz/core';
|
|
2
|
-
import { proxiedFactories } from '../../router/types.js';
|
|
3
|
-
export const liquidityLayerFactories = {
|
|
4
|
-
circleBridgeAdapter: new CircleBridgeAdapter__factory(),
|
|
5
|
-
portalAdapter: new PortalAdapter__factory(),
|
|
6
|
-
liquidityLayerRouter: new LiquidityLayerRouter__factory(),
|
|
7
|
-
...proxiedFactories,
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=contracts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,mBAAmB,EAAE,IAAI,4BAA4B,EAAE;IACvD,aAAa,EAAE,IAAI,sBAAsB,EAAE;IAC3C,oBAAoB,EAAE,IAAI,6BAA6B,EAAE;IACzD,GAAG,gBAAgB;CACpB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"liquidity-layer.hardhat-test.d.ts","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/liquidity-layer.hardhat-test.ts"],"names":[],"mappings":""}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import hre from 'hardhat';
|
|
3
|
-
import { MockCircleMessageTransmitter__factory, MockCircleTokenMessenger__factory, MockPortalBridge__factory, MockToken__factory, TestLiquidityLayerMessageRecipient__factory, } from '@hyperlane-xyz/core';
|
|
4
|
-
import { addressToBytes32, objMap } from '@hyperlane-xyz/utils';
|
|
5
|
-
import { TestChainName, test1, test2 } from '../../consts/testChains.js';
|
|
6
|
-
import { TestCoreDeployer } from '../../core/TestCoreDeployer.js';
|
|
7
|
-
import { HyperlaneProxyFactoryDeployer } from '../../deploy/HyperlaneProxyFactoryDeployer.js';
|
|
8
|
-
import { HyperlaneIsmFactory } from '../../ism/HyperlaneIsmFactory.js';
|
|
9
|
-
import { MultiProvider } from '../../providers/MultiProvider.js';
|
|
10
|
-
import { LiquidityLayerApp } from './LiquidityLayerApp.js';
|
|
11
|
-
import { BridgeAdapterType, LiquidityLayerDeployer, } from './LiquidityLayerRouterDeployer.js';
|
|
12
|
-
// eslint-disable-next-line jest/no-disabled-tests
|
|
13
|
-
describe.skip('LiquidityLayerRouter', async () => {
|
|
14
|
-
const localChain = TestChainName.test1;
|
|
15
|
-
const remoteChain = TestChainName.test2;
|
|
16
|
-
const localDomain = test1.domainId;
|
|
17
|
-
const remoteDomain = test2.domainId;
|
|
18
|
-
let signer;
|
|
19
|
-
let local;
|
|
20
|
-
let multiProvider;
|
|
21
|
-
let coreApp;
|
|
22
|
-
let liquidityLayerApp;
|
|
23
|
-
let config;
|
|
24
|
-
let mockToken;
|
|
25
|
-
let circleTokenMessenger;
|
|
26
|
-
let portalBridge;
|
|
27
|
-
let messageTransmitter;
|
|
28
|
-
before(async () => {
|
|
29
|
-
[signer] = await hre.ethers.getSigners();
|
|
30
|
-
multiProvider = MultiProvider.createTestMultiProvider({ signer });
|
|
31
|
-
const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
|
|
32
|
-
const ismFactory = new HyperlaneIsmFactory(await ismFactoryDeployer.deploy(multiProvider.mapKnownChains(() => ({}))), multiProvider);
|
|
33
|
-
coreApp = await new TestCoreDeployer(multiProvider, ismFactory).deployApp();
|
|
34
|
-
const routerConfig = coreApp.getRouterConfig(signer.address);
|
|
35
|
-
const mockTokenF = new MockToken__factory(signer);
|
|
36
|
-
mockToken = await mockTokenF.deploy();
|
|
37
|
-
const portalBridgeF = new MockPortalBridge__factory(signer);
|
|
38
|
-
const circleTokenMessengerF = new MockCircleTokenMessenger__factory(signer);
|
|
39
|
-
circleTokenMessenger = await circleTokenMessengerF.deploy(mockToken.address);
|
|
40
|
-
portalBridge = await portalBridgeF.deploy(mockToken.address);
|
|
41
|
-
const messageTransmitterF = new MockCircleMessageTransmitter__factory(signer);
|
|
42
|
-
messageTransmitter = await messageTransmitterF.deploy(mockToken.address);
|
|
43
|
-
config = objMap(routerConfig, (chain, config) => {
|
|
44
|
-
return {
|
|
45
|
-
...config,
|
|
46
|
-
circle: {
|
|
47
|
-
type: BridgeAdapterType.Circle,
|
|
48
|
-
tokenMessengerAddress: circleTokenMessenger.address,
|
|
49
|
-
messageTransmitterAddress: messageTransmitter.address,
|
|
50
|
-
usdcAddress: mockToken.address,
|
|
51
|
-
circleDomainMapping: [
|
|
52
|
-
{
|
|
53
|
-
hyperlaneDomain: localDomain,
|
|
54
|
-
circleDomain: localDomain,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
hyperlaneDomain: remoteDomain,
|
|
58
|
-
circleDomain: remoteDomain,
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
},
|
|
62
|
-
portal: {
|
|
63
|
-
type: BridgeAdapterType.Portal,
|
|
64
|
-
portalBridgeAddress: portalBridge.address,
|
|
65
|
-
wormholeDomainMapping: [
|
|
66
|
-
{
|
|
67
|
-
hyperlaneDomain: localDomain,
|
|
68
|
-
wormholeDomain: localDomain,
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
hyperlaneDomain: remoteDomain,
|
|
72
|
-
wormholeDomain: remoteDomain,
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
beforeEach(async () => {
|
|
80
|
-
const LiquidityLayer = new LiquidityLayerDeployer(multiProvider);
|
|
81
|
-
const contracts = await LiquidityLayer.deploy(config);
|
|
82
|
-
liquidityLayerApp = new LiquidityLayerApp(contracts, multiProvider, config);
|
|
83
|
-
local = liquidityLayerApp.getContracts(localChain).liquidityLayerRouter;
|
|
84
|
-
});
|
|
85
|
-
it('can transfer tokens via Circle', async () => {
|
|
86
|
-
const recipientF = new TestLiquidityLayerMessageRecipient__factory(signer);
|
|
87
|
-
const recipient = await recipientF.deploy();
|
|
88
|
-
const amount = 1000;
|
|
89
|
-
await mockToken.mint(signer.address, amount);
|
|
90
|
-
await mockToken.approve(local.address, amount);
|
|
91
|
-
await local.dispatchWithTokens(remoteDomain, addressToBytes32(recipient.address), mockToken.address, amount, BridgeAdapterType.Circle, '0x01');
|
|
92
|
-
const transferNonce = await circleTokenMessenger.nextNonce();
|
|
93
|
-
const nonceId = await messageTransmitter.hashSourceAndNonce(localDomain, transferNonce);
|
|
94
|
-
await messageTransmitter.process(nonceId, liquidityLayerApp.getContracts(remoteChain).circleBridgeAdapter.address, amount);
|
|
95
|
-
await coreApp.processMessages();
|
|
96
|
-
expect((await mockToken.balanceOf(recipient.address)).toNumber()).to.eql(amount);
|
|
97
|
-
});
|
|
98
|
-
it('can transfer tokens via Portal', async () => {
|
|
99
|
-
const recipientF = new TestLiquidityLayerMessageRecipient__factory(signer);
|
|
100
|
-
const recipient = await recipientF.deploy();
|
|
101
|
-
const amount = 1000;
|
|
102
|
-
await mockToken.mint(signer.address, amount);
|
|
103
|
-
await mockToken.approve(local.address, amount);
|
|
104
|
-
await local.dispatchWithTokens(remoteDomain, addressToBytes32(recipient.address), mockToken.address, amount, BridgeAdapterType.Portal, '0x01');
|
|
105
|
-
const originAdapter = liquidityLayerApp.getContracts(localChain).portalAdapter;
|
|
106
|
-
const destinationAdapter = liquidityLayerApp.getContracts(remoteChain).portalAdapter;
|
|
107
|
-
await destinationAdapter.completeTransfer(await portalBridge.mockPortalVaa(localDomain, await originAdapter.nonce(), amount));
|
|
108
|
-
await coreApp.processMessages();
|
|
109
|
-
expect((await mockToken.balanceOf(recipient.address)).toNumber()).to.eql(amount);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
//# sourceMappingURL=liquidity-layer.hardhat-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"liquidity-layer.hardhat-test.js","sourceRoot":"","sources":["../../../src/middleware/liquidity-layer/liquidity-layer.hardhat-test.ts"],"names":[],"mappings":"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"}
|