Zero Profile picture
Apr 4 23 tweets 8 min read Twitter logo Read on Twitter
هر چقدر خواستم بدون مفاهیمی مثل HD wallet, mnemonic seed, extended keys و derivation path پاسخ رو ساده و همه فهم کنم نشد، پس اگر کاربر عادی، متوجه یک سری عبارات نشد، در انتها سعی کردم یه جمع بندی ساده ارائه کنم:🧵
HD wallets به ولت هایی اطلاق میشه که تمامی کلید ها و بالطبع آدرس های مشتق شده از آن ها را از روی یک منبع یا sources واحد می‌سازند.
منبع یا سورس واحد یعنی چی؟ به شکل زیر نگاه کنید
همه کلید ها از یک سرمنشأ ساخته شدن که بعداً توضیح میدم چیه، فقط خواستم بدونید سرمنشأ واحد یعنی چی.
به دلیل شکل درختی که این نوع کیف پول ها در ساخت کلید ها و آدرس ها ازون استفاده میکنن به اونها ولت های hierarchical یا سلسله مراتبی نیز گفته میشود (Bip32)🧵
استفاده از این ولت ها به دلایل زیر محبوب شده:
اول: در حالت عادی میتوانید برای هر بار دریافت بیتکوین یک کلید خصوصی و یک کلید عمومی )زوج کلید) ایجاد نمایید، اما اشکال آن این است که میبایست چندین بک آپ از کلید های خود داشته باشید و این مدیریت آن ها را سخت می‌کند🧵
اما HD wallet ها فقط با یک seed می‌توانند ۴۲۹۴۹۶۷۲۹۶ زوج کلید را به تنهایی تولید کنند
دوم: سیستم سلسله مراتبی این نوع ولت ها، این امکان را فراهم می‌آورد تا هر زیر کلید یا کلید فرزند قادر باشد مجددا کلید مجزایی (چه زوج کلید، چه کلید فرد) را برای خود تولید نماید:
سوم: قابلیت، قابلیت تولید کلید های عمومی، بدون داشتن کلید خصوصی است!
این خصوصیت بسیار جالب به امنیت کلید خصوصی نیز میافزاید، چون برای تولید کلید های رده پایین تر نیازی به دانستن کلید بالاترین رده نداریم
مفاهیم بالا رو در مورد HD wallet گوشه ذهنت بسپارید تا بعد از آشنایی با مفهومی به نام seed و mnemonic sentence؛ دوباره بهشون برگردیم.
پ.ن: چون شامل عکس هستند قسمت قسمت ارسال میکنم که یهو همشون نپره!
Mnemonic sentence یا mnemonic code یا seed phrase یا seed words به رشته کلماتی اطلاق میشه که حفظ و نگهداری و به خاطر سپاری یک رشته کد طولانی بدون مفهوم از نظر انسان رو ساده تر کرده.
بیاید کمی ساده ترش کنیم:
شما کلمه entire رو ساده تر به خاطر میسپارید و یادداشت میکنید 🧵
یا یک عبارت باینری مثل: ۰۱۰۰۱۰۱۱۰۰ ؟
حالا اگر این عبارت خیلی طولانی تر بشه چی؟ پس همون mnemonic sentence بهتره🙂
برای ایجاد mnemonic sentence در ابتدا یک رشته باینری (صفر و یک) با طول ۱۲۸ تا ۲۵۶ بیت، تولید میکنیم.
)نرم افزار ولت خودش این کار رو برامون می‌کنه) 🧵
اسم این رشته باینری رو میزاریم entropy.
حالا میخایم این entropy رو به کلمات تبدیل کنیم، اگر این entropy رو به وسیله SHA256 هش کنیم، یک finger print یکتا از entropy بهمون برمیگردونه که میتونیم یک بیت از اون رو به عنوان checksum هر قطعه ۳۲ بیتی از entropy قرار بدیم🧵
توضیح وقتی داده های باینری، ارسال یا ذخیره میشن، برای صحت سنجی درشتی اون داده ها، یک مدل رو به عنوان checksum قرار میدیم، مثلاً بیت پریتی یا جمع صفر و یک ها یا فازی و ... که در حوصله این مقال نیست، اما به طور خلاصه، چک سام صحت داده ها رو برای جلوگیری از بروز خطا بررسی می‌کنه.🧵
حالا رشته باینری حاصل رو به گروه های ۱۱ بیتی تقسیم میکنیم. این یازده عدد باینری میتونن اعداد ۰تا ۲۰۴۷ رو نمایش بدن،که متناظر هر کدومشون یک لغت وجود داره (Bip39), به تصویر زیر توجه کنید:🧵
حالا که mnemonic sentence رو ساختیم میخایم اون رو تبدیل به seed کنیم،
رشته کلمات رو به همراه کلمه عبور( کلمه عبور در اکثر ولت ها برای تولید و آمیخته شدن با seed اجباری نیست) به یک تابع DBKF2 میدیم، تا اونقدر اون رو هش کنه تا به یه خروجی ۵۱۲ بیتی یا ۶۴ بایتی بهمون بده 🧵
تبریک میگم seed خودمون رو ساختیم، خلاصه این قسمت هم به این شکل شد👇
بریم برای تعریف derivation paths
🧵
حالا که seed ساخته شد میتونیم به وسیله همون HD wallet که در قسمت اول توضیح دادیم، یک extended private key ۶۴ بیتی بسازیم، که ۳۲ بیت اول private key و ۳۲ بیت دوم chain code هستند:🧵
حالا همینطور میشه به این تابع hash-based message authentication code یا HMAC ، خروجی قبلی رو به عنوان ورودی داد، تا سلسله مراتبی برامون کلید تولید کنه.🧵
ولت ها برای حفظ یکپارچگی از قائده خاصی برای ایجاد و دسترسی به کلید ها استفاده میکنن، (BIP44)
مثلا فرمت زیر رو ببینید:
m / purpose' / coin_type' / account' / change / index
🧵
از چپ به راست میخونیمش:
M: همون مستر هستش که از روی سید ساخته میشه.
44': استراکچر ولت مثلا بیپ ۴۴ یا۴۹ یا ۸۴.
0': اینجا نوع کوینی که میخایم ذخیره کنیم، مثلا عدد صفر نمایانگر بیتکوین یا ۲ برای دوج کوین یا ۱۲۸ برای مونرو.
همینجا استپ میکنم!
یه ولت داشتیم که با یه سید🧵
اومد کلید های سلسله مراتبی ساخت و روی هر کدوم برای دریافت یا ارسال هر نوع کوینی روی شبکه خودش، فقط با یک سید که ارتباطش هم با mnemonic sentence گفتیم، کار ما رو انجام داد.
چه کسی انجام داد؟ نرم افزار ولت.
ما چیکار کردیم؟ هیچی.
پس کافیه ولتی رو انتخاب کنیم که مولتی کوین یا 🧵
به عبارتی multichain باشه، خودش بقیه کار ها رو برای ما طبق توضیحات بالا انجام میده، مگر برنامه نویس باشید و بخاید خودتون، کد ها رو دستکاری کنید.
تمام مطالب بالا از سایت:
learnmeabitcoin.com
که توسط @in3rsha
نوشته شده، جمع آوری شدن، تکمیل ترش هم همونجا هست.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Zero

Zero Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(