Дослідження: ШІ-боти справляються з CAPTCHA краще за людей

ШІ-боти

Штучний інтелект на 15% успішніше справляються із проходженням CAPTCHA, ніж живі люди. Такого висновку дійшли автори дослідження , на яке звернув увагу Quartz .

Експеримент був проведений групою фахівців із Microsoft, Швейцарської вищої технічної школи Цюріха, Каліфорнійського університету в Ірвайні та Ліверморської національної лабораторії.

У дослідженні взяли участь 1400 осіб, яким було запропоновано пройти тести на захист від роботів, які використовуються на 120 популярних ресурсах. Результати фахівці порівняли з показниками, які продемонстрували різноманітні роботи.

«Точність роботів коливається в межах 85-100%, причому у більшості вона перевищує 96%. Це істотно краще за показник, що спостерігається у людини (50–85%)», — йдеться у статті, опублікованій за підсумками експерименту.

Живі люди, за даними дослідників, можуть конкурувати з ШІ лише за проходження reCAPTCHA. Середньостатистичний користувач справляється із цим завданням за 18 секунд. У роботів на це йде 17,5 секунди.

В інтерв’ю для New Scientist результати дослідження прокоментував один із його авторів Джин Цудік. На його думку, вони свідчать, що технологія захисту від роботів перестала справлятися зі своїми завданнями і тепер приносить лише незручності.

“Всі ми знаємо, що ніхто не любить подібні тести. Для цього не потрібно проводити дослідження. Але не всі знають, чи варті зусилля, які ми прикладаємо для проходження CAPTCHA щодня, місяць, рік», — нарік учений.

Нагадаємо, в липні аналітики Стенфорда та Каліфорнійського університету опублікували дослідження, в якому стверджується, що новітні моделі чат-бота ChatGPT стали працювати гірше після спілкування з живими користувачам. Зокрема ще в березні цього року остання версія штучного інтелекту ідентифікувала прості числа з точністю 97,6%. До червня цей показник упав до 2,4%.

Джерело

5 новинок CSS в адаптивній верстці, які можна використовувати вже зараз.

Можливо, ви вже чули про де які технології CSS, але не використовували їх, бо думали, що вони не підтримуються браузерами. Тепер можете сміливо брати їх у всеозброєння та застосовувати у своїх проектах!

Я вирішив в одному місці зібрати інформацію про кілька нових фічів, якими почав користуватися сам і вам раджу.

5 новинок CSS в адаптивній верстці, які можна використовувати вже зараз

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

Нові одиниці вимірювання svh, lvh, dvh

Найпоширеніша проблема на мобільних пристроях при використанні vh – при розрахунку висоти не враховується висота навігаційної панелі, яка динамічно з’являється і зникає. Одиниці виміру svh, lvh, dvh вирішують цю проблему, дозволяючи позбутися непотрібного скролла.

Почнемо зі Svh (Small viewport height). Ця одиниця виміру задає найменший розмір viewport, коли відображається панель навігації.

css svh

Lvh (large viewport height) задає розміри найбільшого розміру viewport, коли панель навігації прихована.

css lvh

І нарешті Dvh (Dynamic viewport height) динамічно змінює значення висоти щодо того, чи відкрита панель з навігацією чи ні.

css dvh

Ці одиниці виміру можна використовувати прямо зараз, згідно сайту “Сan I use” , вони підтримуються у всіх сучасних браузерах.

can I use svh, lvh, dvh

Контейнерні запити

Про них знає дуже багато, оскільки контейнерні запити з’явилися кілька років тому. Нині їхня підтримка стала достатньою, щоб використати в реальних проектах.

Контейнерні запити дозволяють змінювати стилі, спираючись розмір блоку, а чи не всього екрану на відміну від min-width, max-width.

Розглянемо найочевидніший приклад. У нас є список із 4 карток, у рядку міститься лише 3. Остання картка повинна розтягуватися на всю ширину, але при такому великому розмірі картинка та текст мають бути на одному рядку.

Контейнерні запити

Щоб цього домогтися контейнера картки (.card) потрібно визначити властивість container-type у значенні inline-size. Тепер можна ставити стилі безпосередньо для дочірніх елементів. Поки картка більше 400px, до неї додаватимуться властивість display flex.

.card {
    container-type: inline-size;
}

@container (min-width: 400px) {
    .card__container {
        display: flex;
        align-items: center;
    }
}

Ось що вийшло.

Контейнерні запити

Це лише невеликий приклад варіацій застосування контейнерних запитів безліч. Нині вони отримали широку підтримку, і їх можна використовувати.

Can I use @container

Новий синтаксис медіазапитів Media Queries Range

Це невелика, але приємна зміна, що дозволяє використовувати більш зрозумілий синтаксис у медіазапитах. Звичайний синтаксис медіазапитів виглядав так:

@media (max-width: 1000px) {
    /* ... */
}

@media (min-width: 1000px) and (max-width: 1400px) {
    /* ... */
}

З новим можна зробити цей запис коротшим і зрозумілішим для розуміння.

@media (width <= 1000px) {
    /* ... */
}

@media (1000px <= width <= 1400px) {
    /* ... */
}

Крім цього доступні такі оператори порівняння:

  • < порівнює чи менше одне значення іншого;
  • > порівнює чи більше одне значення іншого;
  • = порівнює чи одне значення іншому;
  • <= порівнює менше чи одно одне значення іншому;
  • >= порівнює більше чи одно одне значення іншому.

Can I use Media Queries Range

Функції clamp, min, max

Ці функції дозволяють розраховувати розміри елементів. Усередині них можна проводити обчислення так само, як і в calc.

