Skip to content

Instantly share code, notes, and snippets.

View SpiralOutDotEu's full-sized avatar
🤯
If ZK hasn't profoundly shocked you, you haven't understood it yet

Nikos Koumbakis SpiralOutDotEu

🤯
If ZK hasn't profoundly shocked you, you haven't understood it yet
View GitHub Profile
@SpiralOutDotEu
SpiralOutDotEu / react-app-env.d.ts
Last active October 28, 2024 13:10
window ethereum not found
// src/react-app-env.d.ts
// for ethers v6
/// <reference types="react-scripts" />
import { BrowserProvider, Eip1193Provider } from "ethers/types/providers";
declare global {
interface Window {
ethereum: Eip1193Provider & BrowserProvider;
}
@SpiralOutDotEu
SpiralOutDotEu / ArrayContract.sol
Created September 29, 2024 12:55
Solidity Library Use
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./ArrayLib.sol";
contract ArrayContract {
using ArrayLib for uint256[]; // Import the library for use with uint256[] arrays
uint256[] private arr; // The array to store uint256 elements
@SpiralOutDotEu
SpiralOutDotEu / FunctionInjection.sol
Last active September 29, 2024 12:58
Solidity function injection
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Reference: https://ethereum.stackexchange.com/questions/117725/passing-functions-as-parameters-how-to-invoke
contract A {
enum Action { Walk, Fly, Swim }
function walk() internal pure returns (uint) {
{
"@context": [
{
"@protected": true,
"@version": 1.1,
"id": "@id",
"type": "@type",
"DriversLicense": {
"@context": {
"@propagate": true,
@SpiralOutDotEu
SpiralOutDotEu / HelloWormhole.sol
Last active June 25, 2024 20:42
Basic Wormhole interaction
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import "wormhole-solidity-sdk/interfaces/IWormholeRelayer.sol";
import "wormhole-solidity-sdk/interfaces/IWormholeReceiver.sol";
contract HelloWormhole is IWormholeReceiver {
event GreetingReceived(string greeting, uint16 senderChain, address sender, address senderContract);
uint256 constant GAS_LIMIT = 50_000;
@SpiralOutDotEu
SpiralOutDotEu / EthersTxGasCalculations.js
Last active February 26, 2024 17:35
Ethers calculate transaction fee
import { ethers } from "ethers";
// Using this if cannot serialize bigint
BigInt.prototype.toJSON = function () {
const int = Number.parseInt(this.toString());
return int ?? this.toString();
};
// Define provider
const provider = new ethers.JsonRpcProvider(RPC_URL)
@SpiralOutDotEu
SpiralOutDotEu / TheGovernor.sol
Last active November 7, 2023 23:04
erc721a DAO
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/governance/Governor.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";

Conventional Commit Messages

See how a minor change to your commit message style can make a difference. Examples

Have a look at CLI util git-conventional-commits to ensure this conventions and generate changelogs

Commit Formats

Default

@SpiralOutDotEu
SpiralOutDotEu / TheAttacker.sol
Last active August 17, 2023 13:29
A minimal Reentrancy solidity example
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
// Reference: https://www.quicknode.com/guides/ethereum-development/smart-contracts/a-broad-overview-of-reentrancy-attacks-in-solidity-contracts#explaining-reentrancy-with-custom-solidity-contracts
import "./TheBank.sol";
contract TheAttacker {
TheBank public theBank;
constructor(address _thebankAddress) {