Saltearse al contenido

Débil y Fuerte

Los Transactional Stake Holders (TSH) son las partes que tienen algún tipo de interés o se ven afectadas por una transacción. Su relación puede ser débil o fuerte. El grado de conexión determina si tienen derecho a ejecutar sus Hooks y quién paga por esa ejecución.

Por ejemplo:

  • En una transacción Payment directa de XAH, los TSH son la cuenta originaria y la cuenta destino.
  • En una transacción SetSignerList, los TSH son la cuenta originaria y cada cuenta incluida en la lista de firmantes.
  • En una transacción OfferCreate, las cuentas cuyas ofertas son cruzadas son TSH débiles.
  • Con la enmienda IOUIssuerWeakTSH, los emisores de moneda pueden ejecutar Hooks en transacciones de terceros si lo han activado.

Debido a la diversidad de transacciones en Xahau, los TSH pueden ser complejos y poco intuitivos.

Cada TSH tiene una conexión débil o fuerte:

  1. La transacción paga la ejecución del Hook.
  2. Puede hacer rollback completo usando rollback().
  1. La transacción no paga la ejecución.
  2. El TSH paga su ejecución mediante Collect Call Hooks.
  3. Debe tener activado asfTshCollect.
  4. No puede hacer rollback, pero sí modificar estado o emitir transacciones.
  • Los Hooks fuertes se ejecutan antes de aplicar la transacción → pueden bloquearla.
  • Los Hooks débiles se ejecutan después → no pueden bloquearla pero acceden al metadata.

El parámetro uint32_t indica el contexto:

  • 0 → ejecución fuerte
  • 1 → ejecución débil
  • 2 → débil tras hook_again
  • 0 → transacción emitida aceptada
  • 1 → transacción emitida fallida

Si una transacción no aparece, solo tiene como TSH a la cuenta originaria.

Tipo de transacciónTipo TSHQuién es el TSH
AccountDeleteFuerteCuenta destino
AccountSetNingunoN/A
CheckCancelDébilCuenta destino
CheckCreateFuerteCuenta destino
ClaimRewardFuerteEmisor
DepositPreauthFuerteCuenta autorizada
EscrowCreateFuerteCuenta destino
OfferCreateDébilCuentas cruzadas
PaymentFuerte + DébilDestino (fuerte), intermediarios (débil)
SetHookNingunoN/A
TrustSetDébilEmisor

AccountSet

OTXNTSHAccountSet
AccountAccountFuerte

AccountDelete

OTXNTSHAccountDelete
AccountAccountNinguno
AccountBeneficiarioFuerte

Payment

OTXNTSHPayment
AccountAccountFuerte
AccountDestinoFuerte
AccountCruzadoDébil

TrustSet

OTXNTSHTrustSet
AccountAccountFuerte
AccountEmisorDébil

URIToken

OTXNBurnableTSHMintBurnBuySellCancel
OwnerFalseOwnerNingunoFuerteFuerteFuerteFuerte
OwnerFalseIssuerNingunoDébilDébilDébilNinguno
OwnerTrueIssuerNingunoDébilFuerteFuerteNinguno