Функція min приймає значення, вибираючи найменше. Передавати можна безліч значень. Наприклад, якщо задати 50vw і 500, при розмірі viewport 1400px, застосовується 500px, тому що 1400/2 = 700, 500 < 700. Але коли розмір viewport стане менше 1000px, буде використано значення 50vw.

Також у даних функціях можна порівнювати між собою та відносні значення. Функція max працює так само, як min, тільки повертає максимальне значення.

.element {
    width: min(50vw, 500px);
}

.element {
    width: min(10em, 30%, 30px);
}

Та нарешті clamp. Функція приймає 3 параметри і задає значення між верхнім та нижнім кордоном.

.element {
  width: clamp(250px, 100% / 3, 900px);
}

Доки елемент не буде менше 250px і не більше 900px, його ширина буде розраховуватися за формулою 100% / 3.

Can I use min max clamp

Властивість text-wrap: balance

Остання новинка CSS, що розглядається, є найспірнішою серед усіх описаних вище, тому що не підтримується в Safari і Mozilla. Але навіть якщо text-wrap: balance не застосовується, властивість нічого не зламає, тому можна використовувати. З цією властивістю браузер намагається збалансувати кількість символів у рядку, щоб вони були приблизно рівні за шириною.

Важливо: text-wrap: balance у своїй поточній реалізації дозволяє балансувати текст до 4 рядків. Якщо текст більше, воно не працюватиме.

Can I use text-wrap: balance

Ми розглянули 5 нових фіч CSS, які допоможуть в адаптивній верстці. Якщо вам було корисно, підписуйтесь, я ділитися нововведеннями в CSS, доступних для застосування вже сьогодні.

Джерело

createAsyncThunk.withTypes() корисна можливість @reduxjs/toolkit

У цій статті розберемо ще одну маловідому, але не менш корисну можливість@reduxjs/toolkit

Для початку розберемо варіанти та можливості типізаціїcreateAsyncThunk

Санки можна типізувати як за допомогою дженериків,

createAsyncThunk<Returned, ThunkArg, ThunkApiConfig>()

так і за допомогою безпосередньо аргументів

createAsyncThunk(
  'asyncThunkTypePrefix',
  (arg: ThunkArg, apiConfig: ThunkApiConfig) => {}
)

де:

– Returned– тип значення, що повертається санком значення

– ThunkArg– тип аргументу санка

– ThunkApiConfig– тип конфіга, його розберемо нижче

Я віддаю перевагу і раджу використовувати другий метод, оскільки немає необхідності вручну описувати тип значення, що повертається, особливо, коли ваш санк може повернути кілька видів помилок крім даних. Набагато простіше надати це Typescript‘у, він чудово аналізує всі виходи з санка і показує, наприклад, що повернутися може Data | Error | AxiosError, і ви не потопатимете у величезних повідомленнях про помилки типізації через те, що типізація в дженериках відрізняється від тієї, що бачитьTypescript

Тепер подивимося докладніше ThunkApiConfig:

Звернемося до документації thunkApi в@reduxjs/toolkit

toolkit

Тут описані всі можливі поля та пояснення до них. Однак на практиці в основному використовується лише половина з них:

type Store = typeof store
type RootState = ReturnType<Store['getState']>
type AppDispatch = Store['dispatch']

type ThunkApiConfig = {
  state: RootState
  dispatch: AppDispatch
  rejectValue: AnyErrorType
  extra: AnyExtraArgumentType
}

де:

– stateRootState– Тип вашого кореневого стейту. Значення такого типу повернеgetState

– rejectValueAnyErrorType– Тип значення, яке ви будете використовувати вrejectWithValue

– extraAnyExtraArgumentType– Тип будь-якого екстра аргументу, який ви опціонально використовуватимете у ваших санчатах

Оскільки нікому не хочеться щоразу описувати цей тип для кожного нового санка, часто використовуються функції-обгортки, що допомагають лише один раз описати тип ThunkApiConfig

export const createAppnAsyncThunk = <Returned, ThunkArg>(
  type: string,
  thunkPayloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg>,
): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> =>
 createAsyncThunk<Returned, ThunkArg, ThunkApiConfig>(type, thunkPayloadCreator)

А тепер заглянемо в глибини документації, куди дістаються небагато людей і подивимося на спосіб, який нам пропонує бібліотека з коробки. createAsyncThunk.withTypes()

const createAppAsyncThunk = createAsyncThunk.withTypes<ThunkApiConfig>()

Як бачимо перший метод у порівнянні з другим вимагає написання більшої кількості і, що важливо, зрозуміти і розібратися з типами, що надаються @reduxjs/toolkit для типізації санків, що для новачків Typescriptможе бути зовсім не просто.

Джерело

Що таке Network State (мережева держава)?

Network State

  • Мережева держава (Network State) — концепція соціально-політичної організації, запропонована колишнім CTO криптобіржі Coinbase Баладжі Срінівасаном і заснована на використанні блокчейну та суміжних технологій.
  • Створення подібних утворень передбачає присутність у віртуальному, а й у фізичному вимірі.
  • Останнє досягається за рахунок придбання ділянок землі по всьому світу, які потім поєднуються в мережевий архіпелаг.
  • За наявності амбіцій стати мережевою державою теоретично може будь-яка спільнота однодумців.

Навіщо створювати нові держави?

Ідея Network State викладена в однойменній книзі підприємця, інвестора та колишнього CTO криптовалютної біржі Coinbase Баладжі Срінівасана. У цій роботі бізнесмен пропонує алгоритм створення мережевих держав — альтернативних політичних утворень, що ґрунтуються на блокчейн-технологіях та інших інноваціях.

Згідно з Срінівасаном, соціальні та політичні зміни відбуваються повільніше, ніж технологічні. Це, на його думку, пов’язане із глобальним домінуванням національних держав. У такій ситуації реформи та експерименти з новими засобами громадської організації обмежені: політична кар’єра недоступна більшості і пов’язана з необхідністю інтеграції до існуючих інститутів влади.

