| ফণা অধীনে
|
বাস্তব কোড।
|
প্রকৃত নিরাপত্তা।
আপনি যখন একটি ওয়ালেট তৈরি করেন, একটি পুনরুদ্ধার করেন এবং তহবিল স্থানান্তর করেন — আপনার আইফোনে চলা ওপেন-সোর্স কোডের মাধ্যমে ধাপে ধাপে ট্রেস করা হয় তখন আপনার ডিভাইসে ঠিক এটিই ঘটে।
1 / 5
| 128 বিট সত্যিকারের এলোমেলোতা
| সিস্টেম CSPRNG আপনার ডিভাইসে কাঁচা এনট্রপি তৈরি করে — আপনার পুরো ওয়ালেটের একক উৎস।
|
// CSPRNG সিস্টেম থেকে 128 বিট এনট্রপি
|
var এনট্রপি = ডেটা (গণনা: 16)
|
SecRandomCopyBytes(kSecRandomDefault, 16, &entropy)
|
// চেকসাম = SHA-256 (এনট্রপি) এর প্রথম বিট
|
let checksum = SHA256.hash(ডেটা: এনট্রপি)।প্রিফিক্স(1)
|
চলুন বিটস = এনট্রপি + চেকসাম
|
// BIP-39 শব্দ তালিকায় প্রতিটি 11-বিট গ্রুপ ম্যাপ করুন
|
স্মরনিক = bits.chunks (of: 11)
|.map { wordlist[$0] } // ১২টি শব্দ
|
// একটি 512-বিট বীজে প্রসারিত করুন (PBKDF2-HMAC-SHA512)
|
let seed = PBKDF2.sha512(mnemonic.joined(" "),
|
লবণ: "স্মরণীয়", রাউন্ডস: 2048)
//Secure Enclave-এ সীল - এটি কখনই ছেড়ে যায় না
|
Keychain.store চেষ্টা করুন(বীজ, অ্যাক্সেস:.thisDeviceOnly,
|
বায়োমেট্রি:.faceID)
1 / 4
| আপনি আপনার বাক্যাংশ লিখুন
| এটি স্থানীয়ভাবে প্রবেশ করা হয় এবং কোথাও প্রেরণ করা হয় না।
|
// আপনি যে বাক্যাংশটি টাইপ করেন তা পড়ুন — কখনও প্রেরণ করা হয় না
|
let words = phrase.lowercased().split(" ")
|
// BIP-39 তালিকায় প্রতিটি শব্দ থাকা আবশ্যক
|
guard words.allSatisfy(wordlist.contains)
|
অন্যথা { WalletError.unknownWord নিক্ষেপ করুন }
|
// পুনরায় গণনা করুন এবং চেকসাম যাচাই করুন
|
let (এনট্রপি, যোগফল) = words.toEntropy()
|
গার্ড SHA256.hash(ডেটা: এনট্রপি) যাচাই করে(সমষ্টি)
|
অন্যথা { WalletError.badChecksum নিক্ষেপ করুন }
|
// প্রজন্মের মতো একই ডেরিভেশন — সম্পূর্ণ অফলাইন
|
let seed = PBKDF2.sha512(words.joined(" "),
|
লবণ: "স্মরণীয়", রাউন্ডস: 2048)
|
Keychain.store চেষ্টা করুন (বীজ, অ্যাক্সেস:.thisDeviceOnly)
1 / 3
আপনার নিজস্ব কয়েন নির্বাচন করা হয়
| ইনপুটগুলি আপনার অব্যয়িত আউটপুটগুলি থেকে আসে — কোনও তৃতীয় পক্ষ জড়িত নয়৷
|
// আপনার নিজের অব্যয়িত আউটপুট থেকে ক—়েন বাছাই করুন
লেট ইনপুট = wallet.selectUTXOs(পরিমাণ + ফি)
|
// সম্পূর্ণরূপে ডিভাইসে লেনদেন তৈরি করুন
|
let tx = TxBuilder(.bitcoin)
|.add(ইনপুট)
|.send(পরিমাণ, কাছে: প্রাপক)
|.change(to: wallet.changeAddress).build()
|
// আপনি কিছু সরানোর আগে প্রতিটি বিশদ পর—যালোচনা করুন
|
বর্তমান (নিশ্চিত করুন: tx.summary)
|
// পরিমাণ · ফি · প্রাপক — এখনও কিছুই পাঠানো হয়নি
1 / 4
| সাইনিং কী প্রাপ্ত হয়
| একটি প্রতি-ইনপুট চাইল্ড কী BIP-32 পাথের মাধ্যমে প্রাপ্ত হয়।
|
// এই ইনপুটের জন্য চাইল্ড কী বের করুন (BIP-32)
|
let key = masterKey.derive("m/84'/0'/0'/0/\(i)")
|
// লেনদেনের প্রিমেজ হ্যাশ করুন (ডাবল SHA-256)
|
যাক h = SHA256(SHA256(tx. preimage(i)))
|
//Secure Enclave এর ভিতরে সাইন ইন করুন (ফেস আইডি প্রয়োজন)
|
sig = চেষ্টা করুন SecureEnclave.sign(h, কী: কী,
|
বক্ররেখা:.secp256k1)
|
// শুধুমাত্র স্বাক্ষরিত বাইট ডিভাইস ছেড়ে যায়
|
tx.attach(sig, ইনপুট: i)
network.broadcast(tx.serialized)
|Aperture-এর ওপেন-সোর্স সুইফট থেকে সরলীকৃত — আপনার ডিভাইসে আসল অ্যালগরিদম।
| সম্পূর্ণ উৎস পড়ুন| কি অনুপস্থিত লক্ষ্য করুন: কোন সার্ভার, কোন অ্যাকাউন্ট, কোন কী কখনও নেটওয়ার্ক অতিক্রম. ব্যক্তিগত কীটি আপনার ডিভাইসেরSecure Enclave-এর মধ্যে তৈরি, সঞ্চিত এবং সম্পূর্ণরূপে ব্যবহার করা হয়৷