Давайте сделаем медвежий рынок немного веселее. С этого момента я буду публиковать некоторые загадки разработчиков 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