Skip to main contentA-REX Foundation

श्वेतपत्र · 08

सुरक्षा फ़्रेमवर्क

A-REX Core संदर्भ कार्यान्वयन का थ्रेट मॉडल, इनवेरिएंट, एक्सेस नियंत्रण, हुक विश्वास सीमा, प्रवर्तन कुंजी प्रबंधन, अपग्रेड सुरक्षा और ऑडिट स्थिति।

सुरक्षा स्थिति एक अनुच्छेद में

संदर्भ टोकन में एक चोक पॉइंट (_update), एक निश्चित मूल्यांकन क्रम, पूरे हुक अनुक्रम के चारों ओर रीएंट्रेंसी लॉक, भूमिका-आधारित प्राधिकार जो कभी बैलेंस से व्युत्पन्न नहीं होता, ERC-7201 स्टोरेज, और एक छोटी सतह है: ERC-1155 के अतिरिक्त आठ बाह्य स्थिति-परिवर्तनकारी फ़ंक्शन। सबसे शक्तिशाली क्षमताएँ — फ़्रीज़ करना, बलपूर्वक ट्रांसफ़र, हुक प्रशासन, अपग्रेड — अलग-अलग भूमिकाएँ हैं जो मल्टीसिग और टाइमलॉक के लिए अभिप्रेत हैं, और उनका प्रत्येक उपयोग एक इवेंट है।

इनवेरिएंट

इनवेरिएंटकिसके द्वारा लागूकिसके द्वारा परखा गया
totalSupply(id) id के बैलेंस के योग के बराबर हैOpenZeppelin ERC1155Supply; transform _update के माध्यम से पहले बर्न करता है, फिर मिंटवंशावली टेस्ट (विभाजन, मर्ज, प्रसंस्करण)
status == 255 अंतिम हैsetBatchStatus ARexInvalidStatusTransition के साथ रिवर्ट करता हैस्टेटस टेस्ट
रिटायर किया गया बैच मिंट या ट्रांसफ़र नहीं किया जा सकता, केवल बर्न किया जा सकता है_updateरिटायर-बैच टेस्ट
धारक-आरंभित गतिविधियों के लिए amount ≤ balance − frozen_update; forcedTransfer frozen को balance − amount तक घटाता हैफ़्रीज़/बलपूर्वक ट्रांसफ़र टेस्ट
कोई हुक बैलेंस बदलने वाले फ़ंक्शन में पुनः प्रवेश नहीं कर सकताजाँच से पहले सेट किया गया और सूचनाओं के बाद साफ़ किया गया स्टोरेज लॉकReentrantHook टेस्ट
प्रत्येक बैलेंस परिवर्तन का मूल्यांकन उसके अपने ऑपरेशन के रूप में, उसके अपने data के साथ होता है_update किसी भी जाँच या बाहरी कॉल से पहले ऑपरेशन संदर्भ को पढ़ता और साफ़ करता हैOpContext.test.js
हुक का मूल्यांकन पंजीकरण क्रम में होता है; हटाने पर क्रम बना रहता हैremoveHook में ऐरे शिफ़्टक्रम टेस्ट
अस्वीकृत ऑपरेशन कोई बैलेंस नहीं बदलता और कोई ट्रांसफ़र इमिट नहीं करताजाँच super._update से पहले चलती हैंअस्वीकृति टेस्ट (निष्पादित गणना अपरिवर्तित)
प्राधिकार कभी बैलेंस से व्युत्पन्न नहीं होताप्रत्येक स्थिति-परिवर्तनकारी फ़ंक्शन भूमिका-गेटेड या ERC-1155-अनुमोदन-गेटेड है"टोकन धारण करने से कुछ नहीं मिलता" टेस्ट
canTransfer == (transferCheck == 0)canTransfer को वैसे ही परिभाषित किया गया हैअनुरूपता टेस्ट

थ्रेट मॉडल

कर्ता और क्षमताएँ

