Blockchain Tabanlı Kullanıcı Kayıt Sistemi

Python kullanarak basit bir blockchain tabanlı kullanıcı kayıt sistemi örneği:

import hashlib
import datetime

class User:
    def __init__(self, username, password):
        self.username = username
        self.password = self._hash_password(password)
        self.timestamp = datetime.datetime.now()
        self.previous_hash = None
        self.hash = self._calculate_hash()

    def _hash_password(self, password):
        return hashlib.sha256(password.encode()).hexdigest()

    def _calculate_hash(self):
        data = str(self.timestamp) + self.username + self.password
        return hashlib.sha256(data.encode()).hexdigest()

class Blockchain:
    def __init__(self):
        self.chain = []
        self.create_genesis_block()

    def create_genesis_block(self):
        genesis_user = User("admin", "admin123")
        genesis_user.previous_hash = None
        self.chain.append(genesis_user)

    def add_user(self, username, password):
        new_user = User(username, password)
        previous_user = self.get_latest_user()
        new_user.previous_hash = previous_user.hash
        self.chain.append(new_user)

    def get_latest_user(self):
        return self.chain[-1]

    def validate_user(self, username, password):
        for user in self.chain:
            if user.username == username and user.password == hashlib.sha256(password.encode()).hexdigest():
                return True
        return False

# Kullanıcı kayıt sistemi örneği

blockchain = Blockchain()

# Yeni kullanıcı eklemek
blockchain.add_user("DenemeUser", "pass123")
blockchain.add_user("DenemeUser11", "sec123")

# Kullanıcı doğrulama
username = input("Kullanıcı adınızı girin: ")
password = input("Parolanızı girin: ")

if blockchain.validate_user(username, password):
    print("Giriş başarılı.")
else:
    print("Hatalı kullanıcı adı veya parola.")

Bu örnekte, User sınıfı bir kullanıcıyı temsil eder ve kullanıcı adını, şifresini, zaman damgasını, önceki kullanıcının karma değerini ve kendi karma değerini tutar. Blockchain sınıfı ise kullanıcıları bir blok zincirinde saklar ve kullanıcılara eklemek ve doğrulamak için yöntemler sağlar. Örnekte, önceden tanımlı bir yönetici kullanıcısı (genesis kullanıcısı) oluşturulur ve ardından add_user yöntemi kullanılarak yeni kullanıcılar eklenir. validate_user yöntemi, kullanıcının doğruluğunu kontrol eder ve girişin başarılı olup olmadığına karar verir.