Делаем смарт-фильтры намного умнее
Сегодня мы рады выпустить MultiChain 2.1 с двумя важными новыми функциями для разработчиков MultiChain.
Полтора года назад MultiChain 2.0 представил Умные Фильтры, которые позволяют встроить пользовательскую логику в цепочку блоков для проверки транзакций и данных. Умные фильтры концептуально похожи на «умные контракты», предоставляемые другими платформами блокчейнов, но имеют другую конструкцию, чтобы соответствовать более быстрой модели транзакций MultiChain.
Смарт-фильтры бывают двух видов - фильтры транзакций и фильтры потоков. Фильтр транзакций проверяет внутричейн-транзакции в целом, проверяя их входы, выходы и метаданные. Если транзакция не проходит фильтр, она отклоняется каждым узлом сети. Фильтр потока проверяет отдельные элементы, записанные в Поток MultiChain, просматривая их ключи, издателя (ов) и данные внутри или вне сети в JSON, текстовом или двоичном формате. Если элемент не проходит фильтр, он помечается как недопустимый, и его данные скрываются каждым узлом, подписанным на поток.
Оба типа смарт-фильтров написаны на JavaScript и работают в детерминированной версии Google. V8, сверхбыстрый движок JavaScript, который поддерживает Chrome, Node.js и многие другие платформы. Простые фильтры легко кодировать и понимать - например, вот фильтр потока, который проверяет, что элементы имеют как минимум два ключа:
функция filterstreamitem() { var item=getfilterstreamitem(); // функция обратного вызова if (item.keys.length2) return «Требуется как минимум два ключа»; }
В целом, мы получили отличные отзывы о смарт-фильтрах, но мы также неоднократно слышали о двух способах их улучшения. Во-первых, многим пользователям нужны фильтры, которые могут считывать информацию, которая находится в цепочке блоков, но не в проверяемой транзакции или элементе потока. Сценарии использования включают изменение списка разрешенных стран, обменных курсов, предоставляемых внешним «оракулом», или переключение для переключения определенных правил.
Во-вторых, некоторые разработчики хотят использовать набор функций JavaScript в нескольких фильтрах без дублирования кода. Они также хотят иметь возможность обновлять эти функции, исправлять ошибку или покрывать некоторые новые ситуации, не отключая существующие фильтры и не создавая вместо них новые. Например, общий код может содержать логику для конкретного приложения, стороннюю библиотеку для проверки JSON или анализа содержимого PDF.
Мультичейн 2.1 вводит два новых типа сущностей в цепочке, переменные и библиотеки, чтобы ответить на эти потребности.
Переменные
Начнем с переменных MultiChain. Они работают так же, как и в обычных языках программирования, но с особенностями блокчейна. В блокчейне можно создать любое количество именованных переменных. Каждая переменная имеет динамический набор адресов, которым разрешено обновлять свое значение, и этим набором управляет один или несколько администраторов переменных (по умолчанию только создатель переменной). Переменные создаются или обновляются в транзакции блокчейна, которую можно отправить с помощью простой высокоуровневой команды API. В качестве альтернативы API нижнего уровня можно использовать для создания сложных транзакций, которые атомарно устанавливают одну или несколько переменных, записывают элементы потока, переносят активы, изменяют разрешения и т. Д.
Само значение переменной может содержать любую структуру JSON, включая числа, строки, логические значения, вложенные объекты и массивы, и хранится в цепочке в эффективном УБЖСОН формат сериализации. Конечно, смарт-фильтры могут запрашивать текущее значение переменной с помощью простой функции обратного вызова. Но поскольку это блокчейн, также доступна полная история значений переменных и писателей, и ее можно получить частично или полностью с помощью другой функции обратного вызова. Чтобы упростить разработку, эти обратные вызовы также доступны через API, ориентированный на приложения.
Библиотеки
Перейдем к библиотекам, которые являются старшими братьями переменных. Как и в случае с переменными, в цепочке блоков можно создать любое количество именованных библиотек. Но у библиотек есть более богатая модель для обновления с тремя доступными режимами: неизменный, мгновениеи подлежит утверждению.
Когда истощается неизменный библиотека создана, ее код изменить нельзя. Библиотека с мгновение обновления могут быть изменены как переменная с набором адресов, которые могут индивидуально заменять ее код. Но в библиотеке с подлежит утверждению обновления, обновление применяется только после одобрения определенной частью глобальных администраторов блокчейна. Этот последний режим обеспечивает отличный компромисс между безопасностью и гибкостью.
Код библиотеки написан на обычном JavaScript и определяет одну или несколько функций для использования смарт-фильтрами. Как и в случае с переменными, библиотеки создаются или обновляются в специальной транзакции, которая легко отправляется с помощью API. Когда смарт-фильтр создается, его необходимые библиотеки предоставляются в необязательном параметре. Библиотека всегда запускается в контексте фильтра, которому она требуется, поэтому она может использовать обратные вызовы Smart Filter там, где это необходимо. MultiChain предоставляет обширную функциональность для тестирования (и отката) библиотек и их обновлений локально перед внесением изменений в блокчейн.
Подводя итоги
Как и все функции, относящиеся к правилам блокчейна, переменные и библиотеки доступны как в редакции MultiChain 2.1 для сообщества, так и в версии Enterprise. Наша документация для разработчиков содержит подробное описание нового API JSON-RPC и Обратные вызовы Smart Filter имеется в наличии. Чтобы использовать новые функции в уже работающей цепочке блоков, сначала перенесите узлы в MultiChain 2.1, затем модернизация протокол цепочки до версии 20012.
Ну и что дальше? В ближайшие месяцы мы сосредоточимся на некоторой детальной и интенсивной внутренней работе, чтобы улучшить производительность и параллелизм MultiChain при значительной нагрузке. Это повысит скорость отклика приложений, которым необходимо запрашивать узел, пока он продолжает обрабатывать сотни или тысячи новых транзакций в секунду.
А пока все мы в команде MultiChain желаем нашим пользователям и клиентам здоровья и здравомыслия на год вперед. Мы знаем, что сейчас трудные времена для всех, и надеемся вернуться к нормальному ритму встреч и конференций, как только это станет безопасным.
Пожалуйста, оставьте любые комментарии на LinkedIn.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://www.multichain.com/blog/2020/10/multichain-2-1-variables-and-libraries/
- :имеет
- :является
- :нет
- :куда
- 1
- a
- в состоянии
- О нас
- адреса
- администраторы
- После
- тому назад
- впереди
- Все
- уже
- причислены
- всегда
- an
- и
- Другой
- ответ
- любой
- API
- API
- Приложения
- прикладной
- соответствующий
- утвержденный
- МЫ
- AS
- Активы
- At
- доступен
- назад
- BE
- , так как:
- до
- начинать
- не являетесь
- Лучшая
- между
- больший
- блокчейн
- изоферменты печени
- Ошибка
- строить
- но
- by
- обратные вызовы
- CAN
- случаев
- определенный
- цепь
- изменение
- менялась
- изменения
- Chrome
- код
- как
- приход
- Комментарии
- сообщество
- комплекс
- Концептуально
- конференции
- содержать
- содержание
- контекст
- продолжается
- может
- страны
- курс
- чехол для варгана
- создали
- Создающий
- создатель
- Текущий
- изготовленный на заказ
- Клиенты
- данным
- По умолчанию
- Определяет
- Обрадованный
- описание
- Проект
- подробный
- Застройщик
- застройщиков
- Развитие
- различный
- трудный
- документации
- не
- копировальный
- динамический
- каждый
- легче
- легко
- легко
- Издания
- эффективный
- встроенный
- включить
- Двигатель
- Предприятие
- цельность
- организация
- Даже
- Каждая
- все члены
- Изучение
- пример
- обмена
- существующий
- обширный
- и, что лучший способ
- быстрее
- Особенности
- Обратная связь
- фильтр
- фильтры
- Во-первых,
- соответствовать
- фиксированный
- Трансформируемость
- внимание
- Что касается
- формат
- вперед
- полный
- функция
- функциональность
- Функции
- Глобальный
- большой
- было
- Половина
- Есть
- Медицина
- услышанный
- Скрытый
- на высшем уровне
- история
- HTTP
- HTTPS
- Сотни
- if
- важную
- улучшать
- in
- включают
- В том числе
- Увеличение
- individual
- в отдельности
- информация
- затраты
- выпустили
- Представляет
- IT
- пункты
- ЕГО
- саму трезвость
- JavaScript
- JSON
- ключи
- Знать
- Языки
- Фамилия
- вести
- наименее
- библиотеки
- Библиотека
- такое как
- Список
- ll
- загрузка
- в местном масштабе
- логика
- посмотреть
- искать
- серия
- сделать
- Создание
- управляемого
- многих
- с пометкой
- то время
- заседаниях
- Метаданные
- мигрировать
- режим
- модель
- Режимы
- месяцев
- БОЛЕЕ
- двигаться
- мультицепь
- с разными
- Названный
- Необходимость
- потребности
- сеть
- никогда
- Новые
- Новые функции
- следующий
- узел
- Node.js
- узлы
- "обычные"
- номер
- номера
- объекты
- of
- on
- В сети
- ONE
- те,
- только
- or
- оракул
- Другое
- наши
- выходы
- за
- параметр
- часть
- pass
- для
- производительность
- Разрешения
- Часть
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- После
- полномочия
- процесс
- Программирование
- языки программирования
- доля
- протокол
- при условии
- приводит
- вполне
- Стоимость
- Читать
- регулярный
- Отклоненный..
- освободить
- НЕОДНОКРАТНО
- замещать
- обязательный
- требуется
- возвращают
- возвращение
- ритм
- Подвижной
- условиями,
- Run
- Бег
- работает
- s
- безопасный
- Во-вторых
- безопасность
- послать
- набор
- настройки
- общие
- значительный
- аналогичный
- просто
- обстоятельства
- умный
- So
- некоторые
- Скоро
- особый
- Начало
- хранить
- поток
- Структура
- Коммутатор
- команда
- Тестирование
- текст
- который
- Ассоциация
- их
- Их
- тогда
- Эти
- они
- сторонние
- этой
- те
- тысячи
- три
- Через
- раз
- в
- сделка
- Сделки
- транзакций в секунду
- перевод
- поворот
- два
- Типы
- под
- понимать
- Обновление ПО
- обновление
- Updates
- обновление
- us
- использование
- используемый
- пользователей
- через
- подтверждено
- подтверждает
- проверки
- ценностное
- Наши ценности
- переменная
- Ve
- версия
- хотеть
- способы
- we
- Что
- когда
- , которые
- в то время как
- все
- будете
- в
- без
- Работа
- записывать
- писатели
- письменный
- год
- зефирнет