На відміну від чиновників, підприємці не зобов’язані вбудовуватись у корпорації, щоб організувати свою справу; ринкова конкуренція збільшує різноманітність та якість товарів, генеруючи загальне благо та рухаючи прогрес. За формулюванням Срінівасана, «потрапити до списку Forbes значно простіше, ніж до списку президентів США».

Проект Network State пропонує використовувати динамізм ринку для прискорення соціального прогресу — будь-який бажаючий, використовуючи сучасні засоби комунікації та криптовалюти, може заснувати своє стартап-суспільство, подібно до того, як фаундер відкриває новий бізнес.

Засновник не скований спадщиною минулого і може вільно експериментувати з параметрами ком’юніті, яке згодом може стати мережевою державою.

У чому фундаментальні засади мережевої держави?

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

Під ключовими пунктами цього визначення автор має на увазі наступне:

  • моральна інновація – етична ідея, яку поділяють усі громадяни (netizens) мережевої держави. Вона має бути коротко виражена за допомогою «Однієї заповіді» – формули, яку поділяють усі учасники;
  • засновник пропонує бачення мережевої держави та має ексклюзивне право приймати рішення щодо розвитку проекту;
  • криптовалюта забезпечує економічне функціонування, дозволяє вести облік та ідентифікацію мешканців, проводити голосування та брати участь у краудфандингових кампаніях;
  • земля – ​​власність мережевої держави у фізичному світі, яка перебуває у користуванні її членів. Вона може бути розподілена по всьому світу;
  • дипломатичне визнання відрізняє мережеву державу з інших можливих видів організації співтовариств.

Також Срінівасан розрізняє поняття «стартап-суспільства», «мережевого союзу», «мережевого архіпелагу» та «мережевої держави».

  • стартап-суспільство — це суспільство, засноване фаундером і об’єднане однією ідеєю, що існує в мережі та робить колективні дії на основі своїх цінностей;
  • мережевий союз – це стартап-суспільство, що вже досягло зрілості, що володіє внутрішньою економікою, заснованої на блокчейні, з великою кількістю членів. Мережеві спілки здатні відстоювати свої інтереси перед традиційними державами та великими корпораціями;
  • мережевий архіпелаг – мережевий союз, що володіє фізичними активами: землею, власністю тощо;
  • мережна держава — це мережевий союз, який досяг певного дипломатичного визнання та політичного суверенітету.

Стартап-суспільству не обов’язково еволюціонувати у повноцінну мережеву державу, подібно до того, як новий бізнес може не мати амбіцій перетворитися на глобальну корпорацію.

У чому полягає «Одна заповідь»?

Моральна інновація — базовий пункт, навколо якого будуються всі перелічені об’єднання. Вона згуртовує членів спільноти, дає їм загальну ідентичність та мету для колективних дій. «Одна заповідь» може стосуватися бажаного способу життя, наприклад: «Віганство — найбільш корисна та етично прийнятна дієта для людини», або ціннісних положень: «Культура скасування шкодить суспільству».

Члени ком’юніті скоординовано діють як онлайн, так і офлайн, виходячи з «Однієї заповіді». Наприклад, учасники веганського стартап-товариства можуть розповсюджувати матеріали про користь відмови від продуктів тваринного походження або відкрити свій ресторан, а члени товариства проти культури відміни — шукати роботу людям, звільненим внаслідок травлення.

Навіщо мережевій державі земля?

Cloud first, land next (but not land never) — принцип, згідно з яким стартап-товариства, перш ніж купувати землю та інші нецифрові активи, повинні організуватися онлайн. З мережевих комунікацій та колективної практики вони зможуть виробити етичні правила та самосвідомість приналежності до спільноти, а також розробити блокчейн-архітектуру для самоврядування та прийняття рішень.

Придбання землі потрібне для спільного проживання та відкриття бізнесів. На першому етапі Срінівасан рекомендує купувати ділянки поза великими містами у місцях, якими не зацікавлені корпорації та держави.

Придбані стартап-товариством території об’єднуються в архіпелаг за допомогою мережі.

Яку роль тут відведено блокчейну?

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

Усі взаємодії netizens, записані в блокчейн, дозволять завжди мати актуальні статистичні дані про стан держави. Роль законів у Network State гратимуть консенсуально прийняті смарт-контракти.

Срінівасан допускає появу інституту множинного громадянства: використовуючи Web3 -логін, людина зможе брати участь у житті відразу кількох мережевих держав.

Одна з найважливіших ідей Network State — ончейн-запис усіх значних верифікованих подій (the ledger of record — реєстр запису), історія, що «доводиться», яка дозволить уникнути маніпуляції минулим, а також бачити траєкторію розвитку держави.

Чим Network State відрізняється від попередніх утопій?

За словами соціолога Павла Степанцова, гіпотетичний проект Баладжі Срінівасана можна поставити в низку сучасних техноутопій — способу проблематизації суспільних відносин, що виникає з уваги до нових технологій організації, спостереження та роблення видимими членами спільноти.

На відміну від великих проектів XX століття — анархізму та комунізму, в яких технології відіграють роль інструмента для досягнення політичної мети, у цих утопіях техніка розуміється як «форма життя». Соціальні відносини для них похідні від інновацій. Техніка формує нові форми суспільних взаємодій.

«Часто Срінівасана вважають послідовником лібертаріанства, але це не зовсім так. Лібертаріанство засноване на філософії утилітаризму: якщо ми досягнемо оптимального економічного стану, то соціальна складова піде за нею. Проект Срінівасана підкреслює важливість норм комунікації та морального підґрунтя людських спільностей. Він більш соціологічний і нагадує теоретизування соціолога Норберта Еліаса, який припускав, що надіндивідуальні структури утворюються із взаємодії людей і відтворюють себе за рахунок створення моральних і цінностей», — пояснює експерт.

