FiatEnabled contract provides functionality for tracking and managing fiat currency transactions in campaigns. It allows tracking fiat contributions, managing fiat fee disbursement, and integrating traditional payment methods.
Overview
Purpose
- Fiat Integration: Support traditional payment methods
- Transaction Tracking: Record individual fiat transactions
- Fee Management: Track fiat fee disbursement
- Hybrid Funding: Support both crypto and fiat contributions
- Compliance: Enable fiat payment compliance
State Variables
| Variable | Type | Description |
|---|---|---|
s_fiatRaisedAmount | uint256 | Total fiat amount raised |
s_fiatFeeIsDisbursed | bool | Whether fiat fees have been disbursed |
s_fiatAmountById | mapping(bytes32 => uint256) | Fiat amounts by transaction ID |
Functions
Get Fiat Raised Amount
- Total amount of fiat raised
- Display total fiat contributions
- Calculate campaign totals including fiat
Get Fiat Transaction Amount
fiatTransactionId: Unique transaction identifier
- Amount of the specific fiat transaction
- Transaction must exist
- Returns error if transaction not found
Check If Fiat Fee Disbursed
- True if fiat fees have been disbursed
- Check if fiat fees can be collected
- Verify fee distribution status
Update Fiat Transaction (Internal)
fiatTransactionId: Transaction identifierfiatTransactionAmount: Transaction amount
- Stores transaction amount
- Updates total fiat raised
- Emits
FiatTransactionUpdatedevent
Update Fiat Fee Disbursement State (Internal)
isDisbursed: Whether fees are disbursedprotocolFeeAmount: Protocol fee amountplatformFeeAmount: Platform fee amount
- Marks fiat fees as disbursed
- Emits
FiatFeeDisbusementStateUpdatedevent - Can only be called once
- Fees must not already be disbursed
- Must mark as disbursed
Events
FiatTransactionUpdated
FiatFeeDisbusementStateUpdated
Errors
FiatEnabledAlreadySet
FiatEnabledDisallowedState
FiatEnabledInvalidTransaction
Usage Examples
Recording Fiat Transactions
Tracking Fiat Contributions
Checking Transaction
Disbursing Fiat Fees
Integration
With On-Ramp Services
Hybrid Funding
Security Considerations
Transaction Verification
- Verify fiat transactions off-chain
- Use secure payment processors
- Maintain audit trail
Fee Disbursement
- Only once, irreversible
- Calculate fees accurately
- Track both protocol and platform fees
State Protection
- Cannot undo disbursement
- Must verify before disbursing
- Track all transactions
Best Practices
Record Transactions Promptly
Audit Trail
Next Steps
- ItemRegistry - Item management
- BaseTreasury - Treasury base contract