Skip to content

Instantly share code, notes, and snippets.

@PraneshASP
PraneshASP / Test.t.sol
Last active February 13, 2024 05:11
Using Mesc in foundry tests to avoid hardcoding urls.
// See Mesc Reference for setup: https://github.com/paradigmxyz/mesc/tree/main/cli#reference
contract TestSetup is Test {
function fetchRpcUrlFromMesc(string memory networkName) internal returns (string memory url) {
string[] memory inputs = new string[](3);
inputs[0] = "mesc";
inputs[1] = "url";
inputs[2] = networkName;
@Shungy
Shungy / EIP138128.md
Last active December 26, 2023 22:21
EIP138128: Custom selector and encodings (Very early draft)

Using LEB128 encoding scheme for custom abi/interface.

ERC-138128: Custom function selector and calldata encoding scheme declaration standard

  • A contract SHOULD use ERC-165 standard to declare its support for ERC-138128 standard.
  • A contract supporting ERC-138128 MUST have these two view functions: customSelectors() and customEncodings().

customSelectors()

This function is used to declare alternative function selectors for any number of standard function signatures. This function MUST have the following interface.

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract TryCatchCaller {
TryCatchCallee calee;
constructor () {
calee = new TryCatchCallee();
"use strict";
const defaultOptions = {
reverse: true,
python: false
}
function merge(sequences) {
let result = [];
sequences = sequences.map(s => s.slice());
@devtooligan
devtooligan / TestIsPayable.sol
Created July 1, 2023 19:54
Utility to check if a function is payable
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "forge-std/Test.sol";
contract Utility {
error BadCalldata();
error NonPayable();
error Payable();
error NoCode();
@MerlinEgalite
MerlinEgalite / CreateSelfdestruct.sol
Last active May 26, 2023 06:24
Tornado Cash Governance Hack
pragma solidity >=0.8.0;
import "forge-std/Test.sol";
import "forge-std/console2.sol";
contract ContractA {
function destroy() public {
selfdestruct(payable(0));
}
@shouc
shouc / exp.sol
Created May 8, 2023 01:51
Dragonfly CTF Solution (Score: 16406)
// by https://twitter.com/publicqi & https://twitter.com/shoucccc
contract PuzzleBoxSolution {
constructor() payable {}
fallback() payable external {
if (msg.data.length > 32) {
assembly{
// let x := 0x80
let target := 0x69209d8a7d258515ec9a4d25f7be1db85cb1b826
@frangio
frangio / ascii.sol
Last active October 19, 2024 06:41
Solidity function to check if a string contains only printable ASCII characters and is at most 32 characters long. Branch-free "vectorized" implementation.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
function isAsciiPrintableShortString(string memory str) pure returns (bool) {
unchecked {
uint256 b = uint256(bytes32(hex"0101010101010101010101010101010101010101010101010101010101010101"));
bytes32 chars = bytes32(bytes(str));
uint256 len = bytes(str).length;
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;
import { Script } from "forge-std/Script.sol";
abstract contract BaseScript is Script {
/// @dev Included to enable compilation of the script without a $MNEMONIC environment variable.
string internal constant TEST_MNEMONIC = "test test test test test test test test test test test junk";
/// @dev Needed for the deterministic deployments.