कर्ताकर सकता हैनहीं कर सकता
धारकअनफ़्रीज़्ड इकाइयाँ पात्र प्राप्तकर्ताओं को ट्रांसफ़र करना; बर्न करना; समान कमोडिटी/इकाई को संरक्षित मात्रा के साथ अपने ही खाते में री-बैच करना (to == from)स्टेटस बदलना, मिंट करना, किसी अन्य कमोडिटी में प्रसंस्करण करना, किसी अन्य खाते में री-बैच करना, फ़्रीज़ की गई इकाइयाँ हिलाना
अनुमोदित ऑपरेटरअनुमोदन देने वाले खाते के लिए धारक के समानऐसा कुछ भी जो धारक नहीं कर सकता
ISSUER_ROLEबैच बनानादूसरों के टोकन ट्रांसफ़र करना
TRANSFORMER_ROLEअपने पास रखे या अनुमोदित टोकन के प्रसंस्करण ट्रांसफ़ॉर्म, और ऐसे ट्रांसफ़ॉर्म जिनके आउटपुट किसी अन्य खाते में जाते हैंबिना अनुमोदन के टोकन ट्रांसफ़ॉर्म करना
STATUS_ROLEस्टेटस बदलना (रिटायर करना सहित), मेटाडेटा अपडेट करनाटोकन ट्रांसफ़र करना
ENFORCER_ROLEकोई भी राशि फ़्रीज़ करना; कोई भी ट्रांसफ़र बलपूर्वक करनाहुक को बायपास करना (वे OP_FORCED_TRANSFER के साथ चलते हैं)
HOOK_ADMIN_ROLEहुक जोड़ना/हटानाबैलेंस सीधे बदलना
PAUSER_ROLEबलपूर्वक ट्रांसफ़र को छोड़कर सब कुछ रोकना—
UPGRADER_ROLEइम्प्लीमेंटेशन बदलना— (यह पूर्ण शक्ति है; कुंजी प्रबंधन देखें)
ATTEST_ADMIN_ROLEयह तय करना कि प्रत्येक एटेस्टेशन विषय के लिए कौन-से जारीकर्ता विश्वसनीय हैं; 2.0.0-alpha.5 तक के संदर्भ रिलीज़ में कोई भी एटेस्टेशन निरस्त करना भी; 2.0.0-alpha.6 से केवल जारीकर्ता या उसके द्वारा प्रत्यायोजित निरस्तकर्ता निरस्त करता है (ADR-019, प्रस्तावित: प्रशासनिक निरस्तीकरण 2.x में नहीं होना चाहिए (SHOULD NOT) और 3.0 से नहीं होना चाहिए (MUST NOT))किसी जारीकर्ता के नाम पर एटेस्ट करना
विश्वसनीय जारीकर्ताअपने विषयों के लिए बैच एटेस्ट करना; अपने ही एटेस्टेशन निरस्त करना, या निरस्तीकरण प्रत्यायोजित करनाऐसे विषय के लिए एटेस्ट करना जिसके लिए वह विश्वसनीय नहीं है
हुक कॉन्ट्रैक्टऑपरेशन अस्वीकार करना; उनका अवलोकन करना; पात्रता का उत्तर देनापुनः प्रवेश करना; बैलेंस बदलना

परिदृश्य

दुर्भावनापूर्ण या बग-युक्त हुक (सेवा-अवरोध)। जो हुक हमेशा अस्वीकार करता है वह टोकन के सभी ट्रांसफ़र ब्लॉक कर देता है; जो check में रिवर्ट करता है वह भी यही करता है। शमन: HOOK_ADMIN_ROLE किसी भी समय कोई भी हुक हटा सकती है (क्रम बना रहता है); जाँच के दौरान PAUSER_ROLE सब कुछ रोक सकती है; बलपूर्वक ट्रांसफ़र फिर भी चलते हैं, इसलिए प्रवर्तन खोता नहीं। पंजीकरण ERC-165 समर्थन और गैर-शून्य फ़्लैग सत्यापित करता है, और EOA को अस्वीकार करता है। अनुशंसा: पंजीकरण से पहले हुक का ऑडिट करें; संख्या कम रखें; प्रशासक को टाइमलॉक के पीछे रखें ताकि हुक परिवर्तन प्रभावी होने से पहले दिखाई दें।