За що критикують Network State?

Співзасновник Ethereum Віталік Бутерін у статті «Що я думаю про мережеву державу» виділив кілька пунктів, «з якими має проблеми»:

  • керівна роль засновника. Централізація та одноосібне ухвалення рішень добре підходять для невеликих стартапів, але при масштабуванні може виникнути проблема асиметрії влади, і рішення засновника можуть сковувати розвиток цифрових держав;
  • недоступність людям без великого достатку. Ця концепція добре підходить для громадян розвинених країн, які можуть вибрати собі юрисдикцію для життя, але більшість громадян третього світу не зможуть повноцінно брати участь у мережній державі — вони обмежені у свободі вибору юрисдикцій і не можуть переміщатися між анклавами;
  • недостатність «стратегії виходу» на вирішення глобальних політичних проблем. «Вихід» — неучасть у політичному житті, у тому числі через еміграцію. Вільні держави дозволять своїм громадянам залишати їхні юрисдикції, тоді як авторитарні закриватимуть кордони та перешкоджатимуть утворенню паралельних громад усередині своїх кордонів;
  • Проблема негативних екстерналій. “Гіпотеза вразливого світу” передбачає, що науковий прогрес збільшує доступ до руйнівних технологій для всіх. Тому для запобігання загрозам необхідні заходи авторитарного характеру. Дерегульований світ мережевих держав збільшує шанси настання техногенної катастрофи.

Джерело

bindActionCreators – маленька утиліта, що вирішує проблеми.

redux Бібліотеки reduxабо@reduxjs/toolkit надають велику кількість корисних утиліт, у цій статті я розповім про одну з них – bindActionCreators

Одна з проблем, що переслідує майже всіх, хто використовує вищезгадані бібліотеки – неможливість використання action(), попередньо не обернувши його в dispatch(). Це породжує велику кількість безглуздого коду:

const dispatch = useDispatch()

const handleReset = (id: number) => dispatch(actionReset(id))

Як використовувати bindActionCreators?

Спочатку розберемося з аргументами:bindActionCreators(actionCreators, dispatch)

  • actionCreators– об’єкт виду{ actionName: ActionDefinition }
  • dispatch– відповідно dispatchз useDispatch()абоstore

Далі розберемо два способи використання за вищезгаданими методами одержанняdispatch

Хук useDispatchedActions і useDispatch

const useDispatchedActions = (actionCreators) => {
  const dispatch = useDispatch()
  return bindActionCreators(actionCreators, dispatch)
}

Або в один рядок:

const useDispatchedActions = (actionCreators) => bindActionCreators(actionsCreators, useDispatch())

Також приклад цього хук на TypeScript з прикладом типів

type Store = typeof store
type AppDispatch = typeof Store['dispatch']

type BoundAsyncThunk<Actionы extends ActionCreator<any>> = (
  ...args: Parameters<Action>
) => ReturnType<ReturnType<Action>>

type BoundActions<Actions extends ActionCreatorsMapObject> = {
  [key in keyof Actions]: Actions[key] extends AsyncThunk<any, any, any>
    ? BoundAsyncThunk<Actions[key]>
    : Actions[key]
}

const useDispatchedActions = <Actions extends ActionCreatorsMapObject = ActionCreatorsMapObject> (
  actions: Actions,
): BoundActions<Actions> => {
  const dispatch = useDispatch<AppDispatch>()

  return bindActionCreators(actions, dispatch), [actions, dispatch]
}

Власна утиліта та store.dispatch

const getDispatchedActions = (actionsCreators) => bindActionCreators(actionsCreators, store.dispatch)

Результат же – той самий об’єкт, який ми передавали в аргумент з однією відзнакою – ці екшени ми можемо використовувати без необхідності обертати їх викликdispatch()

Я б рекомендував вам використовувати другий метод використання bindActionCreatorsз двох причин:

  • Метод універсальніший, не змушує вас використовувати його тільки в інших хуках чи компонентах
  • Якщо ви будете використовувати хук useDispatchedActions, вам необхідно враховувати, що екшени, які ви отримуватимете з хука і використовуватимете в компонентах, eslintвимагатиме додати їх залежно від інших Reactхуків. А це може призвести до несподіваних помилок (наприклад, до нескінченних викликів useEffect).

Джерело

Що таке абстракція облікового запису?

абстракція облікового запису

  • Aбстракція облікового запису (АОЗ) — технологія, здатна розширити можливості криптогаманців, підвищити їхню безпеку, покращити користувальницький досвід.
  • Концепцію АОЗ реалізує стандарт ERC-4337, активований у березні. Він дозволяє перетворювати гаманці користувачів на облікові записи смарт-контрактів.
  • Багато розробників переконані, що повсюдне впровадження нової технології прискорить перехід від Web 2.0 до Web3 і залучить “мільярди” користувачів Ethereum.

Що таке абстракція облікового запису?

Абстракція облікового запису – це метод налаштування блокчейн-мережі, при якому активи користувачів зберігаються виключно у смарт-контрактах, а не у зовнішніх облікових записах (External Owned Accounts, EOA). При використанні цього підходу криптогаманець перетворюється на унікальний смарт-контракт, який можна програмувати для різних цілей.

У березні 2023 року розробники Ethereum через смарт-контракт під назвою EntryPoint активували стандарт ERC-4337, який реалізує концепцію абстракції облікового запису та сумісний з усіма EVM-мережами на кшталт Polygon, Optimism, Arbitrum, BNB Smart Chain, Avalanche та Gnosis Chain. Рішення пройшло аудит Open Zeppelin.

