Why this is needed Зачем это нужно Бұл неге керек
Every accounting system answers the question “what is recorded”. CYRQODE answers a different one: what happened, in what relation to everything else, under whose authority, and whether it can be proven a year from now. Любая система учёта отвечает на вопрос «что записано». CYRQODE отвечает на другой: что произошло, в какой связи с остальным, по чьим полномочиям и можно ли это доказать через год. Кез келген есеп жүйесі «не жазылған» деген сұраққа жауап береді. CYRQODE басқа сұраққа жауап береді: не болды, қалғанымен қандай байланыста, кімнің өкілетімен және бір жылдан кейін оны дәлелдей аласыз ба.
A provable history of a batch: which input batches, which equipment, which operator with a valid permit, which revision of the process sheet. In a dispute that is the difference between a claim and proof. Доказуемая история партии: из каких входных партий, на каком оборудовании, оператором с действующим допуском, по какой ревизии техкарты. При споре это разница между словом и доказательством. Партияның дәлелденетін тарихы: қандай шикізат партияларынан, қандай жабдықта, жарамды рұқсаты бар қай оператордың қатысуымен және технологиялық картаның қай нұсқасы бойынша өндірілгені. Дау кезінде бұл жай мәлімдеме мен дәлелдің айырмашылығы.
One scan instead of trusting the label: what the product is, who made it, when, what is inside. No app, no registration, no tracking. Один скан вместо доверия к этикетке: что за продукт, кто сделал, когда, что внутри. Без приложения, без регистрации, без слежки. Белгіге сенудің орнына бір скан: өнім қандай, кім жасаған, қашан, ішінде не бар. Қолданба жоқ, тіркелу жоқ, жіберілетін деректер жоқ.
An open protocol instead of someone else's black box: format, canonicalization, signature, test vectors and a working scanner. Your own generator, your own scanner, your own ledger — implementable without us. Открытый протокол вместо чужого чёрного ящика: формат, канонизация, подпись, тестовые векторы и рабочий сканер. Свой генератор, свой сканер, свой журнал — реализуемо без нашего участия. Біреудің қара жәшігі орнына ашық протокол: пішім, канондау, қолтаңба, тест векторлары және жұмыс істейтін сканер. Өз генераторыңыз, өз сканеріңіз, өз журналыңыз — біздің қатысусыз іске асырылады.
An identity that outlives its carriers: the label came off, the card was replaced — the identifier stays the same, the history is not torn, the replacement is recorded as a separate event. Идентичность, переживающая носители: белгі отклеилась, карту заменили — идентификатор прежний, история не рвётся, замена фиксируется отдельным событием. Тасымалдағышы ауысып кетсе де сақталатын идентификация: белгі алынып тасталды, карта ауыстырылды — идентификатор өзгермейді, тарих үзілмейді, алмасу жеке оқиға ретінде тіркеледі.
The key difference from blockchain solutions: no token, no mandatory distributed network. The service works on its own; external witnesses can be attached later, when and if they are needed. Ключевое отличие от блокчейн-решений: никакого токена, никакой обязательной распределённой сети. Сервис работает сам по себе, внешние свидетельства подключаются позже, когда и если они нужны. Блокчейн шешімдерінен негізгі айырмашылық: токен жоқ, міндетті таратылған желі жоқ. Қызмет өзі жұмыс істейді, сыртқы куәгерлер тек кейін, қажет болса қосылады.
Read a mark Прочитать знак Метканы оқу
Open the scanner and point the camera at the mark. A registry record will open — what the technology actually proved. Откройте сканер и наведите камеру на метку. Откроется запись реестра — то, что технология действительно доказала. Сканерді ашып камераны белгіге бағыттаңыз. Реестр жазбасы ашылады — технология шынымен не дәлелдегені.
Camera frames stay on your device: the scanner sends nothing outside. Кадры с камеры остаются на устройстве: сканер ничего не отправляет наружу. Камера кадрлары құрылғыңызда қалады: сканер сыртқа ештеңе жібермейді.
Version 0.1: you have to aim at the mark, automatic search within the frame will come later. If the camera does not open (common inside messengers), the scanner will offer to open itself in a browser or to recognize the mark from a file snapshot. Версия 0.1: метку нужно навести в прицел, автоматический поиск в кадре появится позже. Если камера не открывается (частый случай внутри мессенджеров), сканер предложит открыть себя в браузере или распознать метку по снимку из файла. Нұсқа 0.1: белгіны прицелге түйіру керек, кадр ішіндегі автоматты іздеу кейін пайда болады. Камера ашылмаса (мессенджерлер ішінде бұл жиі кездеседі), сканер браузерде ашылуды немесе файл суретінен белгіны тануды ұсынады.
Open the scanner Открыть сканер Сканерді ашуCreate a mark Создать знак Метка жасау
A mark encodes exactly one entity identifier — a UUID — plus the service fields of the profile. Enter the identifier and you get a ready vector mark for print or screen. Знак кодирует ровно один идентификатор сущности — UUID — и служебные поля профиля. Вставьте идентификатор и получите готовую векторную метку для печати или экрана. Метка дәл бір нысан идентификаторын — UUID — және профильдің қызметтік өрістерін кодтайды. Идентификаторды енгізіңіз — басып шығаруға да экранға дайын векторлық белгі аласыз.
A direct prohibition by the specification: name, date, author, owner, price, rating, location, status, expiry date, employee role, any text or URL. The reason is not to save space. All of that changes, the mark does not. If you bake an expiry date into the mark, then every re-sorting of a batch means reprinting the physical carriers. Прямой запрет спецификации: имя, дата, автор, владелец, цена, рейтинг, местоположение, статус, срок годности, роль сотрудника, любой текст или URL. Причина не в экономии места. Всё перечисленное меняется, а белгі — нет. Если зашить срок годности в знак, то при пересортировке партии придётся перепечатывать физические носители. Спецификация бойынша мыналарды белгіге енгізуге тыйым салынады: атау, күн, автор, иесі, баға, рейтинг, орын, мәртебе, жарамдылық мерзімі, қызметкердің рөлі, кез келген мәтін не URL. Себебі орын үнемдеу емес: бұлардың бәрі өзгеруі мүмкін, ал белгі өзгермейді. Жарамдылық мерзімін белгіге енгізсеңіз, партия қайта сұрыпталған сайын физикалық тасымалдағыштарды қайта басып шығару керек болады.
Open the generator Открыть генератор Генераторды ашуExamples from the repository Примеры из репозитория Репозиторийден үлгілер
The registry records here are for demonstration: the products and companies are fictitious. Real customer records live in the service database and never reach this page. Записи реестра демонстрационные: продукты и компании вымышлены. Реальные записи клиентов живут в базе сервиса и на эту страницу не попадают. Реестр жазбалары көрсеткіш үшін: өнімдер мен компаниялар ойдан шығарылған. Нақты клиент жазбалары қызмет базасында сақталады және бұл бетке түспейді.
Batch traceability: two marks on one package Прослеживаемость партии: два знака на одной упаковке Партияның қадағалануы: бір қаптамада екі белгі
These are different entities, and they are generated under different circumstances. They must not be confused: what can be printed at all depends on it. Это разные сущности, и генерируются они при разных обстоятельствах. Путать их нельзя: от этого зависит, что вообще можно напечатать. Бұл — әртүрлі нысандар, олар түрлі жағдайда жасалады. Оларды шатастыруға болмайды: не басып шығарылатыны соған байланысты.
| Product mark Знак продукта Өнім белгісі | Batch mark Знак партии Партия белгісі | |
|---|---|---|
| What it denotes Что обозначает Нені білдіреді | SKU “Grandma's Milk” in general SKU: «Молоко от бабули» вообще SKU: «Әже сүті» — жалпы | a specific L2609-06 release конкретный выпуск L2609-06 нақты L2609-06 шығарылымы |
| When it is created Когда создаётся Қашан жасалады | once, when the product is registered один раз, при заведении продукта бір рет, өнім енгізілгенде | for every batch produced при выпуске каждой партии әр партия өндірілгенде |
| How it is applied Как наносится Қалай жағылады | in the packaging layout, offset printing в макете упаковки, типографская печать орам макетінде, типографиялық басылым | on the line, the same way as the filling date на линии, тем же способом, что и дата розлива өндіріс желісінде, құйылған күнді басу тәсілімен бірдей әдіспен |
| How often it changes Как часто меняется Қаншалықты өзгереді | almost never почти никогда өте сирек өзгереді | every batch каждую партию әр партияда |
| Logo in the center Логотип в центре Логотип ортада | appropriate: high-quality print, known size уместен: печать качественная, размер известен орны бар: сапалы басылым, өлшемі белгілі | not needed: inkjet printing would smear it не нужен: каплеструйная печать его смажет қажет емес: сия бүріккіш принтерде ол жайылып кетеді |
The batch mark is applied on the fly — by the same equipment that prints the date. The resolution is lower, the ink spreads. That is why it is always monochrome, without a logo, and larger in module size. Знак партии наносится на ходу — тем же оборудованием, что печатает дату. Разрешение ниже, краска растекается. Поэтому он всегда монохромный, без логотипа, и крупнее по модулю. Партия белгісі өндіріс барысында күнді басатын жабдықтың өзімен бірге басылады. Басып шығару ажыратымдылығы төмен, сия жайылып кетеді. Сондықтан белгі әрдайым бір түсті, логотипсіз және ірі модульдермен жасалады.
The practical conclusion: if production has no variable printing, there is physically no way to apply the batch mark. Then only the product mark goes on the package, and the buyer reads the expiry date with their eyes. The model allows for that — the levels are independent. Практический вывод: если у производства нет переменной печати, знак партии физически нанести нечем. Тогда на упаковку идёт только знак продукта, а срок годности покупатель читает глазами. Модель это допускает — уровни независимы. Практикалық қорытынды: өндірісте айнымалы деректерді басып шығару мүмкіндігі болмаса, партия белгісін қаптамаға басу мүмкін емес. Онда қаптамаға тек өнім белгісі басылады, ал сатып алушы жарамдылық мерзімін көзбен оқиды. Модель бұған мүмкіндік береді: деңгейлер бір-бірінен тәуелсіз.
What a batch record contains Что в записи партии есть Партия жазбасында не бар
the fact, the time, participants as identifiers, references to evidence as hashes. факт, время, участники в виде идентификаторов, ссылки на доказательства в виде хэшей. факт, уақыт, қатысушылар идентификатор түрінде, дәлелге сілтемелер хэш түрінде.
personal data, document contents, commercial terms. персональных данных, содержимого документов, коммерческих условий. жеке деректер, құжат мазмұны, коммерциялық шарттар.
The record proves that a document with exactly such content existed on the stated date, without storing the document itself. Anyone can check: compute the SHA-256 of their own copy and compare it with the record. Запись доказывает, что документ с точно таким содержимым существовал на указанную дату, не храня сам документ. Проверить может любой: посчитать SHA-256 своей копии и сравнить с записью. Жазба толық осы мазмұндағы құжат көрсетілген күні бар болғанын дәлелдейді, құжаттың өзін сақтамайды. Кез келген адам тексере алады: өз көшірмесінің SHA-256 хэшін есептеп, жазбамен салыстырыңыз.
The first ledger record: the name, symbol and specifications recorded on 6 September 2026 together with document fingerprints. It is the first thing the technology proved — its own beginning. Первая запись журнала: имя, символ и спецификации, зафиксированные 6 сентября 2026 года вместе с отпечатками документов. Это первое, что технология доказала, — собственное начало. Журналдағы алғашқы жазба: нысанның атауы, белгісі мен сипаттамалары 2026 жылғы 6 қыркүйекте құжаттардың хэштерімен бірге тіркелген. Технология ең алдымен өзінің шыққан тегін дәлелдейді.
Open the record → Открыть запись → Жазбаны ашу →
The repository holds examples of events outside the production vertical: document.signed.v1 with a qualified electronic signature and manufacturing.batch.produced.v1 with pasteurisation, a revision of the process sheet and a laboratory report.
В репозитории лежат примеры событий вне производственной вертикали: document.signed.v1 с квалифицированной электронной подписью и manufacturing.batch.produced.v1 с пастеризацией, ревизией техкарты и лабораторным заключением.
Репозиторийде өндіріс саласынан тыс оқиға үлгілері бар: document.signed.v1 — аттестатталған электрондық қолтаңбамен, manufacturing.batch.produced.v1 — пастеризациямен, технологиялық карта нұсқасымен және зертхана қорытындысымен.
The protocol core is industry-neutral: manufacturing fields live in a separate profile, the core knows nothing about them. Ядро протокола отраслево-нейтрально: производственные поля живут в отдельном профиле, ядро о них не знает. Протокол ядросы салаға бейтарап: өндіріс өрістері бөлек профильде тұрады, ядро оларды білмейді.
What is public and what is not Что публично, а что нет Қайсысы ашық, қайсысы жабық
A mistake at this boundary is irreversible: what has been released under a free licence cannot be withdrawn, and data that has landed in a public repository stays in git history forever, even if the file is deleted. Ошибка в этой границе необратима: выпущенное под свободной лицензией не отзывается, а попавшие в публичный репозиторий данные остаются в истории git навсегда, даже если файл удалить. Бұл шекарадағы қате қайтарылмас: еркін лицензиямен шығарылғанды кейін қайтарып алуға болмайды, ал ашық репозиторийге түскен деректер git тарихында мәңгілік қалады, файл жойылса да.
The protocol specification, schemas, test vectors, client libraries, the mark generator, the scanner and demonstrational registry records. Спецификация протокола, схемы, тестовые векторы, клиентские библиотеки, генератор знака, сканер и демонстрационные записи реестра. Протокол спецификациясы, схемалар, тест векторлары, клиент кітапханалары, белгі генераторы, сканер және көрсеткіш үшін арналған реестр жазбалары.
Specification and schemas — CC BY 4.0, code — Apache 2.0. Спецификация и схемы — CC BY 4.0, код — Apache 2.0. Спецификация мен схемалар — CC BY 4.0, код — Apache 2.0.
The ledger core, the resolver, projections and aggregates, access policies, operations. Ядро журнала, резолвер, проекции и агрегаты, политики доступа, эксплуатация. Журнал ядросы, резолвер, проекциялар мен агрегаттар, қолжетімділік саясаттары, эксплуатация.
This is a service, not a protocol: it holds the data of specific legal entities. Это сервис, а не протокол: на нём живут данные конкретных субъектов. Бұл протокол емес, қызмет: онда нақты субъектілердің деректері сақталады.
The rule in case of doubt: if it belongs to the protocol — public, if it belongs to operations — private. You can open the closed at any time. You cannot close the open. Правило при сомнении: относится к протоколу — публично, относится к эксплуатации — приватно. Открыть закрытое можно в любой момент. Закрыть открытое — нельзя. Күмән туғанда қолданылатын ереже: протоколға қатыстысы — ашық, пайдалануға қатыстысы — жеке. Жабық нәрсені кез келген уақытта ашуға болады. Ашық болғанды қайта жабу мүмкін емес.
Two principles that determine everything else Два принципа, определяющие всё остальное Қалған бәрін айқындайтын екі принцип
First: the core is industry-neutral. Manufacturing is the first and most saturated consumer, but not the subject of the protocol. Manufacturing fields live in a separate profile, the core knows nothing about them. Logistics, document management and any other domain connect the same way. Первый: ядро отраслево-нейтрально. Производство — первый и самый насыщенный потребитель, но не предмет протокола. Производственные поля живут в отдельном профиле, ядро о них не знает. Так же подключаются логистика, документооборот, любая другая область. Біріншісі: ядро салаға бейтарап. Өндіріс — бірінші әрі ең қанық тұтынушы, бірақ протоколдың пәні емес. Өндіріс өрістері бөлек профильде тұрады, ядро оларды білмейді. Логистика, құжат айналымы және кез келген басқа сала да солай қосылады.
Second: personal data never enters the ledger. An event refers to an entity identifier, not to a person. Who exactly hides behind the identifier is known only to the data owner in their own system. The technology is still able to prove that the action was performed by an entity with the proper permit at the proper time — knowing neither the name nor the position. Второй: персональные данные в журнал не попадают. Событие ссылается на идентификатор сущности, а не на человека. Кто именно скрыт за идентификатором — знает только владелец данных в своей системе. Технология при этом способна доказать, что действие совершила сущность с нужным допуском в нужное время, — не зная ни имени, ни должности. Екіншісі: жеке деректер журналға енбейді. Оқиға адамға емес, нысан идентификаторына сілтеме жасайды. Идентификатордың артында кім тұрғанын тек дерек иесі өз жүйесінде біледі. Технология соған қарамастан, әрекетті тиісті рұқсат бар нысан тиісті уақытта жасағанын дәлелдей алады — есімін де, лауазымын да білмей.
How to connect Как подключиться Қалай қосылуға болады
Three ways. The boundary runs exactly where the format ends and storage begins. Три способа. Граница проходит ровно там, где кончается формат и начинается хранение. Үш жол. Шекара пішім аяқталып, сақтау басталған жерден дәл өтеді.
You generate marks and read them yourself, resolving them into your own system. No agreements with anyone are needed — the licences allow it. Вы генерируете знаки и читаете их у себя, резолвя в собственную систему. Никаких договорённостей ни с кем не нужно — лицензии это позволяют. Белгілерді өзіңіз жасап, өз жүйеңізде оқи аласыз. Ешкіммен келісім жасаудың қажеті жоқ — лицензиялар бұған рұқсат береді.
You implement storage yourself, but follow the event format, canonicalization and signature. Then any compatible party can verify your events, and a foreign scanner can read your marks. Вы реализуете хранение сами, но соблюдаете формат события, канонизацию и подпись. Тогда ваши события сможет проверить любая совместимая сторона, а ваши метки прочтёт чужой сканер. Сақтауды өзіңіз іске асырасыз, бірақ оқиға пішіміне, канондауға және қолтаңбаға сай боласыз. Сонда кез келген үйлесімді жақ оқиғаларыңызды тексере алады, ал белгіларыңызды басқа сканер оқи алады.
You send events to the CYRQODE service and use the ready resolver. Here access is required: the service address, the namespace identifier and credentials. That is already the contractual part. Вы отправляете события в сервис CYRQODE и пользуетесь готовым резолвером. Здесь понадобится доступ: адрес сервиса, идентификатор пространства имён и учётные данные. Это уже договорная часть. Оқиғаларды CYRQODE қызметіне жіберіп, дайын резолверді қолданасыз. Ол үшін қызмет мекенжайы, атаулар кеңістігінің идентификаторы және тіркелгі деректері қажет. Бұл — келісімшартқа қатысты бөлік.
What you need to prepare in any case: Что нужно приготовить в любом случае: Кез келген жағдайда дайындау керек:
- Canonical — serialization per RFC 8785, byte-identical to the vectors. Каноническим — сериализация по RFC 8785, побайтово совпадающая с векторами. Канонды — RFC 8785 бойынша сериализация, векторлармен байт дәл сәйкес.
-
Signed —
ed25519-sha256-v1orecdsa-p256-sha256-v1. Подписанным —ed25519-sha256-v1илиecdsa-p256-sha256-v1. Қолтаңбаланған —ed25519-sha256-v1немесеecdsa-p256-sha256-v1. - With cause references — an event does not hang in the air, it points to what it came from and under whose authority. Со ссылками на причины — событие не висит в воздухе, оно указывает, из чего и по чьим полномочиям произошло. Себеп сілтемелерімен — оқиға бос аспанда тұрмайды, оның неден және кімнің өкілетімен пайда болғанын көрсетеді.
- Without personal data — entity identifiers only. Без персональных данных — только идентификаторы сущностей. Жеке деректерсіз — тек нысан идентификаторлары.
Canonicalization must match byte for byte: the event is serialized deterministically, a hash is taken of the result, the hash is signed. Otherwise you sort the keys differently or represent numbers differently — the signature will not match, and the ledger will reject the event. Канонизация обязана совпадать побайтово: событие сериализуется детерминированно, от результата берётся хэш, хэш подписывается. Иначе сортируете ключи или иначе представляете числа — подпись не сойдётся, и журнал отклонит событие. Канондау байт деңгейінде дәл сәйкес болуы керек: оқиға детерминдік түрде сериалданады, нәтижеден хэш есептеледі, содан кейін хэшке қол қойылады. Кілттерді басқа ретпен сұрыптасаңыз немесе сандарды басқаша жазсаңыз, қолтаңбалар сәйкес келмей, журнал оқиғаны қабылдамайды.
Writing your own SDK? Start with one command — it will check your canonicalization against the reference: Пишете свой SDK? Начните с одной команды — она сверит вашу канонизацию с эталоном: Өз SDK-ңызды жазып жүрсіз бе? Бір командадан бастаңыз — ол сіздің канондауыңызды эталонмен салыстырады:
git clone https://github.com/Kabzhanov/cyrqode && cd cyrqode
python3 test-vectors/verify.py
Release 0.x: changes are possible before version 1.0, backward compatibility is not guaranteed. Pin to a specific commit rather than to “the latest version”. Релиз 0.x: до версии 1.0 возможны правки, обратная совместимость не гарантируется. Привязывайтесь к конкретному коммиту, а не к «последней версии». 0.x нұсқасы: 1.0 дейін өзгертулер мүмкін, кері үйлесімділік кепілдендірілмейді. «Соңғы нұсқаға» емес, нақты коммитке бекітіңіз.
Honestly about the status Честно о статусе Жоба мәртебесі туралы ашық
Published release v0.1.0; changes are possible. The specification is open for implementation. Before version 1.0 the event format and schemas may change, including becoming stricter; backward compatibility is not guaranteed. The physical mark format (geometry, capacity, error correction) works in the generator, but is marked as provisional: the final values will be established by laboratory printing and reading tests. Until then, promising a legibility rate for a damaged mark would be lying. Опубликованный релиз v0.1.0; возможны правки. Спецификация открыта для реализации. До версии 1.0 формат события и схемы могут измениться, в том числе ужесточиться; обратная совместимость не гарантируется. Физический формат знака (геометрия, ёмкость, коррекция ошибок) в генераторе работает, но помечен как проектный: финальные значения устанавливаются лабораторными испытаниями печати и считывания. До них обещать процент читаемости повреждённой метки было бы враньём. Жарияланған релиз v0.1.0; өзгертулер мүмкін. Спецификация іске асыруға ашық. 1.0 нұсқасына дейін оқиға пішімі мен схемалар өзгеруі мүмкін, тіпті қатаюы да — кері үйлесімділік кепілденбейді. Белгінің физикалық пішімі (геометрия, сыйымдылық, қате түзету) генераторда жұмыс істейді, бірақ жоба ретінде белгіленген: түпкі мәндер зертханалық басып шығару және оқу сынақтарымен анықталады. Оларға дейін бүлінген белгінің оқылу мүмкіндігін уәде ету өтірік болар еді.
External witnesses and distributed verification are a later layer. For now the provability is limited to the levels “signed by the author” and “accepted by an authoritative ledger”. That is enough for a dispute between parties who share a ledger, and not enough to prove anything to a third party without one. Внешние свидетельства и распределённая проверка — более поздний слой. Сейчас доказательность ограничена уровнями «подписано автором» и «принято авторитетным журналом». Этого достаточно для спора между сторонами, у которых есть общий журнал, и недостаточно для доказательства третьей стороне без него. Сыртқы куәгерлер мен үлестірілген тексеру — кейінгі кезең. Әзірге дәлелдеу мүмкіндігі «автор қол қойған» және «беделді журнал қабылдаған» деңгейлерімен шектеледі. Бұл ортақ журналы бар тараптар арасындағы дауға жеткілікті, бірақ ондай журналы жоқ үшінші тарапқа дәлелдеуге жеткіліксіз.