Lisans anahtarı kopyalanır. Cüzdan kopyalanmaz.
Yazılımını satarken müşteriye verdiğin şey ne? Bir dize. XXXX-YYYY-ZZZZ. Bir forumda paylaşıldığı anda değeri sıfır. Onu korumak için bir doğrulama sunucusu kurarsın; o sunucu düşerse müşterinin ürünü de düşer. Müşteri lisansını satmak isterse yapamaz — çünkü lisans onun değil, senin veritabanındaki bir satır.
Bu paneli, o satırı kaldırıp yerine sahiplik koymak için yazdım.
Fikir tek cümle
Lisans bir ERC-721 token. Alıcının kendi cüzdanına basılır, cüzdanında durur, istediğine devreder, ve herhangi bir yazılım zincire tek bir HTTP isteğiyle sorar: bu cüzdanın geçerli lisansı var mı?
Senin sunucun cevabın kaynağı değil. Zincir öyle. Panel kapansa bile lisans yaşamaya devam eder.

Kritik detay: PHP hiçbir private key tutmaz
Çoğu “kripto entegrasyonu” burada patlar — sunucuya bir cüzdan anahtarı koyarlar, sunucu düşünce hazine de düşer.
Burada zincire yazan her şey tarayıcıda, MetaMask ile olur: mint, transfer, voucher imzası. Sunucu sadece iki şey yapar — imza doğrular (SIWE) ve zinciri JSON-RPC ile okur. Sızacak anahtar yok, çünkü anahtar hiç orada değil.
Nasıl çalışıyor
- İmzala. Admin panelde ürüne bir lisans voucher'ı üretirsin — EIP-712 ile imzalanır. Bu adımda zincire hiçbir şey yazılmaz, gas ödemezsin.
- Müşteri bastırır. Alıcı
redeem()çağırır, kendi gas'ıyla token kendi cüzdanına düşer. Lazy-mint: maliyet sende değil. - Yazılımın sorar. Ürünün
/api/access'e bir imza gönderir, “geçerli” ya da “değil” cevabını alır.
Şifre yok. Lisans e-postası yok. Kayıp anahtar destek talebi yok.

5 dakikada ayağa kaldır
git clone https://github.com/unkownpr/cripto-lisans.git
cd cripto-lisans
php -S localhost:8080 -t publicHepsi bu. vendor/ repoda gömülü geliyor, composer'a gerek yok — paylaşımlı hosting'de de aynı şekilde çalışır. Tarayıcıda localhost:8080'i aç, kurulum sihirbazı karşılar: data/setup_token.txt'deki kodu gir, MetaMask'ı bağla, bitir. .env dosyasını elle yazmıyorsun.
Kontratın yoksa panelden tek tıkla deploy edebilirsin. Test için Sepolia + faucet yeterli, gerçek para harcamana gerek yok.

.env elle yazmadan, tarayıcıdanDoğrulama tek satır
curl "https://panel.example.com/api/verify?token_id=123"
# → {"valid":true,"token_id":"123","owner":"0x…","expiry":0,"perpetual":true}Ürün yazılımından cüzdan bazlı erişim kontrolü:
GET /api/access?product_id=1 → { nonce, message }
POST /api/access { product_id, message, signature }
→ { valid, address, token_id }Kendi entegrasyonunu yazmak zorunda değilsin — hazır istemciler panelden inilir: license.php, license.py, license.go, license.cs.
Kutudan çıkanlar
- Cüzdan girişi (SIWE) — Sign-In With Ethereum, parola tablosu yok.
- Devredilebilir lisans —
transferFromile başka cüzdana geçer. Müşteri lisansını gerçekten sahiplenir. - Süreli veya süresiz — expiry zincirde, revoke da öyle.
- Mağaza + admin paneli — ürün yönetimi, ücretsiz/kripto satış, SMTP e-posta.
- Tek tık kontrat deploy — Solidity bilmene gerek yok.

Güvenlik tarafı ihmal edilmedi
“Hobi projesi” etiketini hak etmesin diye sunucu tarafı sertleştirildi: CSRF koruması tüm state değiştiren uçlarda, HttpOnly + SameSite=Lax + Secure session cookie'leri, güvenlik header'ları, public uçlarda rate-limit, parametreli SQL, kapalı SVG upload (stored-XSS), 0600 izinli .env, default DEBUG=0.
Bir de klasik tuzak kapatıldı: kurulum, sunucuda üretilen tek kullanımlık bir setup_token ister. Yani “siteyi ilk ziyaret eden admin olur” yarışı yok.
Dürüst olalım: neler yok
Bu deneysel bir iş, ve sana ne olmadığını söylemezsem üç gün sonra kızarsın:
- SIWE tam EIP-4361 parse etmiyor — nonce, adres ve imza doğruluyor, o kadar.
- Event indexer yok. “Lisanslarım” ekranı voucher tablosunu tarayıp
ownerOfile eşleştiriyor; binlerce lisanstaTransferevent indexer'ı gerekir. - Fiat ödeme (Stripe) akışı stub. Kripto ve ücretsiz satış çalışıyor.
- Cihaz bağlama / anti-korsan yok. Bu sistem sahipliği kanıtlar, kopyalamayı engellemez.
Gereksinimler tarafında tek gerçek engel şu: PHP 8.3+ ve gmp eklentisi. gmp olmadan imza doğrulama çalışmaz, yani giriş çalışmaz. Paylaşımlı hosting'de sık kapalı gelir — kurulumdan önce açtır.
Ücretsiz, MIT, senin sunucunda
Abonelik yok, “pro sürüm” yok, telemetri yok. Klonla, çatalla, sat, adımı sil — MIT lisansı ne diyorsa o.
Karşılığında tek isteğim var: dene ve bana ne kırıldığını söyle. Bu fikir ancak başka birinin gerçek ürününde denenirse olgunlaşır. Issue aç, PR gönder, ya da sadece “şu adımda takıldım” yaz.