Skip to content

Norito

Norito Энэ нь Iroha Canonical seriesization layer юм. Энэ нь байт хэлбэрээр хэрэглэгддэг 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 хадгалахБлок нөөцийн ачаалал, сэргээлт дутагдал, жагсаалт, үүрэг гүйцэтгэх тэмдэгүүд Norito -ийн багцтай мэдээллээр хадгалагдаж байна.
Өргөдлийн илтгэлNexus, өгөгдлийн хүртээмж, SoraFS, дамжуулалт, хэрэглээнд чиглэсэн манифст ашиглах Norito тухайн манифст гарын үсэг зурна эсвэл хэшлэгдэх ёстой.
Сургалтын .Norito Хэвлэлийн урсгал нь Norito манфист, сегментийн толгой, хяналтын төхөөрөмж, нийцүүлэлтийн тоног төхөөрмж ашигладаг.

Norito бол ухаалаг гэрээний хэл биш. Энэ нь гүйлгээ, гэрээний дуудлага, манифест болон API ашиглах ачааллыг дамжуулах тодорхойлогч хуудас ба кодэк юм.

Хөдөлмөрийн ачаалалтын загвар

Бүх цахилгаан болон дискийн Norito ашиг ачааллыг үндсэн хэсгээр хүргэж, дараа нь кодируулсан ашиг ачаалал байтнууд байдаг. Үндэсний хэшинг, шалгуур тэмдэг, туслах APIs-д зориулагдсан уншлаагүй эсвэл хараагүй ашиг ачааллууд нь тээвэрлэхээс өмнө шууд үр дүнг үндсэн хэстэд багтаадаг.

Гадаргын талбарИх хэмжээЗорилго
Магич .4 байтASCII NRT0, нь Norito бус мэдээллийг эрт татгалзахын тулд ашиглагддаг.
Төгсч1 байтТомоохон хувилбарыг хэлбэлзүүлэх. Одоогийн хэрэглээний ачаалл 0 ашиглана.
Бага хувилбар1 байтv1-ийн decode hint. Одоогийн утга нь 0x00. Тугууд байрлалыг тодорхойлно.
Схема хаш16 байтУрьдчилсан декодерүүдээр гэнэтийн хэрэглээний ачааллыг татгалзахын тулд ашигладаг төрөл хувилбар.
Шахалт1 байт0 = None, 1 = Zstd. Үл мэдэгдэх утгыг татгалзана.
Payload-ийн урт8 байтШахагдаагүй payload-ийн урт, little-endian u64.
CRC648 байтШахагдаагүй payload-ийн CRC64-XZ шалгах нийлбэр.
Тугууд1 байтCompact length, packed sequence болон packed struct-ийн байрлалын тугууд.

Үргэлт нь 40 байт юм. Дикодер нь тамир, хувилбар, дэмжлэг үзүүлэх зургийн маск, ашиг шилжилтийн урт, хяналтын тоо болон схема хэшийг дахин боловсруулж эхлэхээс өмнө баталгаажуулдаг

Байрлалын тугууд

Norito нь эцсийн загадлагын байт дахь зохион байгуулалтын сонголтыг хадгаламжлана. Үндсэн v1 туслах нь компакт арьс дундаж префиксын хувьд COMPACT_LEN (0x02) гаргадаг. Зураг авагчид flags = 0x00 -ээр кодлахдаа тодорхой тогтмол өргөн урттай префиксийг уншихад үлддэг.

Тэмбэр .ХексОрчин байдалҮр дүн
PACKED_SEQ0x01дэмжлэг .Үндэсний хэмжээний цуглуулгыг орчуулалт хүснэгт болон дараах өгөгдлийн блоктай кодлуулдаг.
COMPACT_LEN0x02Үндсэн хуулийн дагууҮр дүнгийн уртны урьдчилсан хэсгүүдийн хувьд Canonical unsigned varints ашигладаг.
PACKED_STRUCT0x04дэмжлэг .Үргэлж үүсгэсэн урсгалыг өргөн барьсан талбайны ашигтай ачаалал болгон кодлож байна.
VARINT_OFFSETS0x08Хөрөнгө оруулалт .V1 -д үгүйсгэгдсэн; багтаж буй урсгалын орчуулга нь тогтмол өргөн u64.
COMPACT_SEQ_LEN0x10Хөрөнгө оруулалт .V1 -д үгүйсгэгдсэн; дээд түвшний дараагийн уртны толгой нь тогтмол өргөн байна u64.
FIELD_BITSET0x20Шаардлагатай дэмжлэг үзүүлэхБагаруулсан уран бүтээлүүдэд битсэт нэмнэ. Зөвхөн тодорхой хэмжээний шаардлагатай талбар нь хэмжээний префиксүүдтэй байна. PACKED_STRUCT болон COMPACT_LEN шаарддаг.

