mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-05 09:46:53 +00:00
This change reorganizes the `tx/transactors` directory for consistency and discoverability. There are no behavioral changes, this is a pure refactor. Underscores were chosen as the way to separate multi-words as this is the more popular option in C++ projects. Specific changes: - Rename all subdirectories to lowercase/snake_case (`AMM` → `amm`, `Check` → `check`, `NFT` → `nft`, `PermissionedDomain` → `permissioned_domain`, etc.) - Merge `AMM/` and `Offer/` into `dex/`, including `PermissionedDEXHelpers` - Rename `MPT/` → `token/`, absorbing `SetTrust` and `Clawback` - Move top-level transactors into named groups: `account/`, `bridge/`, `credentials/`, `did/`, `escrow/`, `oracle/`, `payment/`, `payment_channel/`, `system/` - Update all include paths across the codebase and `transactions.macro`
53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <xrpl/tx/Transactor.h>
|
|
|
|
namespace xrpl {
|
|
|
|
/** AMMVote implements AMM vote Transactor.
|
|
* This transactor allows for the TradingFee of the AMM instance be a votable
|
|
* parameter. Any account (LP) that holds the corresponding LPTokens can cast
|
|
* a vote using the new AMMVote transaction. VoteSlots array in ltAMM object
|
|
* keeps track of upto eight active votes (VoteEntry) for the instance.
|
|
* VoteEntry contains:
|
|
* Account - account id that cast the vote.
|
|
* FeeVal - proposed fee in basis points.
|
|
* VoteWeight - LPTokens owned by the account in basis points.
|
|
* TradingFee is calculated as sum(VoteWeight_i * fee_i)/sum(VoteWeight_i).
|
|
* Every time AMMVote transaction is submitted, the transactor
|
|
* - Fails the transaction if the account doesn't hold LPTokens
|
|
* - Removes VoteEntry for accounts that don't hold LPTokens
|
|
* - If there are fewer than eight VoteEntry objects then add new VoteEntry
|
|
* object for the account.
|
|
* - If all eight VoteEntry slots are full, then remove VoteEntry that
|
|
* holds less LPTokens than the account. If all accounts hold more
|
|
* LPTokens then fail transaction.
|
|
* - If the account already holds a vote, then update VoteEntry.
|
|
* - Calculate and update TradingFee.
|
|
* @see [XLS30d:Governance: Trading Fee Voting
|
|
* Mechanism](https://github.com/XRPLF/XRPL-Standards/discussions/78)
|
|
*/
|
|
class AMMVote : public Transactor
|
|
{
|
|
public:
|
|
static constexpr ConsequencesFactoryType ConsequencesFactory{Normal};
|
|
|
|
explicit AMMVote(ApplyContext& ctx) : Transactor(ctx)
|
|
{
|
|
}
|
|
|
|
static bool
|
|
checkExtraFeatures(PreflightContext const& ctx);
|
|
|
|
static NotTEC
|
|
preflight(PreflightContext const& ctx);
|
|
|
|
static TER
|
|
preclaim(PreclaimContext const& ctx);
|
|
|
|
TER
|
|
doApply() override;
|
|
};
|
|
|
|
} // namespace xrpl
|