0.0.15 • Published 24 days ago
@shieldswap/l1-transact v0.0.15
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
},
});