Skip to content

Latest commit

 

History

History
20 lines (12 loc) · 2.48 KB

File metadata and controls

20 lines (12 loc) · 2.48 KB

Data separation

Создание нескольких смарт-контрактов для раздельного хранения состояния и бизнес логики.

Этот подход можно назвать шаблоном разделения данных. Он говорит о том, что пользователи взаимодействуют с логическим контрактом, а данные хранятся в отдельном контракте хранилища.

Логический контракт содержит код, который выполняется, когда пользователи взаимодействуют с приложением. Он также содержит адрес контракта хранилища и взаимодействует с ним для получения и установки данных.

Контракт хранилище содержит состояние, связанное со смарт-контрактом логики, например балансы и адреса пользователей.

Важно ! В контракт хранилище должен записывать данные только определенный контракт логики и никто другой.

По умолчанию контракт хранилища должен быть неизменяемым, но в нем есть возможность поменять контракт логики на любой другой контракт.

Examples

В папке /contracts лежит три контракта. TokenLogic - это контракт в котором отсутствуют переменные состояния. Все переменные состояния вынесены в контракты BalanceStorage и TotalSupplyStorage. Эти два контракта имеют публичные методы для управления состояниями. Эти публичные методы могут быть вызваны только установленным контрактом логики.

Подробнее пример контракта логики тут. Подробнее пример контракта хранилище 1 тут. Подробнее пример контракта хранилище 2 тут.