Pular para o conteúdo

Signers List

[Fonte]

(Adicionado pela [emenda MultiSign][].)

O tipo de objeto SignerList representa uma lista de partes que, como grupo, estão autorizadas a assinar uma transação em lugar de uma conta individual. É possível criar, substituir ou remover uma lista de assinantes usando uma [transação SignerListSet][].

{
"Flags": 0,
"LedgerEntryType": "SignerList",
"OwnerNode": "0000000000000000",
"PreviousTxnID": "5904C0DC72C58A83AEFED2FFC5386356AA83FCA6A88C89D00646E51E687CDBE4",
"PreviousTxnLgrSeq": 16061435,
"SignerEntries": [
{
"SignerEntry": {
"Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
"SignerWeight": 2
}
},
{
"SignerEntry": {
"Account": "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",
"SignerWeight": 1
}
},
{
"SignerEntry": {
"Account": "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
"SignerWeight": 1
}
}
],
"SignerListID": 0,
"SignerQuorum": 3,
"index": "A9C28A28B85CD533217F5C0A0C7767666B093FA58A0F2D80026FCC4CD932DDC7"
}

Um objeto SignerList tem os seguintes campos:

NomeTipo JSONTipo InternoObrigatório?Descrição
FlagsNumberUInt32SimUm mapa de bits de flags booleanos habilitados para esta lista de assinantes. Para mais informações, consulte Flags de SignerList.
LedgerEntryTypeStringUInt16SimO valor 0x0053, mapeado para a string SignerList, indica que este objeto é um objeto SignerList.
OwnerNodeStringUInt64SimUma dica indicando qual página do diretório do proprietário aponta para este objeto, caso o diretório consista em múltiplas páginas.
PreviousTxnIDStringHash256SimO hash identificador da transação que mais recentemente modificou este objeto.
PreviousTxnLgrSeqNumberUInt32SimO [índice do ledger][Índice de Ledger] que contém a transação que mais recentemente modificou este objeto.
SignerEntriesArrayArraySimUm array de objetos Signer Entry representando as partes que fazem parte desta lista de assinantes.
SignerListIDNumberUInt32SimUm ID para esta lista de assinantes. Atualmente sempre definido como 0. Se uma emenda futura permitir múltiplas listas de assinantes para uma conta, isso pode mudar.
SignerQuorumNumberUInt32SimUm número alvo para os pesos dos assinantes. Para produzir uma assinatura válida para o proprietário desta SignerList, os assinantes devem fornecer assinaturas válidas cujos pesos somem este valor ou mais.

Os SignerEntries podem ser qualquer combinação de endereços com e sem fundos que usem chaves secp256k1 ou ed25519.

Cada membro do campo SignerEntries é um objeto que descreve aquele assinante na lista. Um Signer Entry tem os seguintes campos:

NomeTipo JSONTipo InternoDescrição
AccountStringAccountIDUm endereço Xahau cuja assinatura contribui para a multi-assinatura. Não precisa ser um endereço com fundos no ledger.
SignerWeightNumberUInt16O peso de uma assinatura deste assinante. Uma multi-assinatura só é válida se o peso total das assinaturas fornecidas atingir ou superar o valor SignerQuorum da lista de assinantes.
WalletLocatorStringHash256(Opcional) Dados hexadecimais arbitrários. Podem ser usados para identificar o assinante ou para outros fins relacionados. (Adicionado pela [emenda ExpandedSignerList][].)

Ao processar uma transação multi-assinada, o servidor consulta os valores de Account em relação ao ledger no momento da execução da transação. Se o endereço não corresponder a um objeto AccountRoot com fundos, então apenas a chave privada mestre associada a esse endereço pode ser usada para produzir uma assinatura válida. Se a conta existir no ledger, depende do estado dessa conta. Se a conta tiver uma Chave Regular configurada, a Chave Regular pode ser usada. A chave mestre da conta só pode ser usada se não estiver desabilitada. Uma multi-assinatura não pode ser usada como parte de outra multi-assinatura.

(Adicionado pela [emenda MultiSignReserve][].)

Objetos SignerList podem ter o seguinte valor de flag:

Nome do FlagValor HexValor DecimalDescrição
lsfOneOwnerCount0x0001000065536Se este flag estiver habilitado, esta SignerList conta como um item para fins da reserva do proprietário. Caso contrário, esta lista conta como N+2 itens, onde N é o número de assinantes que contém. Este flag é habilitado automaticamente se você adicionar ou atualizar uma lista de assinantes após a [emenda MultiSignReserve][] ser habilitada.

Uma lista de assinantes contribui para o requisito de reserva do seu proprietário.

A [emenda MultiSignReserve][] (habilitada em 2019-04-17) fez com que cada lista de assinantes contasse como um objeto, independentemente de quantos membros ela tenha. Como resultado, a reserva do proprietário associada a uma nova lista de assinantes é de 2 XAH.

Uma lista de assinantes criada antes da [emenda MultiSignReserve][] conta como dois objetos, e cada membro da lista conta como um. Como resultado, a reserva total do proprietário associada à lista de assinantes varia de 3 a 10 vezes a reserva exigida por uma única linha de confiança (RippleState) ou objeto Offer no ledger. Para atualizar uma lista de assinantes para usar a nova reserva reduzida, atualize a lista enviando uma [transação SignerListSet][].

O ID de um objeto de lista de assinantes é o SHA-512Half dos seguintes valores, concatenados em ordem:

  • A chave de espaço RippleState (0x0053)
  • O AccountID do proprietário da lista de assinantes
  • O SignerListID (atualmente sempre 0)