Skip to content

Instantly share code, notes, and snippets.

@devtooligan
devtooligan / pureConsole.sol
Last active January 21, 2024 14:25
console.log from pure functions h/t @z0age
// @author original POC by @z0age
library pureConsole {
/*********************
* string + uint256
********************/
function log(string memory errorMessage, uint256 value) internal pure {
#!/bin/bash
alias c='code .'
alias cdh='cd $HOME'
alias ls='ls -la'
alias sl="ls"
alias cls='clear'
alias g='git status'
alias gap='git add -p'
alias gl='git log'
@devtooligan
devtooligan / UniV3LPWrapper.sol
Last active December 26, 2023 22:43
There are 2 critical vulnerabilities in here. Can you find them?
/// @notice These functions are part of a contract that
/// wraps a user's Uniswap V3 liquidity positions in an ERC20 token, `wrappedToken`.
// *** wrappedToken is a standard ERC20 token. ***
uint256 public protocolFee = 5;
function deposit(
IUniswapV3Pool pool,
int24 tickLower,
int24 tickUpper,
@devtooligan
devtooligan / OptimizedMint150.sol
Created November 2, 2022 19:36
RareSkills challenge
//SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.15;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "hardhat/console.sol";
// You may not modify this contract
contract NotRareToken is ERC721 {
mapping(address => bool) private alreadyMinted;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import "forge-std/Test.sol";
contract TestDeleteMappingInStruct is Test {
/// @param enabled Whether the token is enabled or not
/// @param balances Mapping of user address to balance
struct Token {
bool enabled;
@devtooligan
devtooligan / TestDeleteStructWDynamicArray.sol
Created October 11, 2022 17:44
Test if Solidity properly handles `delete` with a dynamic array inside a struct (inside a mapping)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import "forge-std/Test.sol";
contract Test67 is Test {
struct S2 {
uint256 a2;
uint256 b2;
}
@devtooligan
devtooligan / importVSCodeSettings.sh
Last active October 20, 2022 11:15
importVSCodeSettings
# This is a bash function that will copy a vscode settings.json file into the current directory and randomly select a color scheme.
# Step 1: Create a settting.json file somewhere which at least contains this section. Feel free to add your favorite settings to this.
{
"workbench.colorCustomizations": {
"titleBar.activeForeground": "FOREGROUND",
"titleBar.inactiveForeground": "FOREGROUND",
"titleBar.activeBackground": "BACKGROUND",
"titleBar.inactiveBackground": "BACKGROUND"
@devtooligan
devtooligan / test.t.sol
Created August 23, 2022 02:08
Foundry Invariant test setup with inherited contracts
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
import "forge-std/Test.sol";
contract Pool {
uint256 public immutable var1;
uint256 public var2;
constructor(uint256 var1_) {
var1 = var1_;
@devtooligan
devtooligan / return a string the Seaport way
Last active June 10, 2023 17:01
Returning a string in Huff, the "Seaport" way
Goal:
0x00: 0000000000000000000000000000000000000000000000000000000000000020 (offset)
0x20: 0000000000000000000000000000000000000000000000000000000000000003 (length)
0x40: 544b4e0000000000000000000000000000000000000000000000000000000000 (“TKN”)
Normal way:
Step 1)
0x20 0x00 MSTORE
Memory layout:
@devtooligan
devtooligan / 0ERC20Main.huff
Created July 24, 2022 00:45
Huff -- Inheritance pattern for CONSTRUCTOR() / MAIN()
// This is the main file that will be compiled
/* Imports */
#include "./ERC20.huff"
#include "./utils/Ownable.huff"
#define macro CONSTRUCTOR() = takes (0) returns (0) {
OWNABLE_CONSTRUCTOR()
ERC20_CONSTRUCTOR()
}