1. İLERİ DÜZEY KATILIM KOŞULLARI MOTORU (7 Bağımsız Koşul Modülü)
───────────────────────────────────────────────────────────────────────

Eklenti, her biri kendi PHP sınıfında yönetilen ve tamamen genişletilebilir
mimaride tasarlanmış 7 katılım koşulu içermektedir:

Çekiliş Başlangıcından İtibaren Mesaj Sayısı (MessageCountSinceStart):
Kullanıcının çekiliş başladıktan SONRA attığı mesaj sayısını ölçer. Tarihsel
mesajlar sayılmaz; yalnızca aktif kampanya dönemindeki katkılar değerlenir.
Sistem, giveaway start_date değerine göre milisaniye hassasiyetiyle çalışır.
Bu koşul forum aktivitesini çekiliş süresince yüksek tutmanın en etkili yoludur.

Çekiliş Başlangıcından İtibaren Konu Sayısı (ThreadCountSinceStart):
Kullanıcının çekiliş döneminde açtığı YENİ konu sayısını denetler. Geçmişte
açılmış konular bu sayaca hiçbir şekilde dahil edilmez. Üyeleri özgün ve yeni
konular açmaya yönlendirmek için tasarlanmıştır.

Toplam Mesaj Sayısı (TotalMessages):
Kullanıcının tüm hesap geçmişi boyunca foruma katkı sağladığı mesaj sayısını
kontrol eder. Yeni ve sahte hesapların çekilişe girmesini önleyen kritik bir
filtredir. Örneğin "Minimum 100 toplam mesaj" şartı yalnızca köklü üyeleri
kabul eder.

Toplam Konu Sayısı (TotalThreads):
Kullanıcının hesap geçmişindeki toplam konu sayısını denetler. Genel hesap
aktivite düzeyini ölçmek ve hesap kalitesine göre filtreleme yapmak için
kullanılır. TotalMessages ile birlikte çift katmanlı bir hesap kalite filtresi
oluşturur.

Tepki Puanı (ReactionScore):
Kullanıcının forumdan aldığı toplam beğeni/tepki puanını kontrol eder. Salt
sayısal katkı değil; topluluğun takdirini kazanmış, gerçekten değerli içerik
üreten üyeleri tespit etmenin benzersiz yolu budur.

● Hesap Yaşı (AccountAge):
Kullanıcının forum üyeliğinin ne kadar süredir devam ettiğini denetler. Gün,
Ay veya Yıl bazında hassas bir şekilde yapılandırılabilir. Sistem, kayıt
tarihini ve seçili birimi kullanarak kesin ve doğru bir hesaplama yapar.

● Kullanıcı Grupları (UserGroups):
Çekilişi yalnızca seçili kullanıcı gruplarına açar. Birden fazla grup seçimi
desteklenir. Seçilmeyen gruplar otomatik olarak kapsam dışında kalır. VIP,
Premium veya özel kullanıcı gruplarına özel çekilişler düzenlenebilir.


2. KATEGORİ BAZLI FİLTRELEME (Applicable Categories)
───────────────────────────────────────────────────────

Yukarıdaki tüm aktivite koşulları, forum genelinde değil yalnızca belirlediğiniz
forum bölümlerinde değerlendirilebilir. Admin panelindeki "Applicable Categories"
alanından istediğiniz bölümleri seçtiğinizde sistem yalnızca bu bölümlerdeki
aktiviteleri sayar. Bu özellik, belirli bir forum bölümüne odaklanmış aktivite
kampanyaları oluşturmanıza imkân tanır. Seçim yapılmazsa sistem tüm forumu kapsar.


3. ANAHTAR KELİME ZORUNLULUĞU (Participation Keyword)
────────────────────────────────────────────────────────

Çekilişe katılmak için kullanıcının belirli bir kelimeyi ya da cümleyi mesajında
kullanmasını zorunlu kılabilirsiniz. Sistem bu kontrolü büyük/küçük harf duyarsız
(stripos) ve çok baytlı UTF-8 karakter uyumlu (mb_stripos) olarak çift katmanlı
biçimde gerçekleştirir. Türkçe karakterler (ş, ğ, ü, ö, ç, ı) dahil tüm dil
karakterleri sorunsuz çalışır. Anahtar kelimeyi içermeyen mesajlar katılım olarak
işlenmez ve kullanıcının sisteme kayıt edilmesine neden olmaz.


4. ÇİFT KATMANLI AKILLI SPAM MODERASYON SİSTEMİ
──────────────────────────────────────────────────

