A tiny helper around the Morpho Mempool API.
npm install @morpho-dev/mempoolA tiny helper around the Morpho Mempool API.
``bash`
npm i @morpho-dev/mempoolor
pnpm add @morpho-dev/mempool
`ts
import { Mempool, Offer } from "@morpho-dev/mempool";
import { http, createWalletClient } from "viem";
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
import { mainnet } from "viem/chains";
const client = createWalletClient({
chain: mainnet,
account: privateKeyToAccount(generatePrivateKey()),
transport: http("
});
const mempool = Mempool.connect({ client, mempoolAddress: "
" });const now = Math.floor(Date.now() / 1000);
const offer = Offer.from({
offering: wallet.account.offering,
assets: 1000000n,
rate: 1000000n,
maturity: now + 60 60 24 * 30,
expiry: now + 60 60 24 * 10,
nonce: 2n,
buy: true,
chainId: 1n,
loanToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
collaterals: [
{
asset: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
oracle: "0x986b5E1e1755e3C2440e960477f25201B0a8bbD4",
lltv: 860000000000000000n,
},
],
callback: {
offering: zeroAddress,
data: "0x",
gasLimit: BigInt(0),
},
});
offer.signature = await Offer.sign(offer, client);
const signedOffer = await mempool.add({ offer });
console.log(signedOffer);
`
`ts
import { Mempool } from "@morpho-dev/mempool";
const client = createWalletClient({
chain: mainnet,
account: privateKeyToAccount(generatePrivateKey()),
transport: http("
});
const mempool = Mempool.connect({ client, mempoolAddress: "
" });const offers = await mempool.get();
console.log(offers);
`
`ts
import { Mempool } from "@morpho-dev/mempool";
const client = createWalletClient({
chain: mainnet,
account: privateKeyToAccount(generatePrivateKey()),
transport: http("
});
const mempool = Mempool.connect({ client, mempoolAddress: "
" });const unwatch = mempool.watch({
polling: { interval: 30_000 }, // 30 seconds
onOffers: async (offers) => {
console.log(offers); // add custom logic in the callback
},
});
unwatch(); // Stop watching for new offers
``