Тугууд ил тод байна. Decoder нь payload-ийн хэлбэр, minor version эсвэл heuristic-ээс байрлалыг таамаглахгүй. Үл мэдэгдэх эсвэл хүчингүй хослолыг татгалздаг тул бүх peer payload-ийг ижил утгаар тайлна.

Кодирын дүрэм

Norito нь Iroha өгөгдлийн загварын нийтлэг мэдээллийн хэлбэрүүдэд тодорхойлолт зохион байгуулалтыг ашигладаг:

  • Мөрүүд [len][utf8-bytes] хэлбэртэй; идэвхтэй үед len нь COMPACT_LEN-ийг дагана.
  • COMPACT_LEN тохируулсан бол утга тус бүрийн уртад compact varint ашиглана.
  • COMPACT_LEN байхгүй бол утга тус бүрийн урт нь 8 байтын little-endian u64 байна.
  • Дарааллын уртын толгой нь v1-д тогтмол 8 байтын little-endian u64 байна.
  • Vec<u8> нь нэг байт дахь уртын оронд [len_u64][raw-bytes] гэж кодлогдсон байна.
  • Багаруулсан урсгал нь (len + 1) монотон u64 орчуулгыг ашигладаг бөгөөд дараа нь конкатент элементийн ашигтай ачаалал байдаг.
  • Картууд нь u64 -ийн тогтмол тэмдэгээр бүртгэлийн тоог кодлож, тодорхойлох товчлогын дарааллыг ашигладаг. HashMap-ийн өгөгдлийг кодлахаас өмнө товчлоор ангилдаг; BTreeMap -ийн байгалийн дарааллыг хэрэглэж байна.
  • BigInt нь u32 байтын урттай, 512-битийн хаалттай бага хэмжээний хоёр дахь нэмэлт байтыг ашигладаг.
  • Numeric аравтын утгыг (mantissa, scale) хэлбэрээр кодлоно: mantissa нь бүхэл тоон утгыг, scale нь бутархай орны тоог хадгална.

Эдгээр дүрэм гарын үсэг болон hash-д чухал. Ижил логик transaction үүсгэсэн хоёр SDKs яг ижил canonical bytes гаргах ёстой.

Схемийн хэшүүд

Norito хэлбэрийн ашиг ачааллууд нь 16 байтын схем хэшийг толгойлоор хадгалдаг. Үндсэн хуулийн хэш нь бүрэн тохирсон төрлийн нэрээс үүдэлтэй. Структураль схем хашинг боломжийг олгодог бүтээн байгуулалтууд нь хэшээ каноникийн схемээс гаргаж өгдөг.

Typed decoder-ууд schema mismatch-ийг татгалзана. Ингэснээр client хүчинтэй Norito frame-ийг буруу төрөл болгон санамсаргүй decode хийхээс хамгаалагдана. SDK fixture bundle нь node data model-оос зөрөхөд ихэвчлэн ийм алдаа гарна.

Сургуулалт, хурдац

Norito нь логикийн ашиг шимтгэлийг өөрчлөхгүйгээр тодорхой, зохицох товчлогыг дэмжиж байна:

ҮргэлтЗорилго
to_bytesТолгойг, дараа нь шахагдаагүй payload-ийг кодлоно.
to_compressed_bytesZstd-ээр кодлож, товчлолт хэсгийг толгой дээр бүртгэнэ.
to_bytes_autoСэтгэмжлэх нь үнэ цэнэтэй эсэхийг шийдвэрлэхийн тулд дэтерминист эвристик хэрэглэж болно.
CRC64 хурдацлахCLMUL нь x86_64 эсвэл PMULL нь aarch64 дээр ашиглах боломжтой бол хаа сайгүй нэвтрүүлэгтэй CRC64-XZ.
GPU CRC64 болон хатуулахСонгон шалгаруулах металл эсвэл CUDA туслах нь томоохон ачааллыг хурдаж, дараа нь CPU замаар буцаж ирэх боломжтой.

