App ID
appId एक UUID है जिसका उपयोग Drop wallet edge पर per-dApp configuration देखने के लिए करता है। यह तीन चीज़ों को नियंत्रित करता है:
- कौन-से parent origins wallet को embed कर सकते हैं। Drop wallet edge function हर response पर एक dynamic
Content-Security-Policy: frame-ancestors <your-origins>header set करता है। किसी unregistered origin से wallet को iframe करने का प्रयास करने वाला dApp browser द्वारा किसी भी code के चलने से पहले block कर दिया जाता है। - Feature flags। व्यक्तिगत dApps अन्य integrations को प्रभावित किए बिना features (अतिरिक्त chains, extra assets, आदि) में opt in या opt out कर सकते हैं।
- Analytics scope। Storage, analytics और per-partner state
appIdद्वारा keyed होते हैं इसलिए आपका integration स्पष्ट रूप से isolated रहता है।
INFO
appId local development में वैकल्पिक है। आप इसे छोड़ सकते हैं या कोई भी UUID pass कर सकते हैं और wallet एक localhost-only CSP पर fall back कर जाएगा। जैसे ही आप किसी public origin पर deploy करते हैं, यह आवश्यक हो जाता है।
App ID register करें
आज कोई self-service portal नहीं है — registration partner database के खिलाफ एक PR है।
एक UUID v4 generate करें (जैसे
uuidgenयाcrypto.randomUUID())।apps/web/shared/partners.tsके खिलाफ एक pull request खोलें जिसमें आपके dApp के लिए एक entry जोड़ी हो:tsconst PARTNERS: Record<string, AppConfig> = { // ... existing entries '<your-uuid>': { domains: ['your-app.com', '*.your-app.com'], assets: { additionalEnabled: [] }, }, }एक बार PR merge हो जाने और wallet के redeploy होने पर, entry live है।
domains
wildcard-match का उपयोग करके Strings को browser-reported frame-ancestors origin के विरुद्ध match किया जाता है। आप bare hostnames (your-app.com), wildcards (*.your-app.com), या protocol सहित पूर्ण origins (https://your-app.com) list कर सकते हैं। जब आप एक hostname pass करते हैं, तो http:// और https:// दोनों variants स्वीकार किए जाते हैं।
localhost और 127.0.0.1 हमेशा domains की परवाह किए बिना allowed हैं, इसलिए आप बिना किसी अतिरिक्त configuration के unregistered या empty domains वाले appId के against develop कर सकते हैं।
assets.additionalEnabled
Default set से परे wallet UI में दिखाने के लिए अतिरिक्त chain IDs की एक list। यदि आपको केवल defaults की आवश्यकता है तो इसे [] के रूप में छोड़ दें।
अपना App ID उपयोग करना
Wallet बनाते समय UUID को appId के रूप में pass करें:
const wallet = createWallet({
appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
providers: {
solana: true,
},
})SDK इसे iframe को ?appId=<uuid> के रूप में forward करता है — आपको कोई runtime handshake करने की आवश्यकता नहीं है।
यदि App ID गलत हो तो क्या होता है?
- Unknown UUID — edge function
NO_APP_CONFIGपर fall back करता है, जो केवलlocalhostऔर127.0.0.1को अनुमति देता है। Wallet आपके production origin पर browser console में एक CSP violation के साथ load होने में विफल हो जाएगा। - Wrong domains — जैसा ऊपर है: browser किसी भी wallet code के execute होने से पहले iframe को block कर देता है।
- Missing UUID — ऊपर "unknown UUID" के समान। यह जानबूझकर है, ताकि
appIdको छोड़ने से गलती से आपकी allow-list न broaden हो जाए।