हुक रीएंट्रेंसी। हुक की onExecuted वापस safeTransferFrom को कॉल करती है। शमन: लॉक; कॉल ARexReentrantCall के साथ रिवर्ट होती है। ध्यान दें कि ERC-1155 का रिसीवर कॉलबैक (onERC1155Received) लॉक जारी होने के बाद चलता है, जैसा हर ERC-1155 टोकन में होता है; तब तक टोकन की स्थिति अंतिम होती है।

रिसीवर कॉलबैक में ऑपरेशन संदर्भ। कोई कॉन्ट्रैक्ट प्राप्तकर्ता onERC1155Received के भीतर से ट्रांसफ़र या बर्न शुरू करता है। वह नेस्टेड कॉल अपने data के साथ एक OP_TRANSFER या OP_BURN है, न कि उस ऑपरेशन का हिस्सा जिसने टोकन पहुँचाए। 2.0.0-alpha.2 तक संदर्भ टोकन बाहरी ऑपरेशन को स्टोरेज में तब तक रखता था जब तक बाहरी कॉल लौट न जाए, इसलिए forcedTransfer के बाद की नेस्टेड कॉल OP_FORCED_TRANSFER के रूप में चलती थी (पॉज़, पात्रता और फ़्रीज़ किए गए बैलेंस को छोड़ते हुए), और transform के बाद की कॉल OP_TRANSFORM के रूप में, जिसे केवल OP_TRANSFER पर रोक लगाने वाले हुक जाने देते हैं। शमन: _update किसी भी जाँच या बाहरी कॉल से पहले ऑपरेशन संदर्भ को पढ़ता और साफ़ करता है, इसलिए कॉलबैक से की गई कॉल का मूल्यांकन उसी के रूप में होता है; OpContext.test.js ऐसे प्राप्तकर्ता का उपयोग करता है जो अपने कॉलबैक के भीतर से ट्रांसफ़र और बर्न करता है।

री-बैचिंग द्वारा डिलीवरी। transform के दोनों लेग हुक को OP_TRANSFORM के साथ चलाते हैं। यदि कोई धारक किसी अन्य खाते में री-बैच कर पाता, तो वस्तुएँ उन हुक की जाँचों के बिना हाथ बदल लेतीं जो केवल OP_TRANSFER पर रोक लगाते हैं, जैसे बिक्री से पहले आवश्यक सत्यापन या किसी डिलीवरी के लिए लॉक की गई इकाइयाँ। शमन: TRANSFORMER_ROLE के बिना, री-बैच केवल तब अनुमत है जब to == from; री-लॉट की गई वस्तुएँ किसी अन्य धारक तक एक सामान्य ट्रांसफ़र के माध्यम से पहुँचती हैं जो हर ट्रांसफ़र नियम चलाता है (ADR-007, 2026-10-20 को संशोधित)।

बर्न या री-लॉटिंग द्वारा लॉक से बचना। प्रति बैच id रखी गई हुक स्थिति किसी लॉट के आउटपुट तक नहीं पहुँचती। जो हुक इकाइयाँ लॉक करता है और केवल OP_TRANSFER जाँचता है, वह धारक को लॉक की गई इकाइयाँ बर्न करने से, या उन्हें उसी खाते में एक नई id में री-लॉट करने से नहीं रोकता जिसे लॉक कवर नहीं करता। शमन: DeliveryHook किसी भी ऐसे बर्न या transform इनपुट लेग को IN_TRANSIT के साथ अस्वीकार करता है जो बैलेंस को लॉक की गई इकाइयों से नीचे ले जाए; फ़ोर्स्ड ट्रांसफ़र असीमित रहते हैं, और ज़ब्ती के बाद हुक रिवर्ट होने के बजाय एक कोड लौटाता है। इकाइयाँ आरक्षित करने वाले हुक को OP_TRANSFER के साथ-साथ OP_BURN और OP_TRANSFORM भी जाँचने चाहिए।

