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"}Opt-out (recompensas génesis XAH)
Sección titulada «Opt-out (recompensas génesis XAH)»{ "TransactionType": "ClaimReward", "Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm", "Flags": 1}Reclamación de Recompensa IOU
Sección titulada «Reclamación de Recompensa IOU»(Requiere la enmienda [IOURewardClaim][].)
{ "TransactionType": "ClaimReward", "Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm", "Issuer": "rIssuerAccountXXXXXXXXXXXXXXXXXXX", "ClaimCurrency": { "currency": "USD", "issuer": "rIssuerAccountXXXXXXXXXXXXXXXXXXX" }}| Campo | Tipo JSON | [Tipo Interno][] | Descripción |
|---|---|---|---|
Account | String | AccountID | La dirección de la cuenta que está reclamando la recompensa. |
Flags | Number | UInt32 | (Opcional) Puede tener el indicador 1 activado para optar por no recibir recompensas. |
Issuer | String | AccountID | (Opcional) La cuenta génesis (recompensas XAH) o una cuenta IOU (recompensas IOU). |
ClaimCurrency | Object | Issue | (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. |
Indicadores ClaimReward
Sección titulada «Indicadores ClaimReward»Las transacciones del tipo ClaimReward admiten valores adicionales en el campo Flags, de la siguiente manera:
| Nombre del Indicador | Valor Hex | Valor Decimal | Descripción |
|---|---|---|---|
tfOptOut | 0x00000001 | 1 | Excluye a la cuenta de las recompensas eliminando los campos relacionados con recompensas del objeto de cuenta del ledger. |
Costo de Transacción Especial
Sección titulada «Costo de Transacción Especial»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.
Comportamiento de Recompensa IOU
Sección titulada «Comportamiento de Recompensa IOU»(Requiere la enmienda [IOURewardClaim][].)
Cuando se especifica ClaimCurrency, la transacción sigue el camino de recompensa IOU:
- La cuenta
Issuerdebe tener un Hook instalado que se active en una transacciónClaimReward. El Hook es responsable de calcular y distribuir el pago de recompensa. - En la primera reclamación, se inicializa un objeto de seguimiento de recompensas
LowRewardoHighRewarden la línea de confianza (objeto de ledger RippleState) entreAccounty el emisor. El lado utilizado depende del ordenamiento canónico alto/bajo de las dos cuentas. - Después de cada transacción subsiguiente que cambia el saldo de la línea de confianza, el ledger actualiza automáticamente
TrustLineRewardAccumulatordentro del objeto de seguimiento usando la misma fórmula de área bajo la curva que las recompensas génesis de XAH. - Cuando se envía una
ClaimRewardconClaimCurrency, 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.
Casos de Error
Sección titulada «Casos de Error»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 Error | Descripción |
|---|---|
temDISABLED | Ocurre si la enmienda requerida (BalanceRewards o IOURewardClaim) no está habilitada. |
temINVALID_FLAG | Ocurre si el indicador se establece en un valor distinto de 1. (Requiere la enmienda [fixRewardClaimFlags][].) |
temMALFORMED | Ocurre 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_ISSUER | Ocurre 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_ACCOUNT | Ocurre si la cuenta emisora no existe. |
tecNO_ISSUER | Ocurre si la cuenta Issuer no existe. |
tecNO_PERMISSION | Ocurre si la cuenta del emisor es una cuenta AMM. Las cuentas AMM no pueden tener Hooks de recompensa. |
tecNO_TARGET | Ocurre si la cuenta del emisor no tiene Hooks, o ninguno de sus Hooks se activa en una transacción ClaimReward. |
tecNO_LINE | Ocurre si no existe ninguna línea de confianza entre Account y el emisor para el ClaimCurrency especificado. |