App ID
appId é um UUID que a carteira Drop usa para consultar a configuração por dApp na edge. Ele controla três coisas:
- Quais origens pai podem embutir a carteira. A edge function da carteira Drop define um cabeçalho dinâmico
Content-Security-Policy: frame-ancestors <suas-origens>em cada resposta. Um dApp que tente carregar a carteira em iframe a partir de uma origem não registrada é bloqueado pelo navegador antes que qualquer código seja executado. - Feature flags. dApps individuais podem ativar ou desativar recursos (redes adicionais, ativos extras, etc.) sem afetar outras integrações.
- Escopo de analytics. Armazenamento, analytics e estado por parceiro são indexados pelo
appId, de modo que sua integração fica limpamente isolada.
INFO
appId é opcional no desenvolvimento local. Você pode omiti-lo ou passar qualquer UUID e a carteira voltará a uma CSP restrita a localhost. Ele se torna obrigatório assim que você faz deploy em uma origem pública.
Registrar um App ID
Hoje não existe um portal self-service — o registro é um PR contra o banco de dados de parceiros.
Gere um UUID v4 (por exemplo,
uuidgenoucrypto.randomUUID()).Abra um pull request contra
apps/web/shared/partners.tsadicionando uma entrada para seu dApp:tsconst PARTNERS: Record<string, AppConfig> = { // ... existing entries '<your-uuid>': { domains: ['your-app.com', '*.your-app.com'], assets: { additionalEnabled: [] }, }, }Assim que o PR for mesclado e a carteira for reimplantada, a entrada fica ativa.
domains
As strings são comparadas com a origem frame-ancestors reportada pelo navegador usando wildcard-match. Você pode listar hostnames simples (your-app.com), wildcards (*.your-app.com) ou origens completas incluindo protocolo (https://your-app.com). Quando você passa um hostname, tanto a variante http:// quanto a https:// são aceitas.
localhost e 127.0.0.1 são sempre permitidos independentemente de domains, então você pode desenvolver contra um appId não registrado ou com domains vazios sem configuração adicional.
assets.additionalEnabled
Uma lista de IDs de rede extras a serem exibidos na UI da carteira além do conjunto padrão. Deixe como [] se você precisar apenas dos padrões.
Usando seu App ID
Passe o UUID como appId ao criar a carteira:
const wallet = createWallet({
appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
providers: {
solana: true,
},
})O SDK o encaminha para o iframe como ?appId=<uuid> — não há nenhum handshake em tempo de execução que você precise realizar.
O que acontece se o App ID estiver errado?
- UUID desconhecido — a edge function recai em
NO_APP_CONFIG, que permite apenaslocalhoste127.0.0.1. A carteira não conseguirá carregar na sua origem de produção, com uma violação de CSP no console do navegador. - Domínios errados — o mesmo comportamento acima: o navegador bloqueia o iframe antes que qualquer código da carteira seja executado.
- UUID ausente — o mesmo que "UUID desconhecido" acima. Isso é intencional, para que omitir o
appIdnão amplie acidentalmente sua lista de permissões.