समझौता-ग्रस्त प्रवर्तन कुंजी। जिसके पास ENFORCER_ROLE है वह कोई भी टोकन ट्रांसफ़र कर सकता है। शमन: प्रलेखित प्रक्रिया (न्यायालय आदेश, गिरवी करार, प्रतिबंध सूचना) के साथ मल्टीसिग; प्रत्येक कार्रवाई ForcedTransfer/Frozen इमिट करती है; हुक ट्रांसफ़र डेटा में आदेश संदर्भ अनिवार्य कर सकते हैं (OP_FORCED_TRANSFER हुक से मुक्त नहीं है)। गैर-तात्कालिक प्रवर्तन के लिए टाइमलॉक पर विचार करें।

समझौता-ग्रस्त अपग्रेडर। पूर्ण समझौता। शमन: मल्टीसिग के साथ टाइमलॉक; CI में OpenZeppelin अपग्रेड वैलिडेशन; लेआउट संबंधी दुर्घटनाओं से बचने के लिए ERC-7201 स्टोरेज।

स्टेटस का दुरुपयोग। STATUS_ROLE दूसरों द्वारा धारित बैच को रिटायर कर सकती है। यह जान-बूझकर है — वेयरहाउस, निरीक्षक या नियामक द्वारा किसी लॉट को अनुपयुक्त घोषित करना — और धारकों को इसका प्रकटीकरण किया जाना अनिवार्य है। शमन: किसी जवाबदेह संस्था को सौंपें; प्रत्येक परिवर्तन कारण सहित एक इवेंट है।

जारीकर्ता धोखाधड़ी। ISSUER_ROLE ऐसा बैच बना सकती है जो भौतिक रूप से मौजूद नहीं है। टोकन इसे रोक नहीं सकता; वह इसे जिम्मेदार पक्ष से जोड़े जाने योग्य बनाता है (issuer, originRef, metadataHash) और AttestationHook के माध्यम से ट्रांसफ़र से पहले स्वतंत्र पक्षों (वेयरहाउस, निरीक्षक, रजिस्ट्री) के एटेस्टेशन की अपेक्षा करने देता है।

उद्गम संदर्भ में छिपा स्थान। originRef में प्लॉट निर्देशांकों का हैश, जियोहैश या कोई अन्य एन्कोडिंग अनाम दिखती है, परंतु उसे किसी अनुमानित प्लॉट से दोबारा परिकलित किया जा सकता है, और उसे लेजर से कभी मिटाया नहीं जा सकता। शमन: originRef साक्ष्य का एक संदर्भ या एक यादृच्छिक संदर्भ है; जियोलोकेशन ऑफ़-चेन रहता है (EUDR के लिए, EU Information System में)। ADR-019 (प्रस्तावित) के साथ रखा गया मसौदा "कभी स्थान से व्युत्पन्न नहीं" को MUST बनाता है; यह पहले से ADR-008 का निर्णय था।

असत्यापित अपस्ट्रीम संदर्भ। किसी अन्य टोकन के बैच से बना बैच अपने मेटाडेटा की upstream सूची में उसका नाम देता है। यह डाउनस्ट्रीम जारीकर्ता का दावा है: वह ऐसे बैच का नाम दे सकता है जो उसके पास कभी नहीं था, या ऐसे बैच को छोड़ सकता है जो था। शमन: इंडेक्सर, ऑडिटर और रिकॉल टूल प्रत्येक संदर्भ को अपस्ट्रीम टोकन से मिलाते हैं (बैच मौजूद है, मेटाडेटा हैश मेल खाता है, और ट्रांज़ैक्शन हैश दिए जाने पर जारीकर्ता को ट्रांसफ़र हुआ था) और जिनकी जाँच नहीं हो सकी उन्हें असत्यापित दिखाते हैं।