Хардварын хурдац нь уншигдсан агуулгыг хэзээ ч өөрчлөхгүй. CRC болон JSON хурдацыг нэвтрүүлэг бүхий гаралтын бит-байттай нийлүүлэх ёстой. Zstd төхөөрөмжийн байт нь CPU ба GPU коджуулагчдын хооронд ялгаатай байж болно, гэхдээ уншилт ашигласан ачаалл болон Norito толгойны метадэт нь баталгаажуулахын тулд тодорхой хэвээр байна.

JSON Тус дэмжлэг

Norito нь Norito хэлбэрийн системийг орхихгүйгээр JSON-ийн хэрэгцээ шаарддаг төгсгөлийн тоног төхөөрөмжүүд болон хэрэгсэлүүдийн эх үүсвэртэй JSON сүлжээг багтаасан байна.

JSON шинж чанарХэрэглээний тохиолдол
norito::json::{to_json, from_json}JSON тодорхойлох хэлбэртэй код / декод.
Сайхан, зохиолчдад туслахCLI урвалж, тоног төхөөрөмж, дамжуулах std::io нэгтгэл.
DOM үнэлгээNorito-ийн JSON үнэлгээний загварыг ашиглан хөтөлбөрийн манипуляцын үйл ажиллагаа.
Удахгүй бичиж JSONDTO халуун замын бүтэцтэй лент дээр суурилсан унтраах код/код.
Нурын хувилбарыг уншигчТагварын сангаас жирсийг зээл авах токен сканируулж байна.
1-р шатны хурдасч .AVX2, NEON, Металл, эсвэл CUDA бүтцийн индекстэйг сонголттой хэлбэрээр scalar fallback.

Iroha код нь norito::json ёсны ачааллын хувьд API туслагчдыг сонгох ёстой. Үйлдвэрлэлийн зам руу энгийн serde_json нэмэх нь SDKs болон Torii олборлогчдын хүлээсэн схема, талбайны үйл ажиллагаанаас буурах эрсдэл үүсгэдэг.

Дэргэдэх дэмжлэг

Rust Мэдээллийн төрөлүүд нь гарын үсэгт кодексийн кодтой харьцуулахад түлшний макрог ашигладаг. Norito двойны кодэк, схема, JSON Хөдөлмөрийн туслах.

Үндэсний талбайн шинж чанар:

ТавилгаҮр дүн
#[norito(rename = "other")]Схема болон JSON нийцүүллийн хувьд тогтвортой цувралчилсан нэр ашигладаг.
#[norito(skip)]Encoder талбарыг орхино. Decoder тухайн талбарт Default утгыг өгнө.
#[norito(default)]Default -ийг ашигладаг, хэрэв кодлогдсон ашиг ачаалл талбайг тээхгүй бол.
#[norito(skip_serializing_if = "...")]JSON -аас predicate-ийн тохиромжтой талбайг устгадаг бөгөөд тодорхойлолтын кодлогын алдааг хадгалж байна.

Үргэлжүүд нь ч боломжтой тохиолдолд кодлогдсон уртын нэгийг болон тохирсон уртны тооцоог илрүүлнэ. Үндсэн дүрслэлийг нэвтрүүлэгчид буфер хадгалах, нэмэлт хувилбаруудыг сахиулах зорилгоор ашигладаг.

Бэлэнгийн гэр бүлүүд

Iroha эсвэл SDK холбогчдыг эх үүсвэрээс барьж байх үед, Norito шинж чанар нь ямар туслах болон хурдасч хэрэглэгддэг вэ гэдгийг сонгодог:

Тодруулгын гэр бүлЭнэ нь юу хийх боломжтой вэ?
deriveБинэрийн, схемын болон JSON дэргэдэх үйл ажиллагааны макрог дахин экспортлосон.
compressionHeader-framed ашигтай ачааллын Zstd дэмжлэг.
packed-seqОффсетийн хүснэгтийг ашиглан багцсан цуглуулгын тавилга.
packed-structБагаруулсан дэрвивээс үүссэн бүтцийн зураг төхөөрөмж.
compact-lenVarint-ийн дундаж хэмжээний түвшин.
columnarNorito Барилгын блок, зохицох AoS/NCB шугамын кодэкүүд, сканируулсан хүнд замны зориулалтаар зээл авсан үзлэг; урьдчилсан байдлаар node-codec шинжлэлийн багцд багтаж байна.
strict-safeХохирол учруулж болох зам дахь харамсалтыг зохион байгуулалттай алдаанаар өөрчлөх.
simd-accelCPU эрчимжилт, тодорхой хэмжээний хямралтай.
jsonЭхний JSON шинжилгээч, зохиолч, DOM, бичигдсэн урсгал, хурдны зам.
json-std-ioУншигч, зохиолчдын туслалцааг JSON багт хуримтлажээ.
metal-stage1, cuda-stage1Нүүр хуудас GPU JSON бүтцийн индексийн хяналт талууд.
metal-stage2JSON бүтэцний тасгийн хувьд сонголттой металлын метабарааны ангилалт.
metal-crc64, cuda-crc64Томоохон ачаалалд зориулсан GPU 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 Стриминг нь хэвлэл мэдээллийн хэрэгсэл болон бодит цаг хугацааны тээврийн гадаргуудад ижил тодорхойлолттай хандлагыг өргөн хүргэж байна.

Захирах хувилбарЗорилго
Өргөдлийн илтгэлсегментийн үүрэг, нууцлалтын чиглэл, боломжууд, codec-ийн хувилбар, шифрлэлийн цогцолбор, агуулгын гол метабараа мэдэгдэх.
Тодруулгын хэсгүүдБинг сегментийн тоо, хугацаа, хэсгийн тоо, цаг хугацаа, энтропийн хэв маяг, дууны товчлолт, Merkle түлх.
Нүүр хуудасҮзэгчид болон релейн хэрэглээний ачааны хэсгийг нэвтрүүлэхээс өмнө хяналт тавих ёсоор шалгах хэрэгтэй.
Хяналтын төхөөрөмжМэдээлэл, сэтгэгдэл, гол шинэчлэл, чадварын хэлэлцээрийг явуулах.
HPKE гол шинэчлэлүүдТээврийн нууцыг яриа хэлэлцээ хийх хувилбарыг ашиглан шилжүүлэн суулгаж, томоохон хэмжээгээр нэмэгдүүлж байна
Мэргэжлийн зохицуулалтын хэлэлцээрЭнэ нь хувилбарын хэсгүүд, датаграммын хязгаарлалт, эргэлтийн урсгал, хувийн нууцлалтын шаардлагыг дэмждэг.
FEC болон хариултХадалдлын бодит цаг хугацааны чиглэлд дитерминист хүлээн авагчдын тайлан, тэнцвэрлэлийн шийдвэрүүдийг ашигладаг.
Төгсгөлтийн векторОлон хэлний тоног төхөөрөмжүүд нь SDKs ижил манифест, сегмент, энтропийн урсгалыг буулгаж байна.

Хэвлэлийн урсгалын тухай кодэк болон энтропийн профил нь Norito транзакцын / хайрын үндсэн хэлбэрээс тусгагдсан боловч тэдгээрийн манифесүүд, хяналтын мэдээллээр Norito ашиглаж байгаа тул маршрутизлалт, төлбөр тооцоо, дахин тоглолт, аудитын баримт дурдах боломжтой хэвээр байна.

Үйл ажиллагааны удирдамж

  • SDK бүтээн байгуулагч, үүсгэсэн холболт нь гар урлагийн Norito байт дээр илүү тохиромжтой байна.
  • Схемийн зөрчлийг сүлжээний дампуур алдаа биш, хувилбар эсвэл тоног төхөөрөмжийн асуудал гэж үзээрэй.
  • .nrt, .norito болон manifest артефактуудыг тэдгээрийг үүсгэсэн release эсвэл incident багцад архивлана.
  • Гарын үсэг зурсан, хэшлэсэн эсвэл хадгалсан өгөгдлийн үнэний эх сурвалж нь Norito байна. Dashboard болон гараар шалгахад JSON проекц ашиглана.
  • Шинэ Torii төгсгөлийн төслийг нэмэхдээ JSON, Norito эсвэл хоёулаа хүлээн зөвшөөрдөг эсэхийг бичиж, /openapi дахь дэмжлэгтэй агуулгын төрөлүүдийг илрүүлнэ.
  • Хурдасгуур идэвхжүүлэхээс өмнө scalar гаралттай parity test ажиллуулна. Хурдасгуур алдаа гаргавал детерминист scalar fallback ашиглана. Payload-ийн утга зүй өөрчлөгдөх ёсгүй.

Урьдчилсан нэвтрүүлэг