ERC-4337 дозволяє перетворювати гаманці користувачів на облікові записи смарт-контрактів, щоб зробити адреси Ethereum зручнішими і запобігти втраті ключів.

Цей стандарт працює над наявною системою, для його повноцінного використання не потрібні суттєві зміни блокчейн-інфраструктури.

У криптоспільноті переконані, що система EOA обмежує можливості взаємодії користувачів із Ethereum. Зокрема, зовнішні облікові записи ускладнюють батчинг транзакцій. Також учасникам екосистеми необхідно зберігати на гаманці деяку кількість ETH для покриття витрат на газ при здійсненні транзакцій.

АОЗ – шлях до вирішення цих та багатьох інших проблем. Даний метод підвищує безпеку облікових записів користувачів, покращує користувальницький досвід і відкриває багато нових опцій для розробників.

Як працює АОЗ?

Згідно з документацією до ERC-4337, ключовими елементами АОЗ є:

  • UserOperation;
  • Пакувальник (Bundler);
  • Відправник (Sender);
  • EntryPoint;
  • Скарбник (Paymaster);
  • Агрегатор (Aggregator).

Всі ці елементи взаємодіють між собою, відкриваючи можливість Web3-розробникам створювати гаманці на основі смарт-контрактів та сумісні з новою системою dapps.

UserOperation – структура, яка характеризує операцію, що здійснюється користувачем. Так само, як і звичайна транзакція, вона містить параметри: sender, to, calldata, maxFeePerGas, maxPriorityFee, signature, nonce. Але є й додаткові елементи на зразок EntryPoint, Bundler та Aggregator.

Крім того, UserOperations відправляються в окремий мемпул. Там пакувальники можуть «загортати» їх у транзакції перед наступним включенням до блоку.

Ще одна “фішка” UserOperations – програмована автентифікація транзакцій.

Пакувальник моніторить альтернативний мемпул, спеціально створений для UserOperations. Він об’єднує кілька операцій користувача в одну транзакцію і відправляє її в контракт EntryPoint. Bundlers отримують винагороду за це, стягуючи частину плати за газ.

Пакувальники є критично важливим елементом інфраструктури в контексті ERC-4337. У заснованій на АОЗ екосистемі вони єдині учасники, яким необхідні зовнішні облікові записи.

EntryPoint — спеціальний контракт для верифікації та подальшої обробки UserOperations, що одержуються від пакувальників.

В ході процесу верифікації EntryPoint перевіряє, чи достатньо гаманця коштів для оплати газу. У процесі виконання операції контракт звертається до облікового запису через дані calldata, які визначені за допомогою UserOperation. Також EntryPoint стягує кошти з облікового запису на базі смарт-контрактів, щоб виділити Пакувальнику коректну кількість ETH для оплати газу.

Скарбник – смарт-контракт на основі ERC-4337, який реалізує різні підходи до використання газу. Він надає гнучкість використанню ресурсів, усуваючи необхідність зберігання нативних токенів на оплату транзакційних комісій.

Наприклад, учасники екосистеми можуть покривати витрати на газ не за допомогою ETH, а стейблкоінами на кшталт USDC або USDT. Крім того, з’являється можливість спонсорування оплати трансакційних комісій користувачів.

Агрегатор – Допоміжний контракт, призначений для валідації агрегованих підписів. Оптимізована обробка безлічі «пакетованих» UserOperations допомагає заощадити ресурси при взаємодії з даними calldata.

ERC-4337 створено на основі попередніх EIP – 2938 і 3074 . У першому сформульовано ідею про те, щоб смарт-контракти функціонували як «аккаунт вищого рівня, який оплачує комісії та ініціює виконання транзакції». Один із авторів EIP-2938 – співзасновник Ethereum Віталік Бутерін.

У EIP-3074 представлено ідею «делегування контролю над EOA смарт-контракту».

EIP-4337 поєднує основні тези попередніх EIP, але з додаванням альтернативного мемпулу. Використання нового стандарту не потребує внесення змін до рівня консенсусу.

Які можливості відкриває АОЗ?

Віталік Бутерін бачить в абстракції облікового запису каталізатор, який може залучити мільярд користувачів до мережі Ethereum.

За його словами, інтеграція технології дасть змогу оплачувати комісії не лише за допомогою ETH, а й іншими монетами, які перекладає користувач. Крім того, розширення дозволить децентралізованим програмам «спонсувати» транзакції для своїх клієнтів.

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

Інші переваги:

  • нові можливості забезпечення безпеки;
  • опції відновлення облікового запису у разі втрати ключів;
  • об’єднання транзакцій (наприклад, схвалення та виконання обмінної операції в один клік);
  • широкі можливості щодо покращення користувальницького досвіду для розробників гаманців та додатків;
  • заплановані та пакетні транзакцій;
  • оплата газу стейблкоінами;
  • альтернативні схеми підписів;
  • автоматизація операцій: ребалансування портфелів, реалізація стратегії усереднення доларової вартості.

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

Як АОЗ підвищує безпеку гаманців?

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

Це означає, що у разі втрати приватного ключа назавжди втрачається контроль над цифровими активами — вони або переходять до іншого, або заморожуються назавжди. Не дивно, що в мережі поширений фішинг, націлений на чужі сід-фрази.

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

Наприклад, з’являється можливість створення резервних ключів у разі втрати основних. Крім того, зберігання даних гаманця можна делегувати довіреним особам. При такому підході потенційному зловмиснику набагато складніше отримати повний контроль над засобами користувача.

Завдяки АОЗ можна зробити і так, щоб невеликі транзакції верифікувалися одним підписом, а великі — кількома.

