Skip to main contentA-REX Core

श्वेतपत्र · 13

प्रदर्शन विश्लेषण

शून्य, एक और दो हुक के साथ संदर्भ कार्यान्वयन की मापी गई गैस; लागत किससे तय होती है; और डिप्लॉयमेंट मार्गदर्शन।

पद्धति

नीचे की संख्याएँ scripts/gas-report-standard.js से हैं, जिसे Hardhat के इन-प्रोसेस नेटवर्क पर संकलित संदर्भ कार्यान्वयन (solc 0.8.22, viaIR, ARexToken के लिए optimizer.runs = 1) के विरुद्ध चलाया गया, सितंबर 2026। "वार्म" का अर्थ है पिछले ट्रांसफ़र जैसी ही प्रेषक/प्राप्तकर्ता/आईडी जोड़ी (स्टोरेज स्लॉट ब्लॉक में पहले ही छुए जा चुके हैं)। हुक: EligibilityHook (CHECK + ELIGIBILITY) और ExpiryHook (CHECK)। इसे इस प्रकार पुनः उत्पन्न करें:

npx hardhat run scripts/gas-report-standard.js

परिणाम

xychart-beta
    title "हुक की संख्या के अनुसार वार्म ट्रांसफ़र गैस (हज़ार में)"
    x-axis ["बिना हुक", "Eligibility", "Eligibility + Expiry"]
    y-axis "गैस (k)" 0 --> 140
    bar [66.8, 91.2, 119.6]

लागत हुक की संख्या के साथ रैखिक रूप से बढ़ती है: प्रत्येक हुक प्रति आईडी एक बाह्य check कॉल है, और पात्रता हुक के लिए इसके अतिरिक्त canSend तथा canReceive। तालिका प्रत्येक ऑपरेशन देती है।

ऑपरेशन0 हुक1 हुक2 हुक
createBatch (नई आईडी, 1000 मिंट)264,096283,831299,396
safeTransferFrom (पहला, कोल्ड)80,687108,266136,682
safeTransferFrom (वार्म)66,79091,166119,582
transform विभाजन 1 → 2 (दो नई आईडी)564,422595,707636,858
setFrozenTokens54,18854,18854,188
forcedTransfer80,15289,90999,569
burn66,62183,00193,395

प्रत्येक प्रकार के ठीक एक हुक के साथ वार्म ट्रांसफ़र (नियम की सीमांत लागत):

xychart-beta horizontal
    title "वार्म ट्रांसफ़र पर एक हुक की सीमांत गैस (हज़ार में)"
    x-axis ["DeliveryHook", "Traceability (इमिट)", "EligibilityHook", "ExpiryHook", "SeasonalHook", "PerishabilityHook"]
    y-axis "जोड़ी गई गैस (k)" 0 --> 35
    bar [12.3, 17.4, 24.4, 25.2, 27.5, 31.0]

पर्सिस्टेड मोड में TraceabilityHook 184.5k जोड़ता है और पैमाने के कारण चार्ट से बाहर रखा गया है।

हुकगैसहुक के बिना की तुलना में Δ
EligibilityHook91,166+24,376
ExpiryHook92,023+25,233
SeasonalHook94,324+27,534
PerishabilityHook97,813+31,023
DeliveryHook (कोई सक्रिय डिलीवरी नहीं)79,076+12,286
TraceabilityHook, केवल-इमिट84,152+17,362
TraceabilityHook, पर्सिस्टेड251,273+184,483

लागत किससे तय होती है

  • हुक के बिना ट्रांसफ़र की लागत वार्म स्थिति में ~67k है, यानी ERC-1155, सप्लाई ट्रैकिंग, बैच अस्तित्व/स्टेटस/फ़्रीज़ रीड और पाइपलाइन बहीखाता (डेटा स्टैश, लॉक) मिलाकर। यह न्यूनतम स्तर है।
  • प्रत्येक हुक ट्रांसफ़र में लगभग 25–30k जोड़ता है: एक check कॉल (व्यू, क्रॉस-कॉन्ट्रैक्ट) और पात्रता हुक के लिए canSend तथा canReceive कॉल। लागत हुक की संख्या और बैच ट्रांसफ़र में आईडी की संख्या, दोनों में रैखिक है। हर नियम कॉन्ट्रैक्ट को कॉल करने से पहले प्रत्येक क्षमता के लिए supportsInterface से जाँचने पर प्रति आईडी कई स्थिर कॉल जुड़ जातीं; वह ओवरहेड मौजूद नहीं है क्योंकि फ़्लैग पंजीकरण के समय कैश किए जाते हैं।
  • createBatch पर स्टोरेज हावी है: Batch स्ट्रक्ट (छह वर्ड और एक स्ट्रिंग) और ERC-1155 बैलेंस तथा सप्लाई स्लॉट। यह प्रति लॉट एक-बारगी लागत है।
  • transform नई आईडी बनाता है: दो में विभाजन दो बैच रिकॉर्ड, दो मिंट और एक बर्न की लागत देता है, साथ में प्रत्येक लेग (OP_TRANSFORM) पर हुक कॉल। n में विभाजन लगभग n × createBatch और एक बर्न है; n को एक में मर्ज करना लगभग n बर्न और एक createBatch है।
  • प्रवर्तन सस्ता है: फ़्रीज़ करना एक स्लॉट है; बलपूर्वक ट्रांसफ़र की लागत एक ट्रांसफ़र की लागत के साथ अनफ़्रीज़ राइट और इवेंट है।
  • transferCheck / canTransfer व्यू हैं: ऑफ़-चेन मुफ़्त, और ट्रांज़ैक्शन जैसा ही कोड पथ।

