Я хочу поддерживать хранилище данных пар ключ-значение. Например, пользователи моего децентрализованного приложения вводят информацию о своей любимой еде. Я хотел бы сопоставить их учетную запись с названием еды. Насколько я понимаю, я могу сделать это с помощью смарт-контракта или сохранить его в рое. Каковы различия между хранилищами данных в рое и в смарт-контракте? Получаю ли я больше конфиденциальности, сохраняя свои данные в рое, а не в состоянии EVM?
Хранение ваших данных в смарт-контракте стоит дорого, сохранять большие объемы данных в смарт-контракте неэкономично. Вы можете лучше контролировать , как (а не кто) будут доступны ваши данные с помощью смарт-контракта. Однако, когда вы отправляете данные с транзакцией, все узлы получают их, поэтому для обеспечения конфиденциальности вам придется шифровать данные.
В swarm вы загружаете свой контент, который затем разбивается на части, при этом каждый фрагмент отправляется на разные узлы для хранения на основе их хэша — в основном хэш также является адресом фрагмента. Каждый, у кого есть хэш, может получить и прочитать содержимое. Таким образом, и в swarm, если вы хотите конфиденциальности, вам необходимо зашифровать свои данные и управлять ключами (команда swarm работает над встроенным средством шифрования).
Однако хранение в рое намного дешевле и подходит для данных любого размера. В настоящее время это даже бесплатно, так как внедряется протокол учета SWAP. Когда он будет включен, оплата будет осуществляться за потребление данных, а узлы, обслуживающие данные, будут оплачиваться (микроплатежи). Кроме того, ваши данные будут обслуживаться узлами в зависимости от популярности.
Тем не менее, непопулярные данные (низкая частота запросов или отсутствие запросов) могут быть удалены узлами, но вы можете застраховать их с помощью авансового платежа.
Наконец, участвуя в роевой сети, вы также можете получать оплату за предоставление контента, компенсируя (или даже превосходя) ваши расходы на страхование.
Однако Swarm все еще находится в альфа-версии, поэтому вам не следует использовать его для критически важных приложений.