Розробка системи відстеження вантажів на блокчейні

Розробка системи відстеження вантажів на блокчейні Ми — команда блокчейн-інженерів з досвідом у логістиці. За цей час реалізували 15+ проєктів з відстеження вантажів на Ethereum, Polygon та BNB Chain. Системи відстеження вантажів існують десятиліттями — TMS, WMS, EDI. Проблема не у відсутності си

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1449
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1269
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    717
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1008

Розробка системи відстеження вантажів на блокчейні

Ми — команда блокчейн-інженерів з досвідом у логістиці. За цей час реалізували 15+ проєктів з відстеження вантажів на Ethereum, Polygon та BNB Chain. Системи відстеження вантажів існують десятиліттями — TMS, WMS, EDI. Проблема не у відсутності систем, а в тому, що вони не розмовляють одна з одною. Відправник у Китаї використовує одну систему, фрахтовий брокер — іншу, митниця — третю, кінцевий отримувач бачить лише те, що йому сповістив перевізник. Блокчейн тут — не про технологію, а про нейтральну платформу, якій довіряють усі сторони, тому що ніхто з них її не контролює.

Що таке система відстеження вантажів на блокчейні?

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

Чому блокчейн кращий за традиційні TMS?

Традиційні TMS працюють в ізоляції. Зміна власника вантажу через електронний Bill of Lading займає в середньому 5–7 днів через банківські перевірки та паперовий обіг. На блокчейні зі смарт-контрактом передача володіння відбувається за 10 хвилин. Документообіг прискорюється на 80%, а кількість спірних ситуацій знижується на 90%. Це не теорія — ми перевірили на пілоті з одним із перевізників.

Що саме відстежується: учасники та документи

Які ролі та події критичні? — розробка системи відстеження

Типове міжнародне перевезення задіює: Shipper (вантажовідправник), Freight Forwarder, Carrier, Port/Terminal Operator, Customs Broker, Consignee, Bank/Financier, Inspector/Surveyor. Кожен учасник має свою систему — on-chain система дає єдиний source of truth.

Bill of Lading (B/L) — центральний документ у морських перевезеннях. Це одночасно розписка перевізника, договір перевезення та товаророзпорядчий документ. Токенізація B/L регулюється стандартами BIMCO та DCSA. Події життєвого циклу вантажу:

Booking → Cargo Received at Origin Port → Loaded on Vessel → Departed → In Transit → Arrived at Destination Port → Customs Cleared → Available for Pickup → Delivered 

Архітектура: що on-chain, що off-chain

Тип даних Приклади Де зберігається
Унікальні ідентифікатори, хеші документів, переходи custody, milestone-події shipment ID, хеш B/L, підписи On-chain (EVM)
Повні документи, логи сенсорів, фотографії PDF, XML, CSV IPFS / Arweave
Індекси для швидких запитів, аналітика Статус всіх shipments, звіти Традиційна БД (PostgreSQL)

Shipment NFT: чому вантаж як токен?

Вантаж як NFT — правильна абстракція для унікальних shipments. Передача NFT = передача права власності. Приклад контракту:

contract ShipmentRegistry is ERC721, AccessControl { struct Shipment { bytes32 shipmentId; bytes32 bookingReference; ShipmentType shipmentType; // FCL, LCL, Air, Rail, Road address shipper; address consignee; bytes32 originPortHash; bytes32 destinationPortHash; bytes32 blHash; ShipmentStatus status; uint64 estimatedDeparture; uint64 estimatedArrival; } mapping(bytes32 => Shipment) public shipments; mapping(bytes32 => MilestoneEvent[]) public milestones; mapping(bytes32 => bytes32[]) public documentHashes; function createShipment( bytes32 shipmentId, ShipmentType shipmentType, address consignee, bytes32 blHash, bytes32 originPortHash, bytes32 destinationPortHash, uint64 estimatedDeparture, uint64 estimatedArrival ) external onlyRole(FREIGHT_FORWARDER_ROLE) returns (uint256 tokenId) { tokenId = _nextTokenId++; _mint(msg.sender, tokenId); shipments[shipmentId] = Shipment({ shipmentId: shipmentId, bookingReference: bytes32(0), shipmentType: shipmentType, shipper: msg.sender, consignee: consignee, originPortHash: originPortHash, destinationPortHash: destinationPortHash, blHash: blHash, status: ShipmentStatus.Booked, estimatedDeparture: estimatedDeparture, estimatedArrival: estimatedArrival }); emit ShipmentCreated(shipmentId, msg.sender, consignee, shipmentType); } } 

Як реалізувати мультипідписні milestone події?

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

struct PendingMilestone { bytes32 shipmentId; MilestoneType milestoneType; bytes32 locationHash; bytes32 evidenceHash; uint64 timestamp; mapping(address => bool) confirmations; uint256 confirmationCount; bool executed; } function confirmMilestone(bytes32 milestoneId) external { PendingMilestone storage milestone = pendingMilestones[milestoneId]; require(hasRole(getMilestoneRole(milestone.milestoneType), msg.sender), "Unauthorized confirmer"); require(!milestone.confirmations[msg.sender], "Already confirmed"); milestone.confirmations[msg.sender] = true; milestone.confirmationCount++; if (milestone.confirmationCount >= REQUIRED_CONFIRMATIONS[milestone.milestoneType]) { executeMilestone(milestoneId); } } 

Як інтегрувати IoT без перевантаження блокчейну?

Для контейнерів критичні: GPS позиція, температура (reefer), вібрація, тамперні сенсори. Дані з IoT пишуться не напряму — схема агрегації:

IoT Device → Satellite/Cellular Gateway → Data Aggregation Server → Oracle → Smart Contract (aggregated alerts + checkpoints) 

Oraкла записує позицію кожні 6 годин та аномалії (температура поза діапазоном, arrival/departure).

Приклад агрегації даних з сенсорівВ одному контейнері може бути до 6 сенсорів: GPS, датчик температури, вібрації, відкриття дверей, вологості та освітленості. Кожен пристрій надсилає дані раз на 2–5 хвилин. Щоб не засмічувати блокчейн, ми агрегуємо їх на сервері та записуємо лише критичні події: відхилення температури більш ніж на 2°C, удар понад 10g, відкриття дверей поза заданим портом.

Як автоматизувати Letter of Credit?

Традиційний LC — один із найскладніших інструментів, із затримками 7–30 днів. On-chain автоматизація:

contract LetterOfCredit { enum LCStatus { Issued, DocumentsPresented, Verified, PaymentReleased, Rejected } struct LC { address applicant; address beneficiary; address issuingBank; uint256 amount; address paymentToken; // stablecoin bytes32 shipmentId; bytes32[] requiredDocHashes; uint64 expiryDate; LCStatus status; } function presentDocuments( bytes32 lcId, bytes32[] calldata documentHashes, bytes32 shipmentId ) external { LC storage lc = lcs[lcId]; require(msg.sender == lc.beneficiary, "Not beneficiary"); require(block.timestamp <= lc.expiryDate, "LC expired"); require( shipmentRegistry.getMilestoneStatus(shipmentId, MilestoneType.Delivered), "Delivery not confirmed" ); for (uint i = 0; i < lc.requiredDocHashes.length; i++) { require( isDocumentPresented(documentHashes, lc.requiredDocHashes[i]), "Missing required document" ); } lc.status = LCStatus.DocumentsPresented; emit DocumentsPresented(lcId, msg.sender); } function releasePayment(bytes32 lcId) external onlyRole(BANK_ROLE) { LC storage lc = lcs[lcId]; require(lc.status == LCStatus.DocumentsPresented, "Documents not presented"); lc.status = LCStatus.PaymentReleased; IERC20(lc.paymentToken).safeTransfer(lc.beneficiary, lc.amount); emit PaymentReleased(lcId, lc.beneficiary, lc.amount); } } 

Що щодо митниці?

Митні органи в різних країнах починають приймати blockchain-верифіковані дані. Ключові стандарти: WCO Data Model та Single Window системи. Реалістична інтеграція: митні документи в IPFS, хеші в блокчейн, брокер підписує milestone "митниця пройдена". Пряма взаємодія з держорганами можлива в Сінгапурі, ОАЕ, Швейцарії.

Яку мережу обрати і чому?

Параметр Polygon CDK / Arbitrum Orbit (приватний L2) Polygon PoS / Base (публічна мережа) Hyperledger Fabric
Контроль доступу Повний (permissioned) Відкритий Permissioned
Gas Низький, оплачується вами Низький Безкоштовно (свої валідатори)
Екосистема EVM-сумісні інструменти EVM + DeFi Немає DeFi, своя інфра
Рекомендація Для консорціуму з обмеженим колом Для відкритої платформи з платежами Тільки якщо сувора enterprise-вимога

Ми не рекомендуємо Hyperledger Fabric без strong enterprise причини — EVM інфраструктура значно зріліша.

Етапи розробки

Фаза Зміст Термін
Business mapping Учасники, документи, milestone-події, інтеграції 2–3 тиж
Architecture Data model, on/off-chain розділення, вибір мережі 2–3 тиж
Core contracts ShipmentRegistry, milestones, ролі 4–5 тиж
Payment layer Escrow, LC автоматизація 3–4 тиж
IoT pipeline Gateway, oracle, агрегація 3–5 тиж
Participant interfaces Web-/mobile-додатки для кожної ролі 5–7 тиж
ERP integration TMS/WMS конектори 3–4 тиж
Pilot with carriers Тестування на реальних рейсах 4–8 тиж

Основний технічний ризик — IoT надійність на судні (покриття, батарея). Основний операційний — онбординг учасників.

Що входить в роботу

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

Отримайте консультацію інженера — оцінимо ваш проект за 2 дні. Зв'яжіться з нами для оцінки вашого проекту. Підберемо архітектуру під ваш масштаб.