मेटाडेटा प्रतिस्थापन। setBatchMetadata हैश और URI बदलती है। शमन: भूमिका-गेटेड; BatchMetadataUpdated और URI इवेंट इतिहास रखते हैं; पुराने दस्तावेज़ पुराने हैश के विरुद्ध सत्यापन-योग्य रहते हैं।

transferCheck की फ़्रंट-रनिंग। प्री-फ़्लाइट जाँच ट्रांज़ैक्शन के निष्पादन से पहले पुरानी पड़ सकती है (हुक की स्थिति बदल जाती है)। ट्रांज़ैक्शन पुनः मूल्यांकन करता है; सबसे बुरी स्थिति सटीक कोड के साथ रिवर्ट है।

हुक के माध्यम से गैस ग्रीफ़िंग। प्रत्येक हुक प्रति चरण प्रति प्रभावित आईडी एक बाह्य कॉल जोड़ता है। असीमित लूप वाला हुक ट्रांसफ़र को वहन-योग्य नहीं रहने देता। शमन: हुक लेखन नियम (सीमाबद्ध check), पंजीकरण से पहले समीक्षा।

अपग्रेड-योग्य हुक पर विश्वास। प्रॉक्सी के पीछे डिप्लॉय किया गया हुक टोकन में किसी बदलाव के बिना ट्रांसफ़र नीति बदल सकता है। शमन: हुक प्रशासक कुंजियों को HOOK_ADMIN_ROLE जितनी ही सावधानी से संभालें; प्रोडक्शन के लिए इम्यूटेबल हुक को प्राथमिकता दें।

एक्सेस नियंत्रण मॉडल

OpenZeppelin AccessControl जिसमें टोकन पर आठ भूमिकाएँ और एटेस्टेशन रजिस्ट्री पर एक है; DEFAULT_ADMIN_ROLE उन सभी का प्रशासन करती है। अनुशंसित प्रोडक्शन लेआउट:

भूमिकाधारक
DEFAULT_ADMIN_ROLE, UPGRADER_ROLE, HOOK_ADMIN_ROLEटाइमलॉक के पीछे गवर्नेंस मल्टीसिग
ENFORCER_ROLEप्रवर्तन मल्टीसिग (अनुपालन + विधिक)
PAUSER_ROLEघटना-प्रतिक्रिया कुंजी (तेज़)
ISSUER_ROLE, STATUS_ROLE, TRANSFORMER_ROLEन्यूनतम विशेषाधिकार वाली परिचालन सेवाएँ, रोटेट की गई
ATTEST_ADMIN_ROLEटोकन का गवर्नेंस: यह तय करता है कि प्रति विषय कौन-से जारीकर्ता विश्वसनीय हैं, न कि वे क्या एटेस्ट करते हैं

initialize सुविधा के लिए सब कुछ एक प्रशासक को दे देता है; डिप्लॉयमेंट चेकलिस्ट प्रोडक्शन से पहले पुनर्वितरण अनिवार्य करती है।

प्रवर्तन और पॉज़ शब्दार्थ

  • पॉज़ मिंट, ट्रांसफ़र, बर्न और ट्रांसफ़ॉर्म को ब्लॉक करता है; यह बलपूर्वक ट्रांसफ़र को ब्लॉक नहीं करता, ताकि किसी घटना के दौरान वैध आदेश निष्पादित किया जा सके।
  • बलपूर्वक ट्रांसफ़र canSend/canReceive और फ़्रीज़-बैलेंस जाँच को छोड़ देते हैं, फ़्रीज़ की गई राशि को शेष मात्रा तक घटा देते हैं, और फिर भी हुक को OP_FORCED_TRANSFER के साथ चलाते हैं। संदर्भ हुक उस ऑपरेशन के लिए OK लौटाते हैं; प्रवर्तन को शासित करने वाला हुक data में आदेश संदर्भ अनिवार्य कर सकता है।
  • फ़्रीज़ बैलेंस से अधिक हो सकता है (ERC-7943), ताकि ग्रहणाधिकार भावी जमा को भी कवर कर सके।

मानक में क्षमताएँ, प्रोफ़ाइल में नीति

