Pular para o conteúdo

Concessões

As Concessões fornecem uma maneira para um Instalador de Hook atribuir permissões de Gerenciamento de Estado a um Hook externo em outras contas Xahau.

Uma Transação SetHook pode especificar um array HookGrants dentro de qualquer objeto Hook em seu array Hooks. O array HookGrants contém um ou mais objetos HookGrant (até 8).

Ao contrário dos Parâmetros, o array HookGrants é sempre definido exatamente como especificado na Transação SetHook. Portanto, se você deseja atualizar um HookGrant específico enquanto mantém múltiplas outras entradas HookGrant que foram definidas anteriormente, você deve primeiro obter o antigo array HookGrants, modificá-lo e depois reenviar o array completo em uma Operação de Atualização.

Para excluir todas as Concessões, envie um array HookGrants vazio.

Uma Concessão permite que uma conta XRPL externa ou um Hook modifique o Estado do Hook dentro do namespace do Hook específico para o qual a Concessão é definida.

A HookGrant deve especificar pelo menos:

  • HookHash
    E também pode especificar uma conta:
  • Authorize

Somente o Hook especificado por HookHash pode modificar o Estado do Hook dentro do namespace do Hook para o qual a HookGrant é especificada. Se Authorize for especificado, então essa permissão é restringida ainda mais apenas ao Hook especificado pelo HookHash quando instalado na conta especificada por Authorize.

Account: "rALicebv3hMYNBWtu1VEEWkToArgYsYERs",
TransactionType: "SetHook",
Hooks:
[
{
Hook: {
...,
HookNamespace: "3963ADEB1B0E8934C0963680531202FD511FF1E16D5864402C2DA63861C420A8",
HookGrants:
[
{
HookGrant: // primeira concessão
{
HookHash: "78CAF69EEE950A6C55A450AC2A980DE434D624CD1B13148E007E28B7B6461CC8"
},
HookGrant: // segunda concessão
{
Authorize: "rCLairev2ma2gNZdcHJeTk7fCQ1ki84vr9",
HookHash: "A5B8D62154DA1C329BE13582086B52612476720CEBD097EB85CEE1455E1C70A6"
}
},
]
}
}
],
...

A primeira concessão acima permite:

  • qualquer instância do Hook cujo código gera o hash 78CAF69EEE950A6C55A450AC2A980DE434D624CD1B13148E007E28B7B6461CC8
  • executando em qualquer conta
  • modificar o Estado do Hook da conta rALicebv3hMYNBWtu1VEEWkToArgYsYERs
  • dentro do Namespace 3963ADEB1B0E8934C0963680531202FD511FF1E16D5864402C2DA63861C420A8

A segunda concessão acima permite:

  • qualquer instância do Hook cujo código gera o hash A5B8D62154DA1C329BE13582086B52612476720CEBD097EB85CEE1455E1C70A6
  • mas somente quando executado na conta rCLairev2ma2gNZdcHJeTk7fCQ1ki84vr9
  • modificar o Estado do Hook da conta rALicebv3hMYNBWtu1VEEWkToArgYsYERs
  • dentro do Namespace 3963ADEB1B0E8934C0963680531202FD511FF1E16D5864402C2DA63861C420A8

Para fazer uso de uma concessão, um Hook modifica objetos de Estado em uma conta externa chamando state_foreign_set.