[XTR] Forum Reward System'in en güçlü yeniliği olan bu sistem, çekiliş süresince
üyelerin şart sağlamak amacıyla düşük kaliteli içerik paylaşmasını iki ayrı katman
üzerinden engeller. Her iki katman birbirinden bağımsız açılıp kapatılabilir.

● Konu Moderasyonu (Moderate Applicable Nodes):
Bu seçenek aktifken, çekiliş süresince "Applicable Categories"taki tüm yeni
konular oluşturulmadan önce otomatik olarak moderasyon kuyruğuna alınır. Teknik
olarak XenForo'nun entity_pre_save olayı dinlenerek konunun discussion_state
değeri kayıt öncesinde 'moderated' olarak atanır. Moderatör yetkisine sahip
kullanıcılar (approveUnapprove izni) bu kuralın dışında tutulur.

● Yanıt/Mesaj Moderasyonu (Moderate Applicable Posts):
Bu seçenek aktifken, yalnızca konular değil o kategorilere yazılan tüm yeni
yanıtlar ve mesajlar da moderasyon kuyruğuna alınır. Aynı teknik altyapıyı
kullanarak message_state değerini kayıt öncesinde 'moderated' olarak atar.
Moderatör yetkisine sahip kullanıcılar yine kapsam dışında tutulur.

En kritik nokta: Moderasyon kuyruğuna düşen ve moderatör tarafından onaylanmayan
içerikler, kullanıcının katılım koşullarını karşılamasına KATKIDA BULUNMAZ.
Yani spam içerik üretmek katılım sayaçlarını etkileyemez.


5. KRİPTOGRAFİK OLARAK GÜVENLİ KURA MOTORU (Random Engine)
──────────────────────────────────────────────────────────────

Pek çok çekiliş eklentisi PHP'nin standart array_rand() veya shuffle()
fonksiyonlarını kullanır. Bu fonksiyonlar kriptografik açıdan güvenli DEĞİLDİR.

[XTR] Forum Reward System kazanan seçimini üç adımlı güvenli bir süreçle yapar:

Adım 1 — Anlık Yeniden Doğrulama:

Kura öncesinde tüm katılımcıların koşulları son kez yeniden kontrol edilir.
Başlangıçta uygun olup sonradan şartların altına düşen kullanıcılar kura
listesinden otomatik olarak çıkarılır. Bu anlık yeniden doğrulama sayesinde
yalnızca gerçekten hak eden üyeler çekilişte yer alır.

Adım 2 — Fisher-Yates Shuffle + random_int():
Uygun katılımcı listesi, istatistiksel önyargısı (bias) sıfır olan Fisher-Yates
algoritması ve PHP 7+'nın kriptografik açıdan güvenli random_int() fonksiyonu
kullanılarak karıştırılır. Bu yöntem, hiçbir şekilde tahmin edilemez ve
manipüle edilemez gerçek bir rastgelelik sağlar.

Adım 3 — SHA-256 Draw Hash (Kura Doğrulama Kodu):
Her kura için; çekiliş ID'si, tam kura zamanı, tüm uygun katılımcıların listesi
ve seçilen kazananların ID'lerinden oluşan benzersiz bir SHA-256 hash oluşturulur.
Bu kod, kazanan duyuru mesajına eklenir. Herhangi bir üye bu kodu bağımsız
olarak doğrulayabilir ve kuranın şeffaflığını teyit edebilir.


6. TAMAMEN OTOMATİK CRON TABANLI ÇEKİLİŞ SÜRECİ
───────────────────────────────────────────────────

Çekilişleri elle sonuçlandırmanıza gerek yoktur. XenForo'nun cron altyapısıyla
entegre zamanlı görev (cron job), aktif olup bitiş tarihi geçmiş tüm çekilişleri
otomatik tespit eder. Cron çalıştığında sırasıyla şunlar gerçekleşir:

→ Tüm katılımcıların koşulları yeniden doğrulanır
→ Fisher-Yates + random_int() ile kazananlar seçilir
→ SHA-256 Draw Hash veritabanına kaydedilir
→ Çekiliş durumu "completed" olarak güncellenir
→ Forum konusuna kazananların @mention'larını ve kura hash'ini içeren
otomatik duyuru yanıtı yazılır
→ Kazananlara XenForo native bildirim sistemiyle kişisel uyarı gönderilir
→ Eğer aktifse, konu otomatik olarak yoruma kapatılır