डिज़ाइन से क्या मिलता है

क्षमता-प्रोब डिज़ाइनA-REX Core (ARexToken)
n नियम कॉन्ट्रैक्ट के साथ ट्रांसफ़रकिसी भी तर्क के चलने से पहले आईडी × मॉड्यूल × (supportsInterface प्रोब + हुक कॉल)आईडी × हुक × 1 कॉल (पात्रता हुक के लिए +2); फ़्लैग पंजीकरण पर कैश
अस्वीकृतिस्ट्रिंग रिवर्ट (मेमोरी में कॉपी, इंडेक्स-योग्य नहीं)हुक पते और bytes32 कोड के साथ कस्टम एरर
वंशावलीउपलब्ध नहीं~280k प्रति आउटपुट बैच
फ़्रीज़ / बलपूर्वक ट्रांसफ़रउपलब्ध नहीं54k / 80k

बायाँ कॉलम उस डिज़ाइन का वर्णन करता है जिसे A-REX Core बदलता है (ADR-004, ADR-005); केवल दायाँ कॉलम मापा गया है।

डिप्लॉयमेंट मार्गदर्शन

  • धन में लागत gas × gas price × token price है, और अंतिम दो चेन और दिनों के बीच परिमाण की कई कोटियों तक बदल जाते हैं। केवल उदाहरण के लिए, 0.01 gwei और 3,000 USD प्रति ETH पर दो हुक के साथ वार्म ट्रांसफ़र (119,582 गैस) की लागत लगभग 0.0036 USD और createBatch (264,096 गैस) की लगभग 0.008 USD है; Ethereum मेननेट पर 20 gwei पर वही ऑपरेशन लगभग 7.2 और 15.8 USD के पड़ते हैं। यूनिट इकोनॉमिक्स मॉडल पर प्रतिबद्ध होने से पहले लक्षित चेन पर मापें।
  • बैच ट्रांसफ़र: safeBatchTransferFrom स्थिर लागतों को बाँट देता है; हुक लागत फिर भी आईडी की संख्या के साथ बढ़ती है।
  • हुक क्रम: उच्च-अस्वीकृति, सस्ते हुक पहले रखें; अस्वीकृति महँगे हुक चलने से पहले ही पाइपलाइन रोक देती है।
  • हुक की संख्या: तीन से पाँच अधिकांश जारीकर्ताओं के लिए पर्याप्त हैं; प्रत्येक अतिरिक्त हुक प्रति ट्रांसफ़र मापने योग्य लागत और एक गवर्नेंस सतह है।
  • मेटाडेटा: uri छोटा रखें (CID या Digital Link); स्ट्रिंग ऑन-चेन संग्रहीत होती है।
  • ऑफ़-चेन रीड: सबमिट करने से पहले transferCheck का उपयोग करें; रिवर्ट हुए ट्रांज़ैक्शन में भी गैस लगती है।

थ्रूपुट

टोकन स्वयं बाधा नहीं है; चेन है। एक ट्रांसफ़र एक ट्रांज़ैक्शन है; n आउटपुट वाला ट्रांसफ़ॉर्मेशन n मिंट वाला एक ट्रांज़ैक्शन है। वंशावली को इंडेक्स करने के लिए BatchTransformed इवेंट पढ़ने होते हैं, जो प्रत्येक ऑपरेशन पर पूर्ण मात्रा सूचियों के साथ एक बार इमिट होते हैं, इसलिए इंडेक्सर को प्रति-ट्रांसफ़र इवेंट से कुछ भी पुनर्निर्मित करने की आवश्यकता नहीं होती।

कॉन्ट्रैक्ट आकार

ARexToken 24,136 बाइट पर डिप्लॉय होता है (सीमा 24,576), optimizer.runs = 1 के साथ संकलित। अन्य कॉन्ट्रैक्ट छोटे हैं: ARexAttestations 2,708; हुक 1,358 (ExpiryHook) और 6,215 (DeliveryHook) के बीच, TraceabilityHook 4,076; एक्सटेंशन 3,716 और 4,588 के बीच। टोकन में स्वयं कार्यक्षमता जोड़ना डिज़ाइन से ही आकार-बाधित है — हुक और सहायक कॉन्ट्रैक्ट इसी के लिए हैं।