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.

Kripto Lisans Paneli ana sayfası
Ana sayfa — sahiplik anlatımı ve “nasıl çalışır” akışı

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

  1. İ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.
  2. 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.
  3. 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.

Public ürün kataloğu
Mağaza — public ürün kataloğu, tek tıkla satın alma

5 dakikada ayağa kaldır

git clone https://github.com/unkownpr/cripto-lisans.git
cd cripto-lisans
php -S localhost:8080 -t public

Hepsi 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.

Kurulum sihirbazı
Kurulum sihirbazı — .env elle yazmadan, tarayıcıdan

Doğ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 lisanstransferFrom ile 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.
Ağ ve kontrat yönetimi
Ağ & Kontrat — RPC ayarı ve panelden kontrat deploy

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 ownerOf ile eşleştiriyor; binlerce lisansta Transfer event 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.

github.com/unkownpr/cripto-lisans →