криптозомби (солидность) зачем использовать хранилище вместо памяти? - PullRequest
0 голосов
/ 31 мая 2018

В такой функции, как getKitty, они ( CryptoZombies Tutorial Tool ) сначала создают набор хранилища, а затем используют поля в структуре.Но почему бы не использовать память вместо хранения?Память обходится дешевле, а также сможет использовать все поля.Интересно, почему они используют хранилище?

function getKitty(uint256 id) external view returns (
    bool isGestating,
    bool isReady,
    uint256 cooldownIndex,
    uint256 nextActionAt,
    uint256 siringWithId,
    uint256 birthTime,
    uint256 matronId,
    uint256 sireId,
    uint256 generation,
    uint256 genes
    ) {
    Kitty storage kit = kitties[id];

// if this variable is 0 then it's not gestating
isGestating = (kit.siringWithId != 0);
isReady = (kit.cooldownEndBlock <= block.number);
cooldownIndex = uint256(kit.cooldownIndex);
nextActionAt = uint256(kit.cooldownEndBlock);
siringWithId = uint256(kit.siringWithId);
birthTime = uint256(kit.birthTime);
matronId = uint256(kit.matronId);
sireId = uint256(kit.sireId);
generation = uint256(kit.generation);
genes = kit.genes;
}

1 Ответ

0 голосов
/ 01 июня 2018

Эта функция определяется как «внешний вид».Внешние функции просмотра не стоят никакого газа, когда они вызываются пользователем извне, поскольку они ничего не изменяют в состоянии ethereum.Я получил это от Delegatecall.com

...