Что такое RAM в Блокчейне EOS?
RAM (Random Access Memory) количество памяти доступной для хранения данных (например имена аккаунтов, ключи, балансы, состояние контрактов) в блокчейне EOSIO.
RAM – ограниченный ресурс, его количество определяется параметром max_ram_size (64 GiB) в контракте eosio.system. Чтобы получить нужное вам количество памяти в KiB для хранения своей информации в блокчейне EOSIO, требуется их купить. Для покупки и продажи RAM существует внутренний рынок, где текущая цена RAM относительно EOS токенов настраивается автоматически при помощи алгоритма Bancor (соотношением спроса и предложения). Чем меньше RAM доступной для покупки, тем выше цена, тем выше стимул продавать RAM. Если цена на RAM будет продолжать увеличиваться до размеров невыгодных для использования блокчейна EOSIO, может быть добавлено больше RAM решением 15 из 21 производителей блоков (которые фактически поставляют RAM). Это увеличит количество доступного RAM для покупки, что приведет с снижению цены.
[Решение про увеличение количества RAM в два раза с 64 GiB до 128 GiB было принято 26.07.2018. Увеличение будет проходить постепенно, с каждым новым блоком количество доступного RAM будет увеличиваться на 1 KiB (т.е на 168,75 MiB в день) до тех пор пока количество RAM не достигнет 128 GiB]
RAM не может быть передана от аккаунта к аккаунту. Пользователи могут лишь приобретать RAM у системы или продавать RAM обратно в систему через контракт eosio.system при помощи следующих команд.
Купить 10 KiB
cleos system buyram payer_account receiver_account --kbytes 10
Или купить RAM на 1 EOS
cleos system buyram payer_account receiver_account "1 EOS"
Контракт системы eosio использует доходы с продажи RAM на обеспечение ликвидности тем кто хочет продать RAM. При покупке RAM с payer аккаунта отправляется плата в EOS токенах в системный контракт, и только receiver может продать купленный RAM (payer_account и receiver_account могут быть одним и тем же аккаунтом). Каждый раз, когда кто-то покупает или продает RAM, взимается комиссия в размере 0.5%. Собранная комиссия в EOS токенах снимается с оборота (сжигается).
Продать RAM
cleos system sellram receiver_account 10240
Note: Число указывается в байтах
Хранение информации аккаунта
Для создания нового аккаунта требуется 3 KiB. [06.11.2018 было принято решение 15 из 21 производителями блоков об обновлении, в котором было уменьшено минимально требуемое количество RAM для создания новой учетной записи с 4 KiB до 3 KiB.]
При создании нового аккаунта следующей командой
cleos ./cleos.sh system newaccount --stake-net "0.1 EOS" --stake-cpu "0.1 EOS" --buy-ram-kbytes 3 payer_account new_account_name owner_key_newaccount active_key_newaccount
payer_account (существующий аккаунт) отправляет плату в EOS токенах, согласно рыночной цене в данный момент времени, за 3 KiB RAM в системный контракт. Для нового аккаунта выделяется память в блокчейне EOSIO (для хранения информации про new_account)
memory:
quota: 2.978 KiB used: 2.926 KiB
**_Note: если вы попытаетесь создать аккаунт с меньшим количеством KiB, то получите ошибку **
Error: Account using more than allotted RAM usage
так как в блокчейне EOSIO захардкожено минимально 3 KiB на один аккаунт. В скором времени планируется обновление системного контракта в котором минимально требуемое количество KiB для создания аккаунта будет составлять 1,5
Хранение состояния смарт контракта
Для размещение смарт контракта в блокчейн EOSIO потребуется количество RAM в зависимости от размера файлов программного кода смарт контракта.
При обновлении файлов смарт контракта, если новая версия использует другое количество RAM, количество использованной памяти автоматически изменится на требуемое.
Количество RAM, которое требуется для хранения информации состояния смарт контракта, зависит от размера структуры таблицы которую будет хранить смарт контракт и от размера полученных данных. Можно приблизительно оценить размер данных которые потребуется хранить в блокчейне (т.е приблизительное количество KiB/MiB которое надо приобрести для правильной работы смарт контракта, оценка приблизительной стоимости!), вычислив размер структуры таблицы и умножив на ожидаемый размер таблицы. Поэтому при написании смарт контракта следует однозначно определить, сколько времени и какие именно данные будут хранится в блокчейне EOSIO.
Follow us!
Website: https://atticlab.net/eos/
Twitter: https://twitter.com/atticlab_it
Facebook: https://www.facebook.com/atticlab/
Reddit: https://www.reddit.com/r/atticlabeosb/
Steemit: https://steemit.com/eos/@attic-lab
Medium: https://medium.com/eosatticlab
Golos: https://golos.io/@atticlab
Telegram Chat: https://t.me/atticlabeosb
Telegram channel: https://t.me/eos_atticlab