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 ашиглана. |
| SDKs | Rust, 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. |
| CRC64 | 8 байт | Шахагдаагүй payload-ийн CRC64-XZ шалгах нийлбэр. |
| Тугууд | 1 байт | Compact length, packed sequence болон packed struct-ийн байрлалын тугууд. |
Үргэлт нь 40 байт юм. Дикодер нь тамир, хувилбар, дэмжлэг үзүүлэх зургийн маск, ашиг шилжилтийн урт, хяналтын тоо болон схема хэшийг дахин боловсруулж эхлэхээс өмнө баталгаажуулдаг
Байрлалын тугууд
Norito нь эцсийн загадлагын байт дахь зохион байгуулалтын сонголтыг хадгаламжлана. Үндсэн v1 туслах нь компакт арьс дундаж префиксын хувьд COMPACT_LEN (0x02) гаргадаг. Зураг авагчид flags = 0x00 -ээр кодлахдаа тодорхой тогтмол өргөн урттай префиксийг уншихад үлддэг.
| Тэмбэр . | Хекс | Орчин байдал | Үр дүн |
|---|---|---|---|
PACKED_SEQ | 0x01 | дэмжлэг . | Үндэсний хэмжээний цуглуулгыг орчуулалт хүснэгт болон дараах өгөгдлийн блоктай кодлуулдаг. |
COMPACT_LEN | 0x02 | Үндсэн хуулийн дагуу | Үр дүнгийн уртны урьдчилсан хэсгүүдийн хувьд Canonical unsigned varints ашигладаг. |
PACKED_STRUCT | 0x04 | дэмжлэг . | Үргэлж үүсгэсэн урсгалыг өргөн барьсан талбайны ашигтай ачаалал болгон кодлож байна. |
VARINT_OFFSETS | 0x08 | Хөрөнгө оруулалт . | V1 -д үгүйсгэгдсэн; багтаж буй урсгалын орчуулга нь тогтмол өргөн u64. |
COMPACT_SEQ_LEN | 0x10 | Хөрөнгө оруулалт . | V1 -д үгүйсгэгдсэн; дээд түвшний дараагийн уртны толгой нь тогтмол өргөн байна u64. |
FIELD_BITSET | 0x20 | Шаардлагатай дэмжлэг үзүүлэх | Багаруулсан уран бүтээлүүдэд битсэт нэмнэ. Зөвхөн тодорхой хэмжээний шаардлагатай талбар нь хэмжээний префиксүүдтэй байна. 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-endianu64байна.- Дарааллын уртын толгой нь 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_bytes | Zstd-ээр кодлож, товчлолт хэсгийг толгой дээр бүртгэнэ. |
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 үнэлгээний загварыг ашиглан хөтөлбөрийн манипуляцын үйл ажиллагаа. |
| Удахгүй бичиж JSON | DTO халуун замын бүтэцтэй лент дээр суурилсан унтраах код/код. |
| Нурын хувилбарыг уншигч | Тагварын сангаас жирсийг зээл авах токен сканируулж байна. |
| 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 дэргэдэх үйл ажиллагааны макрог дахин экспортлосон. |
compression | Header-framed ашигтай ачааллын Zstd дэмжлэг. |
packed-seq | Оффсетийн хүснэгтийг ашиглан багцсан цуглуулгын тавилга. |
packed-struct | Багаруулсан дэрвивээс үүссэн бүтцийн зураг төхөөрөмж. |
compact-len | Varint-ийн дундаж хэмжээний түвшин. |
columnar | Norito Барилгын блок, зохицох AoS/NCB шугамын кодэкүүд, сканируулсан хүнд замны зориулалтаар зээл авсан үзлэг; урьдчилсан байдлаар node-codec шинжлэлийн багцд багтаж байна. |
strict-safe | Хохирол учруулж болох зам дахь харамсалтыг зохион байгуулалттай алдаанаар өөрчлөх. |
simd-accel | CPU эрчимжилт, тодорхой хэмжээний хямралтай. |
json | Эхний JSON шинжилгээч, зохиолч, DOM, бичигдсэн урсгал, хурдны зам. |
json-std-io | Уншигч, зохиолчдын туслалцааг JSON багт хуримтлажээ. |
metal-stage1, cuda-stage1 | Нүүр хуудас GPU JSON бүтцийн индексийн хяналт талууд. |
metal-stage2 | JSON бүтэцний тасгийн хувьд сонголттой металлын метабарааны ангилалт. |
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 бичигдсэн хүлээн зөвшөөрөгдөх эсвэл буцааж өгөх үед эдгээр цөмөр ашиглана:
Content-Type: application/x-norito
Accept: application/x-noritoХөдөлмөрийн төгсгөл нь хоёр төлөөлөлд дэмжлэг үзүүлдэг бол үйлчлүүлэгчид тодорхой сонголт жагсаалтыг илгээх боломжтой:
Accept: application/x-norito, application/jsonTorii дугаарлах алдаа болон телеметриар тооцогддог. Нийт тохиолдлын шалтгаан нь хүчингүй тылсым, дэмжлэггүй хувилбар, дэмжлэг үзүүлэх шинж тэмдэг, хяналтын тооны зөрүү, буруу хэлбэртэй 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-ийн утга зүй өөрчлөгдөх ёсгүй.
Үүнтэй холбоотой хуудсууд
- Torii эцсийн цэгүүд
- Эхлэл нэвтрүүлэг
- Мэдээллийн загварын схема
- JavaScript / TypeScript SDK
- Python SDK
- Swift болон iOS SDK