Skip to content

Norito

Norito булып тора Iroha Каноник сериализация ҡатламы. Был байт форматы ҡулланылған ваҡытта тиҫтерҙәр, SDKs, CLI ҡорамалдар, Torii, Kura, һәм барлыҡҡа килгән артефакттарҙың тап шул уҡ файҙалы йөкләмә буйынса килешергә тейешлеге билдәле.

Norito данлыҡтың консенсус, ҡултамғалау, хэшинг, ныҡышмалылыҡ йәки SDK-ара хеҙмәттәшлек итеүсәнлек өлөшө булғанда ҡулланығыҙ. JSON һөҙөмтәле нөктә операторҙар өсөн кеше уҡый торған проекция тәҡдим иткәндә ҡулланығыҙ.

Norito ҡайҙа барлыҡҡа килә

ЙөҙөлөшNorito нисек ҡулланыла?
Транзакциялар һәм һорауҙарTorii аша ебәрелгән ҡул ҡуйылған транзакциялар һәм һорауҙар файҙалы йөкләмәләре Norito тип кодлана.
Башланмышkagami genesis sign ҡул ҡуйылған .nrt блогын сығара, ул стартапта йөкләнеү менән тиң.
Torii тип яуаптарТиплы бинар яуаптар ярҙамында тамамлау пункттары Accept: application/x-norito ҡуллана.
SDKsRust, Python, JavaScript, Kotlin/Java, Swift, һәм Android клиенттар ҡуллана Norito ҡул менән йыйылған байттар урынына төҙөүселәр йәки бәйләүҙәр.
Kura һаҡлауБлок файҙалы йөкләмәләре, тергеҙеү сираттағы машиналары, реестры һәм commit markers Norito‐ҡа рамкалы мәғлүмәт булараҡ һаҡлана.
МанифесттарNexus, мәғлүмәттәрҙең булыуы, SoraFS, трансляция һәм ҡушымтаға ҡараған манифестар ҡулланмаһын ҡулланалар Norito, әгәр манифестҡа ҡул ҡуйырға кәрәк.
СтримлауNorito Стримингта Norito манифесттар, сегмент башлыҡтары, идара итеү кадрҙары һәм конфиденциаль фиксаторҙар ҡулланыла.

Norito - был аҡыллы килешеү теле түгел, ә операцияларҙы, контракт саҡырыуҙарын, манифесттарҙы һәм API файҙалы йөкләмәләрен алып барған детерминистик конверт һәм кодек.

Хеҙмәт йөкләмәһе моделе

Һәр сымлы йәки дисктағы Norito файҙаланыу йөкләмәһе башлыҡ менән рамкалана, унан һуң кодланған файҙаланыу йөкләнеш байттары килә. Башлыҡһыҙ йәки яланғас файҙаланыу йөкмәткеләре эске хэшинг, эталондар һәм ярҙамсы APIs өсөн һаҡлана, улар һөҙөмтәне транспортҡа тиклем шунда уҡ башлыҡҡа төрөп ҡуялар.

БаҫмаОҙонлоғоМаҡсат
Магия4 байтASCII NRT0, Norito булмаған мәғлүмәттәрҙе иртә кире ҡағыу өсөн ҡулланыла.
Майор1 байтТөп версияны форматташтырыу. Хәҙерге файҙалы йөкләмәләр 0 ҡуллана.
Бәләкәй1 байтV1 өсөн декодлау һылтанмаһы. Хәҙерге ҡиммәте 0x00. Байраҡтар төҙөлөшө һүрәтләй.
Схема hash16 байтТип идентификацияһы типлаулы декодерҙар көтөлмәгән файҙалы йөкләмәләрҙе кире ҡағыу өсөн ҡулланыла.
Компрессия1 байт0 = None, 1 = Zstd. Билдәһеҙ баһалар кире ҡағыла.
Яҡшы йөкләмә оҙонлоғо8 байтБәләкәй ендиан u64 булараҡ ҡыҫырыҡланмаған файҙалы йөк оҙонлоғо.
CRC648 байтCRC64-XZ ҡыҫырыҡланмаған файҙалы йөктең контроле суммаһы.
Байраҡтар1 байтДөйөм оҙонлоҡтарҙа, пакетта яҙылған эҙмә-эҙлектәрҙә һәм пакетталған һуҡмаларҙа билдәләр ҡуйыу.