Також смарт-гаманці надають можливості:

  • створення «білого списку» довірених адрес-отримувачів криптовалюти (це також може убезпечити кошти при крадіжці приватного ключа);
  • заморожування облікового запису з іншого авторизованого девайса у разі втрати основного пристрою для зберігання цифрових активів;
  • додавання попередньо затверджених облікових записів, які можуть авторизувати нові пристрої при втраті девайса або пароля («соціальне відновлення»);
  • запровадження добових, тижневих чи місячних лімітів на обсяг переказів з облікового запису.

Як АОЗ покращує користувальницький досвід?

Абстракція облікового запису передбачає підтримку гаманців на основі смарт-контрактів на рівні протоколу. Це відкриває розробникам простір для експериментів з досвідом користувача (UX).

Одне з найбільш очевидних покращень UX – групування транзакцій для підвищення швидкості та ефективності операцій. Завдяки цьому обмін токенів на DEX можна буде робити в один клік разом зі схваленням витрачання активів.

Користувачам не потрібно турбуватися про достатню кількість ETH для оплати газу. При потребі сам смарт-контракт обміняє токени на ефір, використовуючи останній для оплати транзакційних комісій.

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

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

На якому етапі зараз використання АОЗ?

В даний час активно розробляються гаманці на базі смарт-контрактів. У нових рішеннях зроблено акцент на безпеці та поліпшенні користувальницького досвіду.

На початку березня розробники платформи для управління цифровими активами Safe (раніше Gnosis Safe) представили SDK, яка вже доступна для використання в різних мережах.

Розробка під назвою Safe{Core} дозволяє використовувати АОЗ як альтернативу традиційним криптогаманцям із закритим та відкритим ключами.

Інструмент створений у співпраці з платіжним гігантом Stripe, а також провайдерами Web3-інфраструктури Gelato та Web3Auth.

«Абстракція облікового запису є ключем до залучення мільйонів нових користувачів. Вона покликана зробити використання Web3 таким самим зручним, як і Web 2.0», — заявив співзасновник Safe Річард Мейснер.

У липні проект інтегрував ERC-4337 у стек абстракції облікових записів для розробників Safe{Core} версії 1.4.1.

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

Джерело

TypeScript 5.2: Нове ключове слово: ‘using’

TypeScript using

У TypeScript 5.2 з’явиться нове ключове слово ‘using’, яке можна буде використовувати для утилізації чогось за допомогою функції Symbol.dispose, коли воно залишає область видимості.

{
  const getResource = () => {
    return {
      [Symbol.dispose]: () => {
        console.log('Hooray!')
      }
    }
  }
  using resource = getResource();
} // 'Hooray!

Він заснований на пропозиції TC39, яка нещодавно досягла третьої стадії (з чотирьох) у своєму просуванні до JavaScript. Це означає, що воно готове для тестування ранніми користувачами.

usingбуде надзвичайно корисним для управління такими ресурсами, як обробник файлів, з’єднання з базами даних і т.д.

Symbol.dispose

Symbol.dispose – це новий глобальний символ JavaScript. Все, що має функцію, призначену Symbol.dispose, буде вважатися “ресурсом” – ” об’єктом з певним часом життя ” – і може бути використане з ключовим словом using.

const resource = {
  [Symbol.dispose]: () => {
    console.log("Hooray!");
  },
};

await using

Для роботи з ресурсами, які необхідно утилізувати асинхронно, також можна використовувати Symbol.asyncDisposeі await.

const getResource = () => ({
  [Symbol.asyncDispose]: async () => {
    await someAsyncFunc();
  },
});
{
  await using resource = getResource();
}

В результаті перед продовженням програми очікується функція Symbol.asyncDispose.

Це буде корисним для таких ресурсів, як з’єднання з базами даних, коли необхідно переконатися, що з’єднання закрито до продовження роботи програми.

Приклади використання

Керування файлами

Доступ до файлової системи через файлові обробники в node може бути значно простіше using.

Без using:

import { open } from "node:fs/promises";
let filehandle;
try {
  filehandle = await open("thefile.txt", "r");
} finally {
  await filehandle?.close();
}

З використанням using:

import { open } from "node:fs/promises";
const getFileHandle = async (path: string) => {
  const filehandle = await open(path, "r");
  return {
    filehandle,
    [Symbol.asyncDispose]: async () => {
      await filehandle.close();
    },
  };
};
{
  await using file = await getFileHandle("thefile.txt");
  // щось робим з file.filehandle
} // автоматично утілізован!

З’єднання з базою даних

Управління з’єднаннями з базами даних – один із найпоширеніших варіантів використання в C#.

Без using:

const connection = await getDb();
try {
  // щось робим з connections
} finally {
  await connection.close();
}

З використанням using:

const getConnection = async () => {
  const connection = await getDb();
  return {
    connection,
    [Symbol.asyncDispose]: async () => {
      await connection.close();
    },
  };
};
{
  await using db = await getConnection();
  // щось робим з db.connection
} // автоматично закрито!

Переклад статті TypeScript 5.2’s New Keyword: ‘using’

Догляд за моїм BMW X5 e53

Вирішив зробити невеличке прибирання в салоні мого малого (BMW X5 e53) 🙂

А також виправити невеличкі косяки на ляді.  Попиловисив, повитирав шкіру серветками.

Потім ще поїхав на мийку самообслуговування.

Дуже цікаво провів час зі своєю улюбленою машинкою.

Що таке Тест Хауї і як він відноситься до криптовалют?

Тест Хауї (Howey Test)

  • Регулятори вже багато десятиліть використовують Тест Хауї для визначення належності активів до категорії цінних паперів.
  • Багато учасників криптоспільства впевнені, що цю схему не можна застосовувати щодо блокчейн-активів.
  • Нинішній глава SEC Гері Генслер відносить криптовалюти до цінних паперів.

Що таке Тест Хауї?

Тест Хауї (англ. Howey Test) — це перелік критеріїв, які допомагають визначити, чи має актив ознаки цінних паперів і чи є «інвестиційним контрактом».

