Saltearse al contenido

ClaimReward

[Source]

(Añadido por la enmienda [BalanceRewards][].)

Opt-in + Reclamación (recompensas génesis XAH)

Sección titulada «Opt-in + Reclamación (recompensas génesis XAH)»
{
"TransactionType": "ClaimReward",
"Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
"Issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
}
{
"TransactionType": "ClaimReward",
"Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
"Flags": 1
}

(Requiere la enmienda [IOURewardClaim][].)

{
"TransactionType": "ClaimReward",
"Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
"Issuer": "rIssuerAccountXXXXXXXXXXXXXXXXXXX",
"ClaimCurrency": {
"currency": "USD",
"issuer": "rIssuerAccountXXXXXXXXXXXXXXXXXXX"
}
}
CampoTipo JSON[Tipo Interno][]Descripción
AccountStringAccountIDLa dirección de la cuenta que está reclamando la recompensa.
FlagsNumberUInt32(Opcional) Puede tener el indicador 1 activado para optar por no recibir recompensas.
IssuerStringAccountID(Opcional) La cuenta génesis (recompensas XAH) o una cuenta IOU (recompensas IOU).
ClaimCurrencyObjectIssue(Opcional, IOURewardClaim) La moneda IOU para reclamar recompensas, como {"currency": "...", "issuer": "..."}. No puede ser XAH. El emisor no debe ser la cuenta génesis y no debe ser igual a Account. Requiere que exista una línea de confianza entre Account y el emisor.

Las transacciones del tipo ClaimReward admiten valores adicionales en el campo Flags, de la siguiente manera:

Nombre del IndicadorValor HexValor DecimalDescripción
tfOptOut0x000000011Excluye a la cuenta de las recompensas eliminando los campos relacionados con recompensas del objeto de cuenta del ledger.

La transacción ClaimReward tiene un costo de transacción estándar, que es el costo mínimo de transacción requerido para todas las transacciones.

(Requiere la enmienda [IOURewardClaim][].)

Cuando se especifica ClaimCurrency, la transacción sigue el camino de recompensa IOU:

  1. La cuenta Issuer debe tener un Hook instalado que se active en una transacción ClaimReward. El Hook es responsable de calcular y distribuir el pago de recompensa.
  2. En la primera reclamación, se inicializa un objeto de seguimiento de recompensas LowReward o HighReward en la línea de confianza (objeto de ledger RippleState) entre Account y el emisor. El lado utilizado depende del ordenamiento canónico alto/bajo de las dos cuentas.
  3. Después de cada transacción subsiguiente que cambia el saldo de la línea de confianza, el ledger actualiza automáticamente TrustLineRewardAccumulator dentro del objeto de seguimiento usando la misma fórmula de área bajo la curva que las recompensas génesis de XAH.
  4. Cuando se envía una ClaimReward con ClaimCurrency, el ledger reinicia los contadores de recompensa en la línea de confianza y activa el Hook del emisor, que lee el valor acumulado y emite un pago de recompensa.

Los contadores de recompensa IOU son completamente independientes de los campos de recompensa génesis de XAH en el objeto AccountRoot.

Además de los errores que pueden ocurrir para todas las transacciones, las transacciones ClaimReward pueden resultar en los siguientes códigos de resultado:

Código de ErrorDescripción
temDISABLEDOcurre si la enmienda requerida (BalanceRewards o IOURewardClaim) no está habilitada.
temINVALID_FLAGOcurre si el indicador se establece en un valor distinto de 1. (Requiere la enmienda [fixRewardClaimFlags][].)
temMALFORMEDOcurre si ClaimCurrency es un tipo no monetario o XAH, si el emisor es igual a Account, o si los campos de la transacción están incorrectamente establecidos.
temBAD_ISSUEROcurre si se establece ClaimCurrency pero el emisor es la cuenta génesis, o si Issuer es la cuenta génesis pero también se establece ClaimCurrency.
terNO_ACCOUNTOcurre si la cuenta emisora no existe.
tecNO_ISSUEROcurre si la cuenta Issuer no existe.
tecNO_PERMISSIONOcurre si la cuenta del emisor es una cuenta AMM. Las cuentas AMM no pueden tener Hooks de recompensa.
tecNO_TARGETOcurre si la cuenta del emisor no tiene Hooks, o ninguno de sus Hooks se activa en una transacción ClaimReward.
tecNO_LINEOcurre si no existe ninguna línea de confianza entre Account y el emisor para el ClaimCurrency especificado.