App ID
appId는 Drop 지갑이 엣지에서 dApp별 설정을 조회하기 위해 사용하는 UUID입니다. 이는 세 가지를 제어합니다:
- 어떤 상위 origin이 지갑을 임베드할 수 있는지. Drop 지갑 엣지 함수는 모든 응답에 동적
Content-Security-Policy: frame-ancestors <your-origins>헤더를 설정합니다. 등록되지 않은 origin에서 지갑을 iframe으로 삽입하려는 dApp은 코드가 실행되기 전에 브라우저에 의해 차단됩니다. - 기능 플래그. 개별 dApp은 다른 통합에 영향을 주지 않고 기능(추가 체인, 추가 자산 등)을 선택적으로 활성화하거나 비활성화할 수 있습니다.
- 분석 범위. 저장소, 분석, 파트너별 상태는
appId로 키가 지정되어 여러분의 통합이 깔끔하게 격리됩니다.
INFO
appId는 로컬 개발에서는 선택 사항입니다. 생략하거나 아무 UUID나 전달해도 지갑은 localhost 전용 CSP로 폴백됩니다. 공개 origin에 배포할 때는 필수가 됩니다.
App ID 등록
현재는 셀프 서비스 포털이 없습니다 — 등록은 파트너 데이터베이스에 대한 PR로 이루어집니다.
UUID v4를 생성하세요 (예:
uuidgen또는crypto.randomUUID()).apps/web/shared/partners.ts에 여러분의 dApp 항목을 추가하는 pull request를 여세요:tsconst PARTNERS: Record<string, AppConfig> = { // ... existing entries '<your-uuid>': { domains: ['your-app.com', '*.your-app.com'], assets: { additionalEnabled: [] }, }, }PR이 병합되고 지갑이 재배포되면 항목이 적용됩니다.
domains
문자열은 wildcard-match를 사용하여 브라우저가 보고하는 frame-ancestors origin과 대조됩니다. 맨 호스트명(your-app.com), 와일드카드(*.your-app.com), 또는 프로토콜을 포함한 전체 origin(https://your-app.com)을 나열할 수 있습니다. 호스트명을 전달하면 http://와 https:// 두 변형 모두 허용됩니다.
localhost와 127.0.0.1은 domains 설정과 무관하게 항상 허용되므로, 등록되지 않았거나 domains가 비어 있는 appId에 대해서도 추가 설정 없이 개발할 수 있습니다.
assets.additionalEnabled
기본 세트 외에 지갑 UI에 노출할 추가 체인 ID 목록입니다. 기본값만 필요하다면 []로 두세요.
App ID 사용
지갑을 생성할 때 UUID를 appId로 전달하세요:
const wallet = createWallet({
appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
providers: {
solana: true,
},
})SDK는 이를 ?appId=<uuid>로 iframe에 전달합니다 — 여러분이 수행해야 할 런타임 핸드셰이크는 없습니다.
App ID가 잘못되면 어떻게 되나요?
- 알 수 없는 UUID — 엣지 함수는
NO_APP_CONFIG로 폴백되며, 이는localhost와127.0.0.1만 허용합니다. 지갑은 프로덕션 origin에서 로드에 실패하고 브라우저 콘솔에 CSP 위반이 표시됩니다. - 잘못된 domains — 위와 동일합니다: 브라우저는 지갑 코드가 실행되기 전에 iframe을 차단합니다.
- 누락된 UUID — 위의 "알 수 없는 UUID"와 동일합니다. 의도된 동작이며,
appId를 누락하는 것만으로 허용 목록이 의도치 않게 넓어지지 않도록 합니다.