7. KAPSAMLI BİLDİRİM SİSTEMİ (Native Alert System)
──────────────────────────────────────────────────────

Sistem, XenForo'nun native alert altyapısıyla tam entegre üç senaryo içerir:

● Katılım Onay Bildirimi:
Kullanıcı başarıyla çekilişe girdiğinde "Çekilişe
başarıyla katıldınız" alert'i alır.

● Detaylı Hata Bildirimi: Şartları karşılamayan kullanıcıya hangi koşulu
neden sağlayamadığı tam olarak bildirilir. Örneğin: "Katılmak için en az 5
mesaj yazmanız gerekmektedir. Şu an 2 mesajınız var, 3 mesaj daha yazmanız
gerekiyor." Bu mesajlar dinamik olarak üretilir ve her koşul için özeldir.

● Kazanma Bildirimi: Çekilişi kazanan kullanıcıya "Çekilişi kazandınız!"
bildirimi gönderilir. Bildirimler forum konusunu açan kullanıcı adına iletilir,
böylece doğal ve kişisel bir deneyim yaratılır.


8. İNTERAKTİF KATILIM BLOĞU VE GERÇEK ZAMANLI İLERLEME ÇUBUĞU
──────────────────────────────────────────────────────────────────

Çekiliş konusunu görüntüleyen kullanıcılar, konunun üst kısmında kapsamlı bir
katılım bilgi paneli görür. Bu panelde şunlar yer alır:

✓ Çekiliş başlık ve açıklaması
✓ Tüm aktif katılım koşulları (her biri kendine özgü ikonla: mesaj ikonu,
konu ikonu, tepki ikonu, kullanıcı grubu ikonu, takvim ikonu vb.)
✓ Geri sayım sayacı (sona kaç gün, saat, dakika ve saniye kaldığını gösterir)
✓ Kullanıcının koşulları ne kadar tamamladığını gösteren dinamik Progress Bar
✓ Anahtar kelime varsa "Katılmak için şu kelimeyi içeren bir mesaj yaz" uyarısı
✓ En son katılan üyelerin listesi
✓ Kullanıcı şartları sağladıktan sonra katıldığında "Çekilişe katıldınız"
onayı ve kazanan duyurusunu gösteren sonuç bloğu


9. KAZANANLAR İÇİN GÖRSEL ŞÖLEN (Konfeti Animasyonu)
────────────────────────────────────────────────────────

Çekilişi kazanan bir kullanıcı konuya girdiğinde, admin panelinde "Enable
Confetti Effect" seçeneği aktifse, ekranın tüm köşelerinden dökülen canlı renkli
konfeti yağmuru animasyonuyla karşılanır. Bu küçük ama güçlü deneyim, kazanma
anını çok daha özel ve paylaşılabilir kılar.


10. AKTİF ÇEKİLİŞLER WİDGET'I
──────────────────────────────────

XenForo'nun desteklediği herhangi bir widget konumuna eklenebilen "Active
Giveaways" widget'ı şunları sunar:

✓ Mevcut tüm aktif çekilişlerin listesi
✓ Her çekiliş için dinamik geri sayım sayacı (bitiş tarihine göre)
✓ Her çekilişe kaç katılımcının dahil olduğu bilgisi
✓ Direkt çekiliş konusuna yönlendiren bağlantı

Widget ayarları admin panelinden tam olarak yapılandırılabilir:
· Gösterilecek maksimum çekiliş sayısı (Sonuç Limiti)
· Geri sayım sayacının görünürlüğü (Açık/Kapalı)
· Katılımcı sayısının görünürlüğü (Açık/Kapalı)


11. OTOMATİK ÇİFT YÖNLÜ SENKRONIZASYON (Core Sync)
──────────────────────────────────────────────────────

Admin paneli ile public forum arasındaki otomatik senkronizasyon, diğer
çözümlerden ayrılan kritik teknik özelliklerden biridir:

→ Yeni çekiliş oluşturulduğunda: XenForo'nun XF:Thread\Creator servisi
kullanılarak forum konusu ve ilk mesaj otomatik olarak oluşturulur.

→ Mevcut çekiliş düzenlendiğinde: XF:Thread\Editor ile konu başlığı,
XF post\Editor ile ilk mesaj içeriği anında ve güvenli şekilde güncellenir.

Bu işlemler XenForo'nun native servisleri üzerinden gerçekleştirildiği için
arama indeksleri (search index) bozulmaz, forum istatistikleri sağlıklı çalışır
ve düzenleme geçmişi (edit history) doğru kaydedilir.


