Sending Ether Cheat Sheet
TLDR
Address.sendValue(addr, amount)
(bool success, ) = addr.call{value: amount}("")
// Reverse bytes received in calldata (abcd -> dcba) | |
// https://twitter.com/huff_language/status/1583894073487654913 | |
// code length 206 | |
/// @author Philippe Dumonet <philippe@dumo.net> -- https://twitter.com/real_philogy/status/1584304102418223104 | |
/// @author karma (@0xkarmacoma) -- https://twitter.com/0xkarmacoma/status/1584239664310779904 | |
/// @author kaden.eth (@0xKaden) -- https://twitter.com/0xKaden/status/1584280521089376256/ | |
#define macro reverse_word() = takes(1) returns(1) { | |
// [x0] | |
0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff |
Address.sendValue(addr, amount)
(bool success, ) = addr.call{value: amount}("")
Using newer compiler versions and the optimizer gives gas optimizations and additional safety checks for free!
The advantages of versions 0.8.*
over <0.8.0
are:
0.8.0
(can be more gas efficient than some
library based safemath).0.8.2
, leads to cheaper runtime gas.
Especially relevant when the contract has small functions. For# quine.etk | |
# ⬜ => ⬜ | |
# A quine is a computer program which takes no input and produces a copy of its own source code as its only output. | |
# 0x80...f3 is the compiled code excluding the push16 instruction (from dup1 to return) | |
push16 0x8060801b17606f5953600152602136f3 | |
# --- stack --- | |
dup1 # code code | |
push1 128 # 128 code code |