MultiChain 2.1: змінні та бібліотеки

Вихідний вузол: 1587135

Робимо розумні фільтри набагато розумнішими

Сьогодні ми раді випустити MultiChain 2.1 із двома важливими новими функціями для розробників MultiChain.

Півтора року тому представили MultiChain 2.0 Розумні фільтри, що дає змогу вбудувати спеціальну логіку в блокчейн для перевірки транзакцій і даних. Розумні фільтри концептуально схожі на «розумні контракти», які надають інші блокчейн-платформи, але мають інший дизайн, щоб відповідати швидшій моделі транзакцій MultiChain.

Розумні фільтри бувають двох різновидів – фільтри транзакцій і фільтри потоку. Фільтр транзакцій перевіряє транзакції в ланцюжку в повному обсязі, досліджуючи їхні входи, виходи та метадані. Якщо транзакція не проходить фільтр, вона відхиляється кожним вузлом мережі. Фільтр потоку перевіряє окремі елементи, записані в a MultiChain потік, дивлячись на їх ключ(и), видавця(ів) і дані в ланцюжку чи поза ним у JSON, текстовому чи двійковому форматі. Якщо елемент не проходить фільтр, він позначається як недійсний, а його дані приховуються кожним вузлом, підписаним на потік.

Обидва типи Smart Filter написані на JavaScript і працюють у детермінованій версії Google V8, надшвидкий двигун JavaScript, який підтримує Chrome, Node.js і багато інших платформ. Прості фільтри легко кодувати та розуміти – наприклад, ось фільтр потоку, який підтверджує, що елементи мають принаймні два ключі:

функція filterstreamitem() { var item=getfilterstreamitem(); // функція зворотного виклику if (item.keys.length2) повертає «Потрібно принаймні два ключі»; }

Загалом ми отримали чудові відгуки про розумні фільтри, але ми також неодноразово чули про два способи зробити їх ще кращими. По-перше, багатьом користувачам потрібні фільтри, які можуть зчитувати інформацію, яка знаходиться в блокчейні, але не в транзакції чи елементі потоку, що перевіряється. Варіанти використання включають зміну списку дозволених країн, обмінні курси, надані зовнішнім «оракулом», або перемикач для перемикання певних правил.

По-друге, деякі розробники хочуть використовувати набір функцій JavaScript у кількох фільтрах без дублювання коду. Вони також хочуть мати можливість оновлювати ці функції, виправляти помилки або охоплювати деякі нові ситуації, не вимикаючи існуючі фільтри та створюючи нові замість них. Наприклад, спільний код може містити специфічну для програми логіку, сторонню бібліотеку для перевірки JSON або аналізу вмісту PDF.

MultiChain 2.1 представляє два нових типи сутності в ланцюжку, змінні та libraries, щоб задовольнити ці потреби.

Змінні

Почнемо зі змінних MultiChain. Вони працюють так само, як у звичайних мовах програмування, але з блокчейном. У блокчейні можна створити будь-яку кількість іменованих змінних. Кожна змінна має динамічний набір адрес, якому дозволено оновлювати своє значення, і цим набором керує один або більше адміністраторів змінних (за замовчуванням, лише автор змінної). Змінні створюються або оновлюються в транзакції блокчейну, яку можна надіслати за допомогою простої високорівневої команди API. Крім того, API нижчого рівня можна використовувати для створення складних транзакцій, які атомарно встановлюють одну або кілька змінних, записують елементи потоку, передають активи, змінюють дозволи тощо.

Саме значення змінної може містити будь-яку структуру JSON, включаючи числа, рядки, логічні значення, вкладені об’єкти та масиви, і зберігається в ланцюжку в ефективному UBJSON формат серіалізації. Звичайно, розумні фільтри можуть запитувати поточне значення змінної за допомогою простої функції зворотного виклику. Але оскільки це блокчейн, повна історія значень змінної та авторів також доступна, і її можна отримати частково або повністю за допомогою іншої функції зворотного виклику. Щоб полегшити розробку, ці зворотні виклики також доступні через прикладний API.

Libraries

Давайте перейдемо до бібліотек, які є старшими братами змінних. Як і у випадку зі змінними, у блокчейні можна створити будь-яку кількість іменованих бібліотек. Але бібліотеки мають більш багату модель для оновлення з трьома доступними режимами – непорушний, мить та підлягають затвердженню.

Один раз непорушний бібліотека створена, її код ніколи не можна змінити. Бібліотека с мить оновлення можна змінювати як змінну, за допомогою набору адрес, які можуть окремо замінити її код. Але в бібліотеці с підлягають затвердженню оновлення, оновлення застосовується лише після схвалення певною часткою глобальних адміністраторів блокчейну. Останній режим забезпечує чудовий компроміс між безпекою та гнучкістю.

Код для бібліотеки написаний на звичайному JavaScript і визначає одну або кілька функцій для використання розумними фільтрами. Як і змінні, бібліотеки створюються або оновлюються в спеціальній транзакції, яка легко надсилається за допомогою API. Коли інтелектуальний фільтр створюється, його необхідні бібліотеки надаються в додатковому параметрі. Бібліотека завжди працює в контексті фільтра, якому вона потрібна, тому вона може використовувати зворотні виклики Smart Filter, де це необхідно. MultiChain надає широку функціональність для локального тестування (і відкату) бібліотек і їх оновлень перед внесенням змін у блокчейн.

Обгортання його

Як і всі функції, пов’язані з правилами блокчейну, змінні та бібліотеки доступні як у версії Community, так і в Enterprise MultiChain 2.1. Наша документація для розробників містить детальний опис нового JSON-RPC API та Зворотні виклики Smart Filter доступний. Щоб використовувати нові функції на вже запущеному блокчейні, спочатку перенесіть вузли на MultiChain 2.1, а потім модернізація протокол ланцюжка до версії 20012.

Так що далі? Протягом наступних місяців ми зосередимося на деталізованій та інтенсивній внутрішній роботі, щоб покращити продуктивність і паралельність MultiChain, поки він перебуває під значним навантаженням. Це збільшить швидкість реагування додатків, яким потрібно запитувати вузол, поки він продовжує обробляти сотні чи тисячі нових транзакцій на секунду.

Тим часом ми всі в команді MultiChain бажаємо нашим користувачам і клієнтам здоров’я та розсудливості в майбутньому році. Ми знаємо, що зараз важкі часи для всіх, і ми з нетерпінням чекаємо повернення до нормального ритму зустрічей і конференцій, як тільки це стане безпечним.

Будь ласка, залишайте будь-які коментарі на LinkedIn.

Часова мітка:

Більше від Багатоканальний