Інструмент може також застосовуватися до проектів, комерційних угод та інших операцій.

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

У SEC переконані, що деякі криптоактиви та більшість ICO можуть кваліфікуватись як інвестиційні контракти.

Звідки виник Тест Хауї?

Тест Хауї розробили та вперше задіяли на практиці у 1946 році. Приводом для його створення став розгляд SEC із фірмами WJ Howey Co. та Howey-in-the-Hills Service з Флориди.

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

Верховний суд США дійшов висновку, що продані ділянки, по суті, були пропозицією незареєстрованих цінних паперів. Відповідно до закону, угоди мали ознаки інвестиційного контракту — учасникам потрібно було лише вкласти кошти для отримання джерела пасивного доходу.

На основі кейсу SEC vs. WJ Howey Co. з’явилися чотири критерії, що стали основними складовими Тесту Хауї:

  1. Інвестування коштів (у будь-якій формі: готівка, чеки, а згодом і криптоактиви).
  2. Вкладення капіталу спільне підприємство.
  3. Обґрунтовані очікування прибули в інвесторів.
  4. Доход, отриманий зусиллями інших.

Підхід прижився, і з тих пір критерії тесту Хау застосовуються для визначення приналежності різних активів до цінних паперів.

Чому SEC застосовує Тест Хауї до криптовалютів?

З розвитком ринку криптовалют, а особливо після буму первинних пропозицій монет 2017-2018 років, регулятори по всьому світу задалися питанням, чи мають нові активи властивості цінних паперів. З цією метою у деяких випадках американська SEC застосовує Тест Хауї.

Комісія з цінних паперів та бірж США випустила керівництво з використання вищезгаданого фреймворку щодо криптовалют та інших активів на базі блокчейну.

«Термін „цінний папір“ включає „інвестиційний контракт“, так само як і інші інструменти на кшталт акцій, облігацій та передані частки [в капіталі компаній]. Цифровий актив має бути проаналізований для визначення того, чи має він характеристики будь-якого продукту, що відповідає визначенню цінного паперу відповідно до федерального законодавства», — йдеться в документі SEC.

Один із яскравих прикладів застосування Тесту Хауї в контексті криптоіндустрії – кейс із токенсейлом Telegram. Проект TON залучив $1,7 млрд завдяки продажу монет Gram кваліфікованим інвесторам у США та за їх межами, проте так і не запустився через конфлікт із Комісією з цінних паперів та бірж США.

Інший приклад – позов SEC проти Ripple, поданий у 2020 році. Регулятор звинуватив компанію у поширенні незареєстрованих цінних паперів на суму близько $1,3 млрд. у вигляді нативних токенів платформи.

Однак справа, що тривала кілька років, набула несподіваного для багатьох учасників криптоспільства повороту. 13 липня 2023 року Суд Південного округу Нью-Йорка дійшов висновку, що програмні продажі та інші розподіли токена XRP від ​​Ripple не є пропозицією та реалізацією інвестиційних контрактів.

У червні SEC подала до суду на біржу Binance та її CEO Чанпен Чжао, а також на американську компанію Coinbase. В обох випадках претензії стосуються незареєстрованих пропозицій токенів та сервісів для отримання пасивного доходу.

Нинішній глава Комісії Гері Генслер твердо переконаний, що криптовалюти – інвестиційні контракти. Отже, відповідальним за емісію монет платформ необхідно зареєструватися в SEC.

Криптоіндустрія, що багато в чому орієнтується на США, змушена зважати на Тест Хауї. Чимало проектів позиціонують цифрові активи, що випускаються, як токени управління (governance-токени), оскільки ті використовуються в голосуваннях в рамках ДАТ. Однак через правову невизначеність безліч проектів і, відповідно, активів можуть привернути увагу регуляторів.

Чому SEC не відносить біткоїн до цінних паперів?

У червні 2018 року діючий тоді глава SEC Джей Клейтон заявив, що біткоін не є «інвестиційним контрактом».

«Криптовалюти – це замінники суверенних грошей. Біткоїн може замінити долар, євро, ієну. Цей тип валюти не є цінним папером», – сказав він.

За словами Клейтона, до цінних паперів можна віднести токени, оскільки вони виконують роль цифрових активів і фінрегулятор США контролює цю сферу.

«Якщо я даю вам гроші, а ви створюєте підприємство і передаєте мені право на частку від спільного капіталу, то ми говоримо про цінні папери. Комісія регулює пропозиції подібних цінних паперів та торгівлю ними», – прокоментував він.

Також влітку 2018 року директор з корпоративних фінансів SEC Вільям Хінман заявив, що біткоїну та Ethereum більш властиві характеристики товару, що передбачає компетенцію Комісії з термінової біржової торгівлі США (CFTC).

“Якщо мережа криптовалюти досить децентралізована, а покупці не покладаються на третій бік у питанні управління, монета не є цінним папером”, – наголосив чиновник.

Що не так із Тестом Хауї?

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

У цьому переконана і комісарка SEC Хестер Пірс. Вона підкреслила, що багато стартапів залучали фінансування під обіцянку побудувати мережу. Це створювало підстави для визнання токенів, що випускаються, як «інвестиційні контракти» по Тесту Хауї.

На думку Пірс, існування інвестиційного контракту залежить не тільки від активу, а й від обіцянок, що з ним асоціюються. Ці два компоненти не пов’язані один з одним, зазначила вона.

«Те, що я продала вам апельсиновий гай у рамках інвестиційного контракту, не перетворює його на цінний папір. Апельсинова гай плюс обіцянки про те, як я збираюся доглядати її і приносити вам прибуток, — це пропозиція цінних паперів», — пояснила Пірс.

