I don’t use GitHub, for many reasons. But It doesn’t mean I don’t like to share and contribute. A lot of developers rely on GitHub to showcase their work to employers and head-hunters, and I understand. But I try to find other ways to accomplish that. This page is one of them.

You may clone all the code in this page from my personal Git server.

Please send me suggestions, questions, or bug reports.

git clone git://git.zasnicoff.com/zasnicoff.com.git

Solidity, Assembly, JavaScript, Hardhat

Gas Optimization

Why do you want to save a little gas? Because you can.

To be continued…


We are talking about common-place Reentrancy attacks here. If you don’t know what that is, I’ll wait for you, please come back later.

To be continued…

Access Control

Eventually you will need to assign different roles and access levels for accounts to call your contract.

To be continued…

Storage, Memory, Calldata, Code, Stack

You either understand the EVM, or you memorize some keywords and hope that they will work.

To be continued…


More than a few developers still can’t explain the difference between providers, signers and contract objects.

To be continued…


Avoid mistakes that I did.

To be continued…

Create2, Deterministic Contract Address

Mostly to be able to delete and re-deploy contracts. But maybe you have CPU and time to pick your own address:


To be continued…

Atomic Token Swaps

Interesting secret+timelock combination to guarantee swaps, even between chains

To be continued…

ABI Interface, Encode, Decode, Selectors

Contrary to popular belief, the EVM is completely oblivious to function selectors or the existence of the ABI specification.

To be continued…

Solidity ^0.8.4 ‘Error’ Statement

Why? So that your contract can revert with a dynamic message.

To be continued…

call(), staticcall(), delegatecall()

Another great topic to better understand the EVM.

To be continued…

call() vs. transfer() vs. send()

Just kidding. You HAVE TO know this.

Hardhat test, chained Chai conditions

Could not find answers online when I needed it. Hopefully you can find it here.

To be continued…