@shieldswap/l1-transact
v0.0.15
Published
L1 Transact allows to call any function on Ethereum L1 from Aztec L2.
Downloads
954
Readme
L1 Transact by ShieldSwap
L1 Transact allows to call any function on Ethereum L1 from Aztec L2.
Installation
npm add @shieldswap/l1-transact
Examples
DCA example
Continuously buys WETH with USDC. Under 100 lines of code. https://github.com/ShieldSwap/dca-example.
Other examples
import { L1TransactSdk } from '@shieldswap/l1-transact'
const ethersAccount = new ethers.Wallet('0x<private key>')
const aztecAccount = (await getInitialTestAccountsWallets(pxe))[0];
const sdk = await L1TransactSdk.deploy({
pxeUrl: PXE_URL,
l1Deployer: ethersAccount,
l2Deployer: aztecAccount,
});
// register a token on L2
import { CurrencyAmount, Token } from '@uniswap/sdk-core';
const usdc = new Token(...);
await sdk.l2RegisterTokenIfNotRegistered(usdc);
// example of bridging tokens from L1 to L2
await sdk.bridgeTokensFromL1ToL2({
l1From: ethersAccount,
l2To: aztecAccount,
amounts: [
CurrencyAmount.fromRawAmount(
usdc,
"123" // raw units
),
],
});
// example of bridging tokens from L2 to L1
await sdk.bridgeTokensFromL2ToL1({
l2From: aztecAccount,
l1To: ethersAccount,
amounts: [
CurrencyAmount.fromRawAmount(
usdc,
"123" // raw units
),
],
});
// example of executing a trade on L1 using L2 tokens
const amountIn = CurrencyAmount.fromRawAmount(usdc, "100000");
const amountOutMin = CurrencyAmount.fromRawAmount(weth, "1");
await sdk.transactOnL1WithL2Tokens({
l2Account,
amountsIn: [amountIn],
amountsOutMin: [amountOutMin],
call: {
to: "0x1234", // uniswap router address
data: "0x1111" // uniswap router calldata
},
});