ADR-019 (प्रस्तावित) हर प्रवर्तन सुविधा के बीच से एक रेखा खींचता है। मानक तय करता है कि क्या मौजूद है और वह क्या गारंटी देता है: भूमिकाएँ, इवेंट, पॉज़ क्या रोकता है, कोड AREX:PAUSED और AREX:SANCTIONED, एटेस्टेशन कौन निरस्त कर सकता है, और गोपनीयता नियम। प्रति क्षेत्राधिकार और प्रति संगठन रखी गई, और किसी विनियम की तरह तिथियों के साथ संस्करणित, नीति प्रोफ़ाइल यह बताती है कि प्रत्येक क्षमता का उपयोग कौन और किन शर्तों पर कर सकता है:

क्षमतामानक द्वारा तयनीति प्रोफ़ाइल द्वारा निर्धारित
फ़्रीज़ और बलपूर्वक ट्रांसफ़रsetFrozenTokens, forcedTransfer, उनके इवेंट, प्रशासन से अलग एक समर्पित भूमिका, हुक OP_FORCED_TRANSFER के साथ चलते हैंभूमिका को सक्षम किया भी जा सकता है या नहीं, वह किसके पास है और कितने हस्ताक्षरकर्ताओं के साथ, प्रत्येक उपयोग में कौन-सा विधिक संदर्भ होना चाहिए, किसे सूचित करना है
पॉज़पॉज़ क्या रोकता है, AREX:PAUSED, बलपूर्वक ट्रांसफ़र तब भी अनुमतकौन पॉज़ और अनपॉज़ कर सकता है, आवश्यक पुष्टि और कारण, किसे बताया जाता है
प्रतिबंधAREX:SANCTIONED और canSend / canReceive का अर्थकौन-सी आधिकारिक सूचियाँ लागू होती हैं (UN, OFAC, EU, OFSI या उनका संयोजन), उन्हें अद्यतन कैसे रखा जाता है, और यह कि किसी खाते को चिह्नित करने से पहले एक व्यक्ति मिलान की पुष्टि करता है
एटेस्टेशन निरस्तीकरणजारीकर्ता निरस्त करता है, उसके द्वारा प्रत्यायोजित निरस्तकर्ता कर सकता है; किसी प्रशासनिक भूमिका को 2.x में ऐसा नहीं करना चाहिए और 3.0 से यह वर्जित है; दोबारा एटेस्ट करना कभी किसी दूसरे जारीकर्ता का रिकॉर्ड नहीं बदलता और न ही किसी निरस्त रिकॉर्ड को पुनर्जीवित करता हैकोई टोकन प्रति विषय किन जारीकर्ताओं पर भरोसा करता है; कोई ऑपरेटर विवाद कैसे दर्ज करता है
उद्गम गोपनीयताoriginRef में कोई निर्देशांक या व्यक्तिगत आइडेंटिफ़ायर नहीं होते और वह स्थान से व्युत्पन्न नहीं होताजारीकर्ता कौन-सा संदर्भ उपयोग करता है, और जियोलोकेशन ऑफ़-चेन कहाँ रखा जाता है

तब कानून में बदलाव एक प्रोफ़ाइल अपडेट बन जाता है, कभी कोई नया कॉन्ट्रैक्ट या मानक का नया संस्करण नहीं।

अपग्रेड सुरक्षा

  • UUPS; _authorizeUpgrade UPGRADER_ROLE द्वारा गेटेड।
  • ERC-7201 नेमस्पेस्ड स्टोरेज स्ट्रक्ट; केवल-जोड़ने योग्य।
  • OpenZeppelin अपग्रेड प्लगइन वैलिडेशन टेस्ट में चलते हैं और किसी भी अपग्रेड ट्रांज़ैक्शन से पहले CI में चलने चाहिए।
  • प्रति-फ़ाइल optimizer.runs = 1 सेटिंग इम्प्लीमेंटेशन को EIP-170 के भीतर रखती है; इसे सीमा से ऊपर धकेलने वाला परिवर्तन कंपाइल समय पर चेतावनी के साथ और डिप्लॉयमेंट पर रिवर्ट के साथ विफल होता है।

