Ethereum adresi oluşturmak, birkaç kriptografik işlem gerektiren teknik bir süreçtir. Bu yazıda Python kullanarak yerel konsolunuzda nasıl rastgele bir Ethereum cüzdanı (adres, genel anahtar ve özel anahtar) oluşturabileceğimizi bir script üzerinden inceleyeceğiz.

Bu script eth_account ve secrets kütüphanelerini kullanarak rastgele bir özel anahtar oluşturup ve bu özel anahtardan bir Ethereum hesabı türetir. Hesap bilgilerini aynı dizinde bir ethereum_wallet.txt dosyasına kaydeder.

Koda direkt ve detaylı bir şekilde ulaşmak isteyenler kurulum için Github ‘a gidebilirler.

Öncelikle bu kod için Python 3.x versiyonuna ve eth_account kütüphanesine ihtiyacımız var.

1. Özel Anahtar (Private Key) Oluşturma

Özel anahtar, rastgele oluşturulan 256 bitlik (32 bayt) bir sayıdır ve genellikle onaltılık biçimde (64 karakter) temsil edilir. Bu anahtar, işlemleri imzalamanıza ve fonlarınıza erişmenize olanak tanır.

  • Kriptografik olarak güvenli bir rastgele sayı üreteci kullanarak 256 bitlik bir sayı oluşturun.
import secrets
from eth_account import Account

# Rastgele bir özel anahtar oluşturma
private_key = secrets.token_hex(32)
private_key_hex = "0x" + private_key
print(f'Private Key: {private_key_hex}')

secrets kütüphanesi, kriptografik olarak güvenli rastgele sayılar üretmek için kullanılır. Bu, özellikle özel anahtar oluşturma gibi kritik işlemler için önemlidir. Rastgele sayılar üretirken güvenlik açıklarını en aza indirgemek amacıyla secrets kütüphanesini kullanırız. Bu kütüphane, tahmin edilemeyen ve güvenli anahtarlar oluşturmak için tasarlanmıştır.

private_key_hex = "0x" + private_key 

Burada eklenen “0x” öneki onaltılık (hexadecimal) sayı sisteminde bir sayı dizisini temsil edildiğini belirtir.

2. Genel Anahtar (Public Key) ve Ethereum Adresi Oluşturma

Genel anahtar ve Ethereum adresi, özel anahtardan türetilir. Genel anahtar, işlemleri doğrulamak için kullanılır.

  • Özel anahtardan bir genel anahtar oluşturun ve genel anahtarı hash’leyerek Ethereum adresini oluşturun.
from eth_account import Account

# Özel anahtardan bir hesap oluşturma
account = Account.from_key(private_key_hex)

# Genel anahtarı ve ETH adresini alma
public_key = account._key_obj.public_key
compressed_public_key = "0x" + public_key.to_compressed_bytes().hex()
print(f'Public Key: {compressed_public_key}')
print(f'Ethereum Address: {account.address}')

3. Bilgileri Bir Dosyaya Kaydetme (İsteğe Bağlı)

Oluşturulan özel anahtarı, genel anahtarı ve Ethereum adresini bir .txt dosyasına kaydedebilirsiniz. Not: Özel anahtarı dijital olarak saklamak tehlikelidir.

Adımlar:

  • Bilgileri belirtilen formatta bir .txt dosyasına yazın.
# Bilgileri belirtilen formatta bir .txt dosyasına yazma (İsteğe bağlı)
with open("ethereum_wallet.txt", "w") as file:
    file.write(f"Address: {account.address}\n")
    file.write(f"Public: {compressed_public_key}\n")
    file.write(f"Private: {private_key_hex}\n")

print("Ethereum cüzdan bilgileri ethereum_wallet.txt dosyasına kaydedildi")

Notlar:

  • Özel Anahtar yani Private Key’i güvende tutun ve asla paylaşmayın. Bu anahtar kaybolduğunda veya bir başkası tarafından ele geçirildiğinde fonlarınızı kaybedebilirsiniz.

  • Özel anahtarın 256 bitten oluşması 2^256 farklı kombinasyon anlamına gelir. Bu kadar büyük bir sayıyı kırmak pratikte imkansızdır. Günümüzdeki en güçlü süper bilgisayarlarla bile, tüm olası kombinasyonları denemek evrenin ömründen daha uzun sürer.

  • Bu örnekte, eth_account kütüphanesini kullanarak Ethereum adresi oluşturmayı ele aldık. Ancak, kullanıcılar temel kriptografik işlemleri kullanarak da bu süreci gerçekleştirebilirler. Örneğin, ecdsa ve sha3 kütüphaneleriyle genel anahtar ve adres oluşturma işlemlerini de eth_account ‘a ihtiyaç duymadan manuel olarak yapabilirsiniz.

  • Github Repo

    *Bir sonraki yazımda Mnemonic yani Seed Kelimelerin sürece nereden dahil olduğunu ele alacağız.

    *Bu bir deneme yazısıdır, hatalar, öneriler ve sorularınız için x.com/mberketh

Mirror文章信息

Mirror原文:查看原文

作者地址:0x6FF1C7e35a72C918Be5F6be52DC1825dAE1861Df

内容类型:application/json

应用名称:MirrorXYZ

内容摘要:QI1hPx2Bwabfl8ded6lriA8pAn_NBsaPpkBt0Py27nY

原始内容摘要:Kbz7YorGy8w9EhDZchm3D5NMwpUqq96-GdueQnB6MQA

区块高度:1436913

发布时间:2024-06-02 14:33:18