12. YENIDEN KURA (REROLL) ÖZELLİĞİ
───────────────────────────────────────

Kazanan olarak seçilen bir üyenin şartları ihlal ettiği ya da ödülü kabul
edemeyeceği anlaşıldığında Admin panelinden tek tıkla "Reroll" yapılabilir.
Bu işlem mevcut kazananları temizler ve aynı kriptografik algoritmayı kullanarak
yeni kazananları seçer. Her reroll için yeni bir Draw Hash oluşturulur.


13. ÇEKILIŞ BİTİŞİNDE OTOMATİK KONU KİLİTLEME
──────────────────────────────────────────────────

"Lock Thread Upon Giveaway Completion" seçeneği aktifse, kura tamamlandığı an
konunun discussion_open değeri false olarak güncellenir. Kullanıcılar artık
kapanmış konuya yeni mesaj yazamaz. Çekiliş sonrası gereksiz tartışmaların
önüne geçer ve konuyu temiz bir şekilde arşivler.


14. IP BAZLI ÇOKLU HESAP KORUMASI
─────────────────────────────────────

Her katılım sırasında kullanıcının IP adresi binary formatta veritabanına işlenir.
Sistem, aynı IP'den farklı bir hesapla daha önce katılım yapılıp yapılmadığını
sorgular. Aynı IP'den ikinci bir katılım girişimi tespit edildiğinde "Multiple
account participation is not allowed" hata mesajıyla reddedilir. Localhost
adresleri ve admin hesapları bu kontrolün dışında tutulur.


15. GÖRÜNTÜLENEBILIR KURA DOĞRULAMA KODU (SHA-256 Draw Hash)
────────────────────────────────────────────────────────────────

Her kura işlemi sonrasında oluşturulan SHA-256 Draw Hash kodu, kazanan duyuru
mesajının içinde herkese açık olarak yayınlanır. Hash şu verilerden oluşur:
· Çekiliş ID'si
· Tam kura zamanı (Unix timestamp)
· Toplam uygun katılımcı sayısı
· Tüm uygun katılımcıların ID listesi
· Seçilen kazananların ID listesi

Herhangi bir üye bu kodu bağımsız olarak doğrulayabilir. Bu mekanizma,
forumunuza olan güveni benzeri görülmemiş ölçüde artıran şeffaflık kanıtıdır.

1. ADVANCED PARTICIPATION CONDITIONS ENGINE (7 Independent Modules)
───────────────────────────────────────────────────────────────────────

The addon contains 7 participation condition classes, each managed in its own
dedicated PHP class file within the Condition/ directory, following a fully
extensible architecture that allows future expansion without touching core files.

● Messages Since Giveaway Start (MessageCountSinceStart):
Checks how many messages the user has posted AFTER the giveaway's start date.
Historical messages are entirely excluded. Only activity produced during the
active campaign period counts. The system compares against the giveaway's
start_date with millisecond-level precision. This is the most effective way
to keep forum activity high throughout the campaign duration.

● Threads Since Giveaway Start (ThreadCountSinceStart):
Checks how many new topics the user has created since the giveaway started.
Past threads are completely excluded. Only threads created after the giveaway
start date qualify. This drives members to contribute new, original discussions
rather than reviving old ones just to inflate their numbers.

● Lifetime Total Messages (TotalMessages):
Checks the total number of messages posted across the user's entire account
history. This is the critical filter for preventing new and fake accounts from
entering your giveaway. Setting a minimum like "100 total messages" restricts
participation to established, long-standing forum members only.

● Lifetime Total Threads (TotalThreads):
Checks the total number of topics the user has ever created across their
account history. Similar to Total Messages, it measures overall account
activity level. Combined with TotalMessages, it creates a double-layer
account quality gate.

● Reaction Score (ReactionScore):
Checks the user's total accumulated reaction/like score. This is a unique
tool for identifying members who have contributed genuinely valuable content.
It rewards not just prolific contributors, but those whose contributions
have been recognized and appreciated by the community itself.

● Account Age (AccountAge):
Checks how long the user has held their forum account. Configurable precisely
in Days, Months, or Years. The system compares the registration date against
the current date using the selected unit for an exact and accurate calculation.
For example "Must be a member for at least 6 months" restricts the giveaway
to loyal, long-standing members.

● User Groups (UserGroups):
Restricts the giveaway to specific user groups. Multiple groups can be
selected simultaneously. Non-selected groups are automatically excluded.
Use this to create VIP-exclusive, Premium-only, or subscriber-specific
giveaways.