Башлыҡ 40 байтҡа етә. Декодерҙар магияны, версияны, ярҙам күрһәтелгән флаг-масканы, файҙалы йөкләмә оҙонлоғон, чекс суммаһын һәм схема хешын тергеҙер алдынан ҡабатлай.

Ойоштороу флагтары

Norito финал башлыҡ байтында урынлаштырыу һайлағандарын һаҡлай. COMPACT_LEN (0x02Яуаплы даими киңлектәге оҙонлоҡтағы префикстар саҡырыусылар кодлағанда уҡырға мөмкин. flags = 0x00.

БайраҡХексСтатусыҺөҙөмтә
PACKED_SEQ0x01ЯҡлауКүсереүсән күләмле коллекцияларҙы оффсет таблицаһы һәм бер-береһенә тура килгән мәғлүмәттәр блогы менән кодлай.
COMPACT_LEN0x02ДефолтҠиммәттәре буйынса оҙонлоҡтағы префикстар өсөн каноник ҡулланмаған варианттар ҡулланыла.
PACKED_STRUCT0x04ЯҡлауКодтар сығарылған-генерацияланған структуралар булараҡ һыйҙырылған баҫыу файҙалы йөкләмәләре.
VARINT_OFFSETS0x08ҠалғанV1 кире ҡаҡҡан; йыһазландырылған эҙмә-эҙләнештәрҙе ҡаплау даими киңлектәге u64.
COMPACT_SEQ_LEN0x10ҠалғанV1 кире ҡағылған; иң юғары кимәлдәге эҙмә-эҙлекле оҙонлоғо башлыҡтары даими киңлек менән u64.
FIELD_BITSET0x20Талаптар ярҙамындаБаҫтырылған строктар өсөн биттер йыйынтығын өҫтәй, шуға күрә асыҡ үлсәмгә мохтаж булған ҡырҙар ғына ҙурлыҡ префикстарын йөрөтә. PACKED_STRUCT һәм COMPACT_LEN талап итә.

Байраҡтар асыҡтан-асыҡ. Декодерҙар пластты файҙалы йөк формаһынан, бәләкәй версиянан йәки эвристиканан һығымта яһамай. Билдәһеҙ йәки ғәмәли булмаған комбинациялар кире ҡағыла, шуға күрә бөтә тиҫтерҙәр ҙә файҙалы йөкләмәне бер төрлө аңлай.

Кодировка ҡағиҙәләре

Norito Iroha мәғлүмәт моделендә күрһәтелгән дөйөм мәғлүмәттәр формалары өсөн детерминистик схемалар ҡуллана:

  • Һылтанмалар [len][utf8-bytes]; len ҡулайлаштырылған осраҡта COMPACT_LEN артынан килә.
  • COMPACT_LEN ҡуйылғанда, бер баһаға тиклемге оҙонлоҡҡа компактлы варинт ҡулланыла.
  • Әгәр COMPACT_LEN юҡ икән, бер ҡиммәттәге оҙонлоғо 8 байтлыҡ бәләкәй эндиан u64 була.
  • Сиквенция оҙонлоғо башлыҡтары 8-байт аҙ ендиан u64 v1 фиксирован.
  • Vec<u8> бер байтҡа бер оҙонлоҡҡа түгел, ә [len_u64][raw-bytes] тип кодлана.
  • Баҫтырылған эҙмә-эҙлектәре ҡулланыу (len + 1) monotonic u64 компенсацияһы, һуңынан конкатенат элементтар файҙалы йөкләнеүҙәр.
  • Карталар яҙма һанын u64 менән кодлай һәм детерминистик клавиша тәртибен ҡуллана. HashMap яҙыуҙар кодлауҙан алда клавиша буйынса sortлана; BTreeMap уның тәбиғи тәртибен ҡулланған.
  • BigInt u32 байт оҙонлоғо һәм 512-битлы япмаһы менән ҙур булмаған ике биттең тулыландырыу байттарын ҡуллана.
  • Numeric (mantissa, scale) тип кодлана, унда мантисса бөтөн һандар ҡиммәтен һәм масштаб өлөшлө цифрҙар һанын һаҡлай.

Был ҡағиҙәләр ҡултамғалар һәм хештар өсөн мөһим. ике SDKs бер үк логик транзакция төҙөргә тейеш шул уҡ каноник байттар сығараһы.

Схема һештары

Norito тибындағы файҙалы йөкләмәләр баш биттә 16 байтлы схема хешын йөрөтә. Дефолт хэш тулыһынса квалификациялы тип атамаһынан алынған. Структураль схема һешерен тәьмин итеүсе конструкциялар урынына каноник схеманан хэште ала.

Типлы декодерҙар схема яраҡһыҙлыҡтарын кире ҡаға. Был клиенттарҙы дөрөҫ булмаған типҡа ярашлы Norito кадрҙы осраҡлы рәүештә декодлауҙан һаҡлай һәм SDK ҡоролмалар төркөмө узел мәғлүмәттәр моделенән тайпылағанда ғәҙәти уңышһыҙлыҡ режимы булып тора.

Йығыу һәм тиҙләтеү

Norito логик файҙалы йөкләмәне үҙгәртмәйенсә, асыҡ һәм адаптив сығыуҙы тәьмин итә:

ФункцияһыМаҡсат
to_bytesБаҫманы шифрлау, һуңынан ҡыҫырыҡланмаған файҙалы йөкләмә.
to_compressed_bytesZstd менән кодлағыҙ һәм баш биттә компрессия билдәһен яҙҙырығыҙ.
to_bytes_autoКомпрессияның файҙалымы-юҡмы икәнлеген билдәләү өсөн детерминистик эвристика ҡулланырға кәрәк.
CRC64 тиҙләтеүҺәр ерҙә портатив CRC64-XZ ҡуллана, әгәр бар икән, x86_64 йәки aarch64 буйынса PMULL менән CLMUL.
GPU CRC64 һәм компрессияҺайланма металл йәки CUDA ярҙамсылары ҙур файҙалы йөкләмәләрҙе тиҙләтә ала, һуңынан CPU юлдарынан кире төшә.

Хардвер тиҙләтеүе кодланған йөкмәткеһен бер ҡасан да үҙгәртмәй. CRC һәм JSON тиҙләтеүселәре портатив сығарылыш бит-бит менән тура килергә тейеш. Zstd кадр байттары CPU һәм GPU кодерҙары араһында айырмаланырға мөмкин, әммә кодланған файҙалы йөкләмә һәм Norito башлыҡ метамәғлүмәттәрен раҫлау өсөн билдәләү дауам итә.

JSON Ярҙам

Norito үҙ эсенә тыуған JSON кәрәкле һуңғы пункттар һәм ҡорамалдар өсөн туплау JSON ташламайынса Norito тип системаһы.

JSON функцияһыҠулланыу осрағы
norito::json::{to_json, from_json}Детерминистик типланған JSON коды/декоды.
Яҡшы һәм яҙыусы ярҙамсыларыCLI сығанағы, ҡушымталары һәм трансляция std::io интеграцияһы.
DOM ҡиммәттәрNorito ның JSON ҡиммәт моделе аша программалы манипуляция.
Тиҙ яҙыу JSONDTO эҫе юлдар өсөн структуралы таҫма нигеҙендә декодлау / кодлау.
нуль күсермә уҡыусыһыМөмкин булғанда инеүҙең ҡылдарын алған билдәләр сканерлауы.
Этап-1 тиҙләтеүсеФакультатив AVX2, NEON, Металл йәки CUDA структура индексацияһы скаляр һынылыш менән.

Iroha код өҫтөнлөк бирергә тейеш norito::json типлау өсөн ярҙамсы API файҙалы йөкләмәләр. serde_json етештереү юлдары өсөн схеманан һәм баҫыу менән идара итеү тәртибенән айырмау хәүеф SDKs һәм Torii экстракторҙар.

Дәрәжәле ярҙам

Rust мәғлүмәт төрҙәре, ғөмүмән, ҡулдан килгән кодек коды урынына сығарылыш макроларын ҡуллана. сығарылыш ҡатламы Norito бинар кодектарҙы, схемаларҙы һәм JSON ярҙамсыларын булдыра ала.

Ғәҙәттән тыш өлкә атрибуттары:

АтрибутыҺөҙөмтә
#[norito(rename = "other")]Схема һәм JSON яраҡлаштырыу өсөн тотороҡло сериаллы исем ҡуллана.
#[norito(skip)]Кодлаусы яланы ситләтә. Декодер уның Default баһаһын бирә.
#[norito(default)]Default ҡуллана, әгәр декодланған файҙалы йөк баҫыуҙы йөрөтә алмай.
#[norito(skip_serializing_if = "...")]Детерминистик декодлау ҡағиҙәләрен һаҡлап алып, predicate тап килгәс JSON майҙандарынан ситләтелә.

Асылыштар шулай уҡ кодланған оҙонлоҡтағы күрһәткестәрҙе һәм мөмкин булған ерҙә теүәл оҙонлоҡҡа иҫәпләүҙәрҙе аса. Кодлаусылар был кәңәштәрҙе буферҙарҙы һаҡлап ҡалыу һәм өҫтәмә күсермәләрҙе булдырмау өсөн ҡуллана.

Ҡәҙналы ғаиләләр

Iroha йәки SDK бәйләнештәрен сығанаҡтан төҙөгәндә, Norito үҙенсәлектәре ярҙамсы һәм тиҙләтеүселәрҙең ниндәй булыуын һайлай:

Ҡалыптар ғаиләһеУл нимәгә булышлыҡ итә ?
deriveБанар, схема һәм JSON сығарылмалары өсөн ҡабаттан экспортланған процедура макроһы.
compressionZstd support for header-frameed payloads.
packed-seqОффсет таблицалары ярҙамында йыйылмалар әҙерләү.
packed-structБаҫмалы сығарылмалар менән барлыҡҡа килгән структуралар.
compact-lenVarint оҙонлоғо буйынса prefixes.
columnarNorito Колонна блоктары, адаптив AoS/NCB сират кодэктары һәм сканерлыҡ ауыр юлдары өсөн алынған ҡараштар; default node-codec функциялар йыйылмаһына индерелгән.
strict-safeПаникаларҙы декодлау хаталы юлдары структуралаштырылған хаталарға әйләндерә.
simd-accelCPU тиҙләтеү, әгәр мөмкин булһа, детерминистик кире ҡайтыу менән.
jsonТуған JSON анализлаусы, яҙыусы, DOM, типланған сығарылмалар һәм тиҙ юлдары.
json-std-ioУҡыусы һәм яҙыусы ярҙамсылары JSON стекҡа ҡатламы менән ҡуйылған.
metal-stage1, cuda-stage1Факультатив GPU JSON структура индексы битлектәре.
metal-stage2JSON конструкция таҫмаһы өсөн металл метаданмалар классификацияһы.
metal-crc64, cuda-crc64GPU CRC64 ярҙамсылары ҙур йөк өсөн.
gpu-compressionВариантлы металл йәки CUDA Zstd тиҙләтеү ҙур файҙалы йөк өсөн.
stage1-validateТиҙерәкләштерелгән JSON структура индекстарын скаляр сығанаҡ менән сағыштырыусы дебаг раҫлау.

SDKs һәм релиз профилдәре араһында үҙенсәлектәре булыуы мөмкин. Сел форматы урындағы төҙөлөш флагтары түгел, ә баш бит һәм схема менән идара ителә.

Torii һәм Norito RPC

Torii күп оператор маршруттары өсөн JSON асыра, әммә типланған бинар маршруттарҙа Norito ҡулланыла. ток типланған Norito HTTP корпустары өсөн медиа тибы application/x-norito.

Norito тип яҙылған йомғаҡлау пункты ҡабул иткәндә йәки кире ҡайтарғанда ошо башлыҡтарҙы ҡулланығыҙ:

http
Content-Type: application/x-norito
Accept: application/x-norito

Әгәр һуңғы пункт ике күрһәткесте лә хуплай икән, клиенттар асыҡ өҫтөнлөк исемлеген ебәрә ала:

http
Accept: application/x-norito, application/json

Декодлау етешһеҙлектәре тип яҙылғанса барлыҡҡа килә . Torii хаталар һәм телеметрия буйынса иҫәпләнгән. ярҙамһыҙ версия, ярҙамһыҙ функциялар флагы, иҫкәртеү суммаһының тап килмәүе, хаталы формалаштырылған UTF-8, валид Enum билдәһе, һәм схема буйынса тап килмәй.

Norito RPC транспорты транспорт конфигурацияһы аша һайлана. Оператор панелдәрендә үтенестәрҙең кисектерелеүе, өҙлөгөүҙәр, актив бәйләнештәр, яуап байттары һәм torii_norito_decode_failures_total трафигы JSON трафигынан айырым күҙәтелә тейеш.

Norito Ағымлаштырыу

Norito Стриминг шул уҡ детерминистик алымды медиа һәм реаль ваҡыт транспорты өҫкө йөҙҙәренә киңәйтә. Уның төп өлөштәрендә:

Стриминг функцияһыМаҡсат
МанифесттарСегмент йөкләмәләрен, хосусилыҡ маршруттарын, мөмкинлектәрен, кодек профилен, шифрлау комплекттарын һәм контент төп метамәғлүмәттәрен белдерә.
Сегмент башлыҡтарыБинд сегмент номеры, оҙайлығы, киҫәк һанын, ваҡытын, энтропия режимын, аудио йомғаҡлауҙы һәм Меркл тамырҙарын.
Ваҡытлы йөкләмәләрТамашасыларға һәм эстафеталарҙы хеҙмәтләндереүгә йәки декодлауға тиклем манифестҡа ҡарата файҙалы йөклөктө тикшерергә рөхсәт итегеҙ.
Контроль кадрҙарыМанифест иғлан, фекер алышыуҙар, төп яңыртыуҙар һәм мөмкинлектәре буйынса һөйләшеүҙәр алып барыу.
HPKE төп яңылыҡтарТранспорт серҙәрен килешеүҙәр буйынса һәм монотонно арта торған счетчиктар ярҙамында әйҙәгеҙ.
Мөмкинлек буйынса һөйләшеүҠатнашыусы функциялар биттәре, датаграмма сикләүҙәре, кире ҡайтыу циклы һәм хосусилыҡ талаптары.
FEC һәм фекер алышыуДетерминистик ҡабул итеүсе отчеттары һәм юғалтыу реаль ваҡыт юлдары өсөн паритет ҡарарҙары ҡулланыла.
Тейешлек векторҙарыТелдәр араһындағы ҡушымталар SDKs шул уҡ манифесттарҙы, сегменттарҙы һәм энтропия ағымдарын декодлауын иҫбатлай.

Стриминг-специфик кодектар һәм энтропия профилдәре төп Norito транзакция / һорау форматынан айырылып тора, әммә уларҙың манифесттары һәм идара итеү мәғлүмәттәре һаман да Norito ҡуллана, шуға күрә маршрутизация, иҫәпләү, ҡабаттан уйнатыу һәм аудит иҫбатлауҙары ҡабатланмаҫ булып ҡала .

Операция буйынса күрһәтмәләр

  • SDK төҙөүселәрҙе һәм ҡул менән эшләнгән Norito байтҡа ҡарағанда барлыҡҡа килгән бәйләнештәрҙе өҫтөнлөк биреү.
  • Схеманың тап килмәүен версия йәки ҡоролма проблемаһы булараҡ ҡарағыҙ, ваҡытлыса селтәр боҙолоуы тип түгел.
  • Архив .nrt, .norito, һәм уларҙы барлыҡҡа килтергән иреккә сығарыу йәки инцидент төрөндәге манифест артефакттары.
  • Ҡулланыу Norito ҡул ҡуйылған, һешланған йәки һаҡланған мәғлүмәттәр өсөн дөрөҫлөктөң сығанағы булараҡ. JSON Дашбордтар һәм ҡул менән тикшереү өсөн проекциялар.
  • Яңы типланған Torii һуңғы нөктәһен өҫтәгәндә, ул JSON, Norito йәки икеһен дә ҡабул итәме-юҡмы икәнен документта ҡалдырығыҙ һәм /openapi буйынса ярҙам ителгән йөкмәтке төрҙәрен күрһәтегеҙ.
  • Акселераторҙы эшләтер алдынан, скаляр сығанаҡтарға ҡарата паритлыҡ һынауҙарын үткәрегеҙ. Әгәр акселератор уңышһыҙлыҡ кисерһә, детерминистик скаляр кире төшөүҙе ҡулланығыҙ. Яҡшы йөкләмә семантикаһы үҙгәрешһеҙ һаҡланырға тейеш.

Үрге йүнәлештәге ссылкалар