Skip to content

Instantly share code, notes, and snippets.

View voith's full-sized avatar
👨‍🎓
Building on top of Ethereum

Voith voith

👨‍🎓
Building on top of Ethereum
View GitHub Profile
@voith
voith / gas_price_feed.py
Last active December 18, 2023 18:07
Snippet for creating a gas price in USDC feed
ORACLE_ABI = """[{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_accessController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"current","type":"int256"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedAt","type":"uint256"}],"name":"AnswerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"startedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"startedAt","type":"uint256"}],"name":"NewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","
@voith
voith / BeaconProxyTest.t.sol
Last active August 31, 2023 21:37
A basic demo of the BeaconProxy pattern in solidity with usage demonstrated using foundry tests
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
import "forge-std/Test.sol";
import "forge-std/console.sol";
import {BeaconProxy} from "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {UpgradeableBeacon} from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
@voith
voith / read_private_var.sol
Last active August 24, 2023 12:55
Snippet for reading private variables using foundry
function testReadPrivateVars() external {
for(uint i=0; i < 100; i++){
console.logBytes32(vm.load(address, bytes32(i)));
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract ChainlinkTCAPAggregatorV3 {
struct RoundData {
uint80 roundId;
uint80 answeredInRound;
int256 answer;
uint256 startedAt;
uint256 updatedAt;
@voith
voith / redbeat_run_tasks.py
Created June 6, 2023 12:16
Script to run redbeat tasks
from collections import namedtuple
from rebate_program.celery import app # get the celery app object from your project
from redbeat.schedulers import RedBeatScheduler, acquire_distributed_beat_lock
beat = RedBeatScheduler(app)
Sender = namedtuple('sender', ['scheduler'])
sender = Sender(beat)
acquire_distributed_beat_lock(sender)
print(beat.schedule)
@voith
voith / Deploy.s.sol
Created January 3, 2023 16:20
Pre compute address while deploying contracts with foundry
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.5;
import "forge-std/Script.sol";
import "forge-std/console.sol";
contract Greeter {
string greeting;
constructor(string memory _greeting) {
@voith
voith / ComputeAddress.t.sol
Last active January 3, 2023 16:04
Pre compute contract address using foundry.
// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;
import "forge-std/Test.sol";
contract Greeter {
string greeting;
constructor(string memory _greeting) {
@voith
voith / TestUpgradeable.sol
Created December 20, 2022 20:59
Upgradeable Pattern in solidity using OZ
// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;
import "forge-std/Test.sol";
import "forge-std/console.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol";
contract Greeter is Ownable {
@voith
voith / prime_reciprocals.py
Created May 13, 2022 19:45
The Reciprocals of Primes
def repeating_digit(num: int) -> int:
"""
code inspired by
The Reciprocals of Primes - Numberphile
on youtube: https://www.youtube.com/watch?v=DmfxIhmGPP4&ab_channel=Numberphile
Parameter
num: a prime number
returns: The number of repeating digits of reciprocal of a prime number
def ones(n):
return sum(10 ** i for i in range(n))
def print_pattern(n):
for i in range(1, n+1):
num = ones(i)
print(" " * (2*(n-i)), end='')
print(f"{num} x {num} = {num * num}", end="\n\n")