Rspace — библиотека организации пространства кортежей

в 19:37, , рубрики: scala

Хочу познакомить вас с библиотекой 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"

Если вам стало интересно, то тут можно найти полный туториал.

Автор: незнакомец

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js