2. CATEGORY-BASED FILTERING (Applicable Categories)
───────────────────────────────────────────────────────

All activity-based conditions can be evaluated not forum-wide but only within
the specific forum sections you select. In the admin panel, choose your desired
sections in the "Applicable Categories" field and the system will count only
activities in those sections. If no selection is made, the system covers the
entire forum. This feature lets you transform a giveaway into a focused
engagement campaign for a specific part of your forum community.


3. PARTICIPATION KEYWORD REQUIREMENT
────────────────────────────────────────

You can require users to include a specific word or phrase in their reply to
participate. The system performs this check using both case-insensitive
(stripos) and multi-byte UTF-8 compatible (mb_stripos) string matching,
ensuring flawless operation with all international character sets including
accented, Arabic, Cyrillic, and Asian scripts. Messages not containing the
keyword are not processed as participation attempts and do not trigger any
entry creation logic.


4. TWO-LAYER INTELLIGENT SPAM MODERATION SYSTEM
──────────────────────────────────────────────────

This is one of [XTR] Forum Reward System's most powerful innovations. During
giveaway periods, members may flood targeted categories with low-quality
content solely to meet participation thresholds. This addon eliminates that
problem at the root with two independently controllable moderation layers:

● Thread Moderation (Moderate Applicable Nodes):
When enabled, any new thread created in the "Applicable Categories" while
the giveaway is active is automatically sent to the moderation queue BEFORE
it is published. Technically, the system hooks into XenForo's entity_pre_save
event and sets the thread's discussion_state to 'moderated' before the record
is committed to the database. Users with moderator-level permissions
(approveUnapprove) are exempt and their threads publish immediately.

● Reply / Post Moderation (Moderate Applicable Posts):
When enabled, not just new threads but every new reply posted in those
categories is also automatically held in the moderation queue. It uses the
same event-driven architecture, setting the post's message_state to
'moderated' before saving. Moderators are again exempt.

Both layers operate independently and can each be enabled or disabled
separately based on your specific campaign needs. The critical point:
content held in the moderation queue and not approved by a moderator
does NOT contribute to the user's participation condition counters.
Spam content literally cannot help users meet giveaway requirements.


5. CRYPTOGRAPHICALLY SECURE RANDOM SELECTION ENGINE
──────────────────────────────────────────────────────

Many giveaway addons rely on PHP's standard array_rand() or shuffle()
functions. These are NOT cryptographically secure and can theoretically
produce predictable or biased results.

[XTR] Forum Reward System performs winner selection through a rigorous
three-step process:

Step 1 — Live Re-Verification:

Immediately before the draw, the system re-checks the eligibility of
EVERY registered participant. Users who qualified at entry time but have
since fallen below the required thresholds are automatically removed from
the draw pool. This ensures only truly deserving members participate in
the final draw.

Step 2 — Fisher-Yates Shuffle + random_int():
The eligible participant list is shuffled using the Fisher-Yates algorithm
powered by PHP 7+'s cryptographically secure random_int() function. This
produces a statistically unbiased shuffle with zero predictability — the
gold standard for fair randomization in PHP applications.

Step 3 — SHA-256 Draw Hash Generation:
For each draw, a unique SHA-256 hash is generated from: the giveaway ID,
exact draw timestamp, the complete eligible participant ID list, and the
selected winner IDs. This hash code is appended to the winner announcement
message and allows any member to independently verify the integrity of the
draw result.


6. FULLY AUTOMATED CRON-BASED GIVEAWAY PROCESSING
──────────────────────────────────────────────────────

You never need to manually finalize a giveaway. The addon includes a scheduled
task integrated with XenForo's native cron infrastructure. This task
automatically detects all active giveaways whose end date has passed, then
processes them in sequence. When the cron runs, the following happens:

→ All participant conditions are re-verified in real time
→ Winners are selected using Fisher-Yates + random_int()
→ SHA-256 Draw Hash is generated and stored in the database
→ Giveaway status is updated to "completed"
→ An automated reply is posted to the giveaway thread containing
@mentions of all winners and the draw verification hash code
→ XenForo native alerts are sent to all winners
→ If "Lock Thread" is enabled, the thread is automatically closed
→ If no eligible participants exist, a "no eligible winners" notice
is posted automatically


7. COMPREHENSIVE NATIVE ALERT SYSTEM
────────────────────────────────────────