डिपेंडेंसी और बिल्ड सुरक्षा

  • OpenZeppelin Contracts और Contracts-Upgradeable 5.3.0 पर पिन किए गए; लॉकफ़ाइल कमिट की गई; CI npm ci का उपयोग करता है।
  • Solidity 0.8.22, viaIR, EVM paris (ट्रांज़िएंट स्टोरेज पर कोई निर्भरता नहीं, उन चेन पर भी डिप्लॉय-योग्य जिन्होंने Cancun नहीं अपनाया)।
  • कोई बाह्य लाइब्रेरी लिंक नहीं की गई; UUPS प्रॉक्सी के बाहर कोई delegatecall नहीं।

ऑडिट स्थिति

  • संदर्भ कार्यान्वयन, हुक और एक्सटेंशन पर 46 टेस्ट ऊपर के प्रत्येक इनवेरिएंट को कवर करते हैं, जिनमें एक सीडेड यादृच्छिक इनवेरिएंट रन शामिल है।
  • गैस और आकार रिपॉज़िटरी की स्क्रिप्टों द्वारा मापे जाते हैं।
  • ARexToken, ARexAttestations और संदर्भ हुक का तृतीय-पक्ष ऑडिट प्रोडक्शन एंकर के लिए और ERC सबमिट करने के लिए एक घोषित पूर्व-शर्त है (देखें भावी विकास)।
  • पाइपलाइन इनवेरिएंट का औपचारिक सत्यापन रोडमैप पर है; इनवेरिएंट इतने छोटे हैं कि उन्हें प्रॉपर्टी के रूप में कहा जा सकता है।

सुरक्षा परामर्श

परामर्शप्रभावितकिसमें ठीक किया गयासमस्याएँ
AREX-2026-0012.0.0-alpha.2 तक (उसे मिलाकर) संदर्भ कार्यान्वयन2.0.0-alpha.3ऑपरेशन संदर्भ ERC-1155 रिसीवर कॉलबैक में लीक होता था; बिना भूमिका के री-बैचिंग वस्तुओं को OP_TRANSFER हुक से बचाकर किसी अन्य धारक तक पहुँचा सकती थी; DeliveryHook के लॉक से बर्न या री-लॉटिंग द्वारा बचा जा सकता था

2.0.0-alpha.3 ने 2.0.0-alpha.2 का स्थान लिया है। तैनात टोकन प्रॉक्सी को UPGRADER_ROLE के माध्यम से नए कार्यान्वयन पर अपग्रेड किया जाता है; स्टोरेज लेआउट अपरिवर्तित है। DeliveryHook अपग्रेड योग्य नहीं है: नया संस्करण तैनात करें, उसे registerHook से पंजीकृत करें, पुराने को removeHook से हटाएँ, और सक्रिय डिलीवरी को फिर से शेड्यूल करें, क्योंकि उनके लॉक पुराने हुक के स्टोरेज में रहते हैं। जो इंटीग्रेशन सीधे किसी क्रेता के खाते में विभाजन या मर्ज करते हैं, उन्हें उसी खाते में री-लॉट करके फिर ट्रांसफ़र करना होगा, या TRANSFORMER_ROLE वाले खाते का उपयोग करना होगा। मानक के इंटरफ़ेस नहीं बदलते।

शेष जोखिम जिन्हें मानक दूर नहीं करता

  • लॉट का भौतिक अस्तित्व और गुणवत्ता एटेस्ट की जाती है, सिद्ध नहीं; टोकन दावों को जिम्मेदार पक्ष से जोड़े जाने योग्य बनाता है, सत्य नहीं।
  • ऑफ़-चेन मेटाडेटा की उपलब्धता चुने गए स्टोरेज पर निर्भर करती है; हैश अखंडता की गारंटी देता है, उपलब्धता की नहीं।
  • हुक और मॉड्यूल गवर्नेंस उतना ही अच्छा है जितनी उसे नियंत्रित करने वाली कुंजियाँ।