Представниця SEC упевнена, що Тест Хауї сам по собі не дає однозначної відповіді на питання відповідності криптовалюти статусу інвестиційного контракту у відриві від самого процесу їх розміщення, в якому можна виявити подібні ознаки.

Переклад статті

Чим governance-токени відрізняються від utility-токенів?

Чим governance-токени відрізняються від utility-токенів?

  • Токени управління (governance) – своєрідні акції в контексті блокчейн-екосистем. Вони надають право голосувати з ключових питань розвитку децентралізованих протоколів.
  • Governance-токени — не лише інструменти прямої демократії. Їх можна задіяти у багатьох інших юзкейсах.
  • Utility-токени є засобом взаємодії з сервісами або для отримання доступу до певних функцій, а також спеціальних привілеїв в екосистемах. Такі активи не можуть використовуватися для голосування в рамках ДАТ.

Що таке токен управління?

Токен управління (або governance-токен) – цифровий актив, власники якого можуть голосувати з ключових питань розвитку блокчейн-проекту в рамках децентралізованої автономної організації.

Остання може приймати рішення щодо:

  • визначення величини різних комісій протоколу та їхнього розподілу серед учасників екосистеми;
  • змін інтерфейсу користувача;
  • створення та наповнення фонду розвитку проекту;
  • грантів розробникам тощо.

Багато криптоактивів в DeFi-екосистемі є governance-токени. Юзкейси останніх не обмежуються лише голосуваннями. Такі монети зазвичай можна задіяти у стейкінгу, лендингових протоколах та прибутковому фермерстві.

Існують рейтинги токенів управління, де вони відсортовані за зменшенням ринкової капіталізації.

Що таке utility-токен?

Utility-токени – криптоактиви, призначені для конкретних юзкейсів у певних екосистемах. Їх також називають нативними чи утилітарними токенами.

Такі активи також відтворюють механіку газу мережі Ethereum. Наприклад, utility-токен MATIC екосистеми Polygon використовується для оплати трансакційних комісій.

Basic Attention Token (BAT) дозволяє винагороджувати користувачів браузера Brave за їхню увагу до рекламних матеріалів, а також виступати як форма оплати рекламодавцям.

У деяких випадках utility-токен необхідний для доступу до платформи, але частіше він застосовується опціонально, для використання певних функцій або привілеїв.

Наприклад, власники BNB отримують знижку на торгові комісії при взаємодії із централізованою біржею Binance, а також можливість підтримки нових проектів на платформі Launchpad.

Цей актив є ключовим елементом BNB Chain. Крім того, він задіяний для оплати трансакційних комісій під час операцій у DeFi-екосистемі.

LINK, нативний токен Chainlink, використовується в основному для оплати роботи операторів нід, на базі яких функціонують оракули децентралізованої мережі.

У чому основні відмінності gobernance-токенів від utility-токенов?

Токени управління багато в чому нагадують прості акції у традиційних фінансах, що дозволяють голосувати з ключових питань громадських компаній.

Утримувачі таких блокчейн-активів виносять, приймають чи відхиляють пропозиції у межах ДАТ.

Таким чином, gobernance-токени — ключовий елемент децентралізованих систем, інструмент прямої демократії.

У свою чергу, utility-токени не дають права голосу – лише можливість застосування у певних юзкейсах. Більшість таких активів є чимось на кшталт урізаної версії governance-токенів.

У чому переваги та недоліки governance-і utility-токенів?

Перерахуємо головні переваги токенів управління:

  • Децентралізація . Лише при використанні таких активів DeFi-програми можна називати децентралізованими. Без governance-токенів платформи були б безликими наборами смарт-контрактів, підконтрольними лише розробникам та засновникам.
  • Можливості для співробітництва . Голосування закладають основу конструктивних дискусій щодо майбутнього проектів. Обговорення у свою чергу створюють стимули для співпраці учасників екосистеми.
  • Залучення . Governance-токени є важелями впливу на майбутнє блокчейн-проектів, які мотивують власників брати участь у голосуваннях.

Є й підводне каміння:

  • Елементи прямої демократії не гарантують, що проект неодмінно розвиватиметься у правильному напрямку. Завжди є учасники ДАТ, які керуються насамперед егоїстичними інтересами. Серед таких гравців можуть бути великі власники токенів, здатні суттєво впливати на результати голосування.
  • Якщо ухвалене співтовариством рішення виявиться неоптимальним і в результаті нашкодить проекту, винна буде більшість. Отже, ніхто з учасників ДАТ не відповідатиме.
  • У кожній децентралізованій автономній організації є власники великої кількості державних-токенів. Вони здатні самостійно створювати пропозиції і домагатися прийнятних собі результатів. Останні можуть суперечити інтересам інших учасників спільноти. Отже, механізм розподілу токенів управління має бути добре продуманий.
  • Через правову невизначеність безліч проектів і, відповідно, активів можуть привернути увагу регуляторів.

Володіння utility-токенами також може бути пов’язане із значними ризиками. Наприклад, під час «ICO -лихоманки» 2017-2018 років було створено безліч «пустушок», які не мають фундаментальної вартості та перспектив. Такі активи часто випускалися шахраями, щоб отримати кошти початківців криптоінвесторів.

Є винятки – саме в ті роки відбулися токенсейли нині найбільшої централізованої біржі Binance та провідної некастодіальної платформи Uniswap.

Вартість та перспективи utility-токенів залежать від якості відповідного проекту та актуальності юзкейсу, в якому вони задіяні. Якщо платформа не має попиту, актив неухильно падає в ціні.

Utility-токени мало сприяють масовому прийняттю криптовалют, оскільки їхнє реальне застосування в основному обмежується окремими платформами та юзкейсами. Тому лише небагато з таких активів зберігали вартість протягом тривалих періодів часу.

Джерело