Skip to content

Instantly share code, notes, and snippets.

@chfast
chfast / README.md
Last active August 13, 2021 03:18
EVM stack height and memory size stats for Ethereum mainnet
@chfast
chfast / uint384.yul
Created May 5, 2020 17:45
384-bit integer implementation in EVM
object "test" {
code {
// This assumes each limb is 256-bit and the half of the second limb is not dirty.
function add_with_carry_384_orig(x1, x2, y1, y2) -> out1, out2, carry {
// limb 1
out1 := add(x1, y1)
carry := lt(out1, x1)
// limb 2

webassembly

(module
    (memory 1)
    (func (export "test") (param i32 i32) (result i32)
      get_local 0
      get_local 1
      i32.xor
 )
This file has been truncated, but you can view the full file.
aleth, a C++ Ethereum client
INFO 12-16 08:52:24 aleth net Id: ##0c61fc7f…
INFO 12-16 08:52:24 aleth net ENR: [ seq=12 id=v4 key=020c61fc… ip=3.132.57.159 tcp=30303 udp=30303 ]
aleth 1.8.0-alpha.1
INFO 12-16 08:52:26 p2p  info UPnP device not found.
INFO 12-16 08:52:26 p2p  net Active peer count: 0
INFO 12-16 08:52:26 p2p  net Looking for peers...
Node ID: enode://0c61fc7fd20b3a5cabe69a37011b271b61fc405a74dabe44f7ab4ea32791b64e7745be2e247b7c7f9150636a9afbbf74aff285381e5478b919bcb5c76c193dec@127.0.0.1:30303
INFO 12-16 08:52:26 aleth rpc JSON-RPC socket path: /home/ubuntu/.ethereum/geth.ipc
JSONRPC Admin Session Key: tFVuCgml8Io=
@chfast
chfast / aleth.log
Created November 12, 2019 17:08
Aleth: Huge exception dump
INFO 11-12 17:04:15 eth client 308 blocks imported in 1650 ms (186.656 blocks/s) in #987928
INFO 11-12 17:04:16 eth client 277 blocks imported in 1201 ms (230.612 blocks/s) in #988205
INFO 11-12 17:04:17 eth client 249 blocks imported in 941 ms (264.429 blocks/s) in #988454
INFO 11-12 17:04:18 eth client 249 blocks imported in 710 ms (350.666 blocks/s) in #988703
WARN 11-12 17:04:18 eth warn Exception thrown in Worker thread: /home/chfast/Projects/ethereum/aleth/libethereum/EthereumCapability.cpp(1008): Throw in function dev::eth::EthereumPeer& dev::eth::EthereumCapability::peer(const NodeID&)
Dynamic exception type: boost::wrapexcept<dev::eth::PeerDisconnected>
[dev::tag_nodeID*] = 700f30d9d0ef10d2bc43a18baaf94f2c4b865ddef582b2b9bcaf0039148d7baa76ded66665fbb86d74d21b3635ff2f605d0aa2861a615cd6ef000690a4cccb38
WARN 11-12 17:04:18 p2p ethcap Peer ##10f5c3b9… causing an exception: /home/chfast/Projects/ethereum/aleth/libethereum/EthereumCapability.cpp(1008): Throw in function dev::eth::EthereumPee
@chfast
chfast / take_year_from_git.py
Created September 23, 2019 15:46
A script to update copyright notice with a year in which a file was created
import subprocess
import glob
def update_year_in_file(filename):
print('- ' + filename)
c = subprocess.run(
f"git log --diff-filter=A --follow --format=%ad --date=format:'%Y' -- {filename} | tail -1",
shell=True, capture_output=True)
@chfast
chfast / benchmark_comparison.txt
Created September 17, 2019 15:56
Semi-final evmone 0.1 vs evmone 0.2 performance comparison
Comparing bin/evmone-bench-0.1.1 to ../bench-gcc9/bin/evmone-bench
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------------------
blake2b_huff/analysis -0.3575 -0.3575 41 26 41 26
blake2b_huff/empty -0.3912 -0.3912 66 40 66 40
blake2b_huff/2805nulls -0.4844 -0.4844 569 293 569 293
blake2b_huff/5610nulls -0.4926 -0.4926 1073 545 1073 545
blake2b_huff/8415nulls -0.4904 -0.4904 1551 790 1551 790
blake2b_huff/65536nulls -0.4987
#include <stdint.h>
#include <stdio.h>
#include <time.h>
int32_t interp(unsigned char *code, int initval)
{
int pc = 0;
int32_t val = initval;
while(1) {
switch(code[pc++]) {
@chfast
chfast / keccak.wat
Last active August 16, 2019 17:05
Keccak.wasm
(module
(type (;0;) (func (param i32)))
(type (;1;) (func (param i32 i32 i32) (result i32)))
(type (;2;) (func (param i32 i32 i32)))
(import "env" "memory" (memory (;0;) 256 256))
(func (;0;) (type 0) (param i32)
(local i32 i32 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64)
local.get 0
i64.load
local.set 20
@chfast
chfast / mul768.wat
Last active June 20, 2019 19:57
768-bit multiplication implemented in wasm
;; C ABI: void mul768(uint64_t* product, const uint64_t* a, const uint64_t* b)
(module
(type (;0;) (func (param i32 i32 i32)))
(import "env" "memory" (memory (;0;) 256 256))
(func (;0;) (type 0) (param i32 i32 i32)
(local i32 i32 i32 i32 i32 i32 i64 i64 i64 i64 i64 i64 i64 i64)
i32.const 11
local.set 5
loop ;; label = @1