Bu derste "Data Locations" konusunu işledik
TLDR; EVM'de 3 çeşit hafıza alanı (data location) bulunur.
storage
: Bu veriler blokzincirde tutulurmemory
: Bu veriler fonksiyon çağrıldıktan itibaren EVM tarafından ayrılan özel bir bölgeder tutulur ve fonksiyon bittiğinde silinir.calldata
: Bu veriler fonksiyon çağrılırken, çağrının (transaction) içerisinde tutulur (msg.data
). Bu veriler sadece okunabilir.
bytes
, string
, uint256[]
, struct
gibi referans tipleri fonksiyonlarda
kullanılırken bu verilerin hangi hafıza alanından alınacağı belirtilmelidir.
calldata
sadece fonksiyon parametreleri için kullanılabilirstorage
sadece fonksiyon gövdesinde kullanılabilir
function(string memory/calldata parameterString) external {
string memory/storage bodyString = "";
}