Хочу познакомить вас с библиотекой rspace, которая предоставляет пространство кортежей для хранения данных для интерпретатора Rholang, языка для описания распределенных вычислений, основанного на pi-алгебре процессов.
rspace — часть проекта RChain по созданию распределенной масштабируемой вычислительной платформы для смарт-контрактов.
Существующие сейчас реализации пространства кортежей опираются на механизм "ключ-значение", которые предусматривают две основные функции для взаимодействия с хранилищем: get, которая возвращает данные хранящиеся по определенному ключу, и put, которая помещает данные в хранилище по указанному ключу.
rspace отходит от этой модели и предлагает новый подход к хранению и извлечению данных.
Главные отличия:
- В этой библиотеке данные соотносятся не с определенным ключом, а с каналом (channel). В
rspaceканалом может быть любой тип Scala, который может быть сериализован в или десериализован из байтового массиваArray[Byte]. rspaceможет хранить не только данные, но и продолжения (continuations), которые представляют действия, которые можно произвести над полученными данными. Вrspaceпродолжением может быть любой тип Scala, который может быть сериализован в или десериализован из байтового массиваArray[Byte].- Продолжение соотносится со списком каналов и списком паттернов. Паттернами могут быть любые типы Scala, которые могут быть сериализованы в байтовый массив
Array[Byte]или десериализованы из него. Пользователиrspaceмогут создавать собственную функцию сопоставления, чтобы извлекать из хранилища данные по определенному паттерну. - Две основные функции для взаимодействия с хранилищем:
consume, которая ищет в хранилище данные по предоставленному списку паттернов на предоставленном списке каналов, иproduce, которая использует предоставленные данные и ищет для них подходящее продолжение в хранилище.
Страница библиотеки на GitHub.
Библиотека распространяется по лицензии Apache 2.0
Чтобы использовать rspace в своем проекте, нужно в билде (build.sbt) указать следующее:
coop.rchain %% rspace % "0.1.1"Если вам стало интересно, то тут можно найти полный туториал.