Давайте сделаем медвежий рынок немного веселее. С этого момента я буду публиковать некоторые загадки разработчиков EOSIO через нерегулярные промежутки времени. Вот первый:
❔ Какой максимальный объем оперативной памяти может потреблять контракт EOSIO при хранении одной переменной uint64_t?
Подсказка. Это не 64-битная версия.
Представьте, что у вас есть struct
с одной переменной класса uint64_t
, и вы создаете таблицу, в которой хранится эта структура. Сколько оперативной памяти может потреблять один вызов table.emplace
?
#include <eosio/eosio.hpp>
using namespace eosio;
CONTRACT puzzle1 : public contract {
public:
using contract::contract;
puzzle1(eosio::name receiver, eosio::name code, eosio::datastream<const char *> ds)
: contract(receiver, code, ds) {}
struct [[eosio::table("puzzle")]] puzzle {
// only variable is this one
uint64_t value;
};
ACTION insert(uint64_t value) {
puzzle_t _puzzle(get_self(), name("puzzle").value);
_puzzle.emplace(get_self(), [&](auto &x) { x.value = value; });
}
};
❕ Я подарю 5 EOS тому, кто первым опубликует правильный ответ в Твиттере. 🤑
Вот я вызываю действие insert
, которое сохраняет одно значение uint64_t
.
Я объявлю победителя и опубликую эту транзакцию с правильным ответом через неделю.
Первоначально опубликовано на cmichel.io