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

Коли вантаж перетинає кордони, кожна сторона бачить лише свою частину правди — а загальна картина губиться в листуванні та розрізнених системах. Ми розробляємо систему відстеження вантажів на блокчейні, яка створює єдине джерело даних для всіх учасників ланцюга постачання. Наша команда реалізує проєкт під ключ — від аудиту процесів до впровадження та подальшої підтримки, щоб ви отримали прозору й надійну логістику без суперечок і затримок.
Часті запитання

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

Ми — команда блокчейн-інженерів з досвідом у логістиці. За цей час реалізували 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 дні. Зв'яжіться з нами для оцінки вашого проекту. Підберемо архітектуру під ваш масштаб.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142