The system is fully integrated with XenForo's native alert infrastructure
and covers three key notification scenarios:

Successful Entry Alert: When a user successfully enters the giveaway,
they receive a "You have successfully joined the giveaway" notification.

Detailed Failure Alert: When a user is ineligible, they receive a precise
explanation of which condition they failed and by how much. For example:
"You need at least 5 messages to participate. You have 2 messages.
Please post 3 more messages." These messages are dynamically generated
for each individual condition type.

Winner Alert: When a user wins, they receive a personalized
"Congratulations! You won the giveaway" notification. All alerts are
sent in the name of the thread creator, providing a natural, personal
forum communication experience.


8. INTERACTIVE PARTICIPATION PANEL WITH REAL-TIME PROGRESS BAR
──────────────────────────────────────────────────────────────────

Members viewing the giveaway thread see a comprehensive participation
information panel at the top of the thread. This panel displays:

✓ Giveaway title and description
✓ All active participation conditions, each with its own icon
(message icon, thread icon, reaction icon, user group icon, calendar icon)
✓ Live countdown timer showing days, hours, minutes, and seconds remaining
✓ Dynamic Progress Bar showing how close the user is to meeting conditions
✓ Participation keyword reminder if a keyword is required
✓ List of the most recent participants
✓ Entry confirmation block once the user has successfully joined
✓ Winner announcement block once results are published


9. WINNER VISUAL CELEBRATION (Confetti Animation)
─────────────────────────────────────────────────────

When a winning user views the giveaway thread, if the "Enable Confetti
Effect" option is active in the admin panel, a vibrant confetti rain animation
pours from all corners of the screen. This small but powerful experience makes
the moment of winning feel genuinely special, memorable, and shareable.


10. ACTIVE GIVEAWAYS WIDGET
───────────────────────────────

A fully configurable "Active Giveaways" widget can be placed in any widget
position supported by XenForo. The widget provides:

✓ A live list of all currently active giveaways
✓ Dynamic countdown timer for each giveaway (based on end date)
✓ Current participant count for each giveaway
✓ Direct link to each giveaway thread

Widget settings configurable from the admin panel:
· Maximum number of giveaways to display (Result Limit)
· Countdown timer visibility (On/Off)
· Participant count visibility (On/Off)


11. AUTOMATIC BIDIRECTIONAL SYNC (XenForo Core Services)
────────────────────────────────────────────────────────────

Admin panel changes are automatically reflected in the public forum thread.
This bidirectional sync uses XenForo's own Core services:

→ On new giveaway creation: XF:Thread\Creator service generates the
forum thread and first post automatically.

→ On giveaway edit: XF:Thread\Editor updates the thread title, and
XF post\Editor updates the first post content — both instantly and safely.

Because these operations go through XenForo's native services, search
indexes remain intact, forum statistics continue to operate correctly,
and edit history is properly recorded.


12. REROLL WINNERS FEATURE
──────────────────────────────

If a selected winner is found to have violated the rules or cannot accept
the prize, administrators can use the "Reroll Winners" function in the Admin
CP with a single click. This clears the current winners, re-runs the full
cryptographic selection process, and generates a new Draw Hash. A complete
audit trail is maintained.


13. AUTOMATIC THREAD LOCKING ON COMPLETION
──────────────────────────────────────────────

When "Lock Thread Upon Giveaway Completion" is enabled, the thread's
discussion_open value is set to false the moment the draw completes. Members
can no longer post new replies to the closed thread. This prevents post-giveaway
disputes and noise, keeping the thread as a clean, archived record.


14. IP-BASED MULTI-ACCOUNT PROTECTION
─────────────────────────────────────────

Every participation attempt records the user's IP address in binary format
in the database. The system queries whether a different user account has
already participated in the giveaway from the same IP address. If a second
participation attempt is detected from the same IP, it is rejected with
a "Multiple account participation is not allowed" error message. Localhost
addresses and administrator accounts are exempt from this check.


15. VERIFIABLE SHA-256 DRAW HASH (Transparency Proof)
─────────────────────────────────────────────────────────

The SHA-256 Draw Hash generated for each draw is published publicly in
the winner announcement reply. The hash is derived from:
· The giveaway ID
· The exact draw timestamp (Unix)
· The complete list of eligible participant IDs
· The selected winner IDs

Any member can independently verify this hash to confirm the draw was
not manipulated. This mechanism provides a level of transparency that
is unprecedented in XenForo giveaway solutions and dramatically increases
community trust in your administration.
Back
Top