Pular para o conteúdo

Namespaces

Para evitar que dois ou mais Hooks instalados na mesma conta se sobreponham inadvertidamente ao Estado do Hook um do outro, um namespace de 32 bytes deve ser fornecido ao criar ou instalar cada Hook.

O namespace pode ser qualquer valor arbitrário de 32 bytes que o desenvolvedor escolher. Desde que o namespace seja único na cadeia de Hooks, nenhuma colisão de estado ocorrerá.

Recomendamos fortemente o uso de SHA256 sobre o nome de trabalho do desenvolvedor para o Hook. O SHA256 é um dos dois algoritmos de hash usados na derivação de endereços Xahau (a partir de uma chave mestre de conta) e, como tal, deve estar prontamente disponível para o desenvolvedor.

O campo HookNamespace é fornecido como um blob hex de 32 bytes dentro de cada objeto Hook em um array Hooks ao executar uma transação SetHook.

O Namespace configurado sob o qual um Hook opera altera os Keylets sob os quais seu Estado é armazenado. Portanto, dois Hooks sob dois Namespaces diferentes instalados na mesma conta Xahau podem usar a mesma chave de estado para se referir a objetos de estado diferentes. Por outro lado, dois Hooks diferentes usando o mesmo Namespace na mesma conta Xahau podem acessar e modificar os objetos de estado um do outro usando as mesmas chaves de estado.

Em javascript, importar o ripple-address-codec fornece acesso ao SHA256.
(Também é possível usar crypto.subtle no navegador, ou crypto.createHash no node para acessar este algoritmo de hash.)

HookNamespace: addr.codec.sha256('carbon').toString('hex')

O primeiro usuário a definir um novo Hook define um HookNamespace que se torna o Namespace Padrão para aquele Hook. Isso significa que qualquer usuário subsequente que referenciar a mesma HookDefinition receberá este Namespace originalmente definido por padrão.

O usuário subsequente pode especificar seu próprio Namespace, substituindo o Namespace Padrão apenas para sua instalação.

A escolha do HookNamespace afeta o comportamento das seguintes APIs de Hook:

Veja account_info e account_namespace para informações sobre como consultar o ledger em relação a namespaces.