Skip to main contentA-REX Core

आरेख · 02

बैच जीवनचक्र

बैच कैसे अस्तित्व में आता है, चलता है, स्टेटस बदलता है, अन्य बैच बन जाता है और लेजर से बाहर जाता है। केवल निश्चित स्टेटस 0 (ACTIVE) और 255 (RETIRED, अंतिम) हैं; बीच की हर चीज़ जारीकर्ता परिभाषित करता है।

स्थितियाँ और संक्रमण

stateDiagram-v2
    [*] --> ACTIVE : createBatch (ISSUER_ROLE)
    [*] --> ACTIVE : transform आउटपुट
    ACTIVE --> ACTIVE : safeTransferFrom · burn · forcedTransfer
    ACTIVE --> Custom : setBatchStatus(1..254) (STATUS_ROLE)
    Custom --> Custom : setBatchStatus (STATUS_ROLE)
    Custom --> ACTIVE : setBatchStatus(0)
    ACTIVE --> RETIRED : setBatchStatus(255, reason)
    Custom --> RETIRED : setBatchStatus(255, reason)
    RETIRED --> RETIRED : केवल burn
    RETIRED --> [*] : totalSupply == 0
    note right of RETIRED
        अंतिम। कोई मिंट नहीं, कोई ट्रांसफ़र नहीं, कोई transform नहीं।
        बर्न संभव रहते हैं (बट्टे खाते, डिलीवरी)।
    end note

कटाई-पूर्व से प्रसंस्कृत वस्तु तक

timeline
    title एक गेहूँ लॉट, फ़ॉरवर्ड कॉन्ट्रैक्ट से आटे तक
    कटाई-पूर्व : producedAt = 0 के साथ createBatch (फ़ॉरवर्ड या फ़सल प्राप्य)
                : ExpiryHook कटाई तक ट्रांसफ़र ब्लॉक कर सकता है (allowPreHarvest = false)
    कटाई : कटाई दस्तावेज़ के हैश के साथ setBatchMetadata
            : producedAt री-बैच transform द्वारा या निर्माण के समय सेट होता है
    भंडारण : AttestationHook वेयरहाउस रसीद एटेस्टेशन अनिवार्य करता है
            : ग्रहणाधिकार के लिए setFrozenTokens; चूक पर forcedTransfer
    प्रसंस्करण : TRANSFORMER_ROLE द्वारा transform([wheat], [60 t]) → [flour] (45 t)
               : BatchTransformed इवेंट = EPCIS TransformationEvent
    डिलीवरी : DeliveryHook इकाइयाँ लॉक करता है; निपटान data = deliveryId के साथ ट्रांसफ़र है
             : प्राप्तकर्ता द्वारा setBatchStatus(255, "DELIVERED") या burn