راز آدرس ها در تکنولوژی بلاکچین!

در روزهای نخست بیتکوین، امکان ارسال پرداخت‌ها به یک آدرس IP مثل ۱۰۴.۲۵.۲۴۸.۳۲ وجود داشت. این کار برای ایجاد راحتی در استفاده از بیتکوین بدون استفاده از آدرس‌های کلید عمومی و خصوصی انجام شد. اما بعد از آن توسعه دهندگان متوجه شدند که این وضعیت ممکن است باعث بروز حمله Man in the middle شود.

آدرس‌ ها در بلاکچین یک چیز سفت و سخت نیستند. بلکه یک شناسه برای پذیرش و ارسال تراکنش‌های بلاکچین هستند. درست مانند آدرس‌های سوییفت. خود آدرس و فرمت آن مساله اصلی نیست. مساله مهم خدمتی است که آدرس ، برای تبدیل پرداخت‌ها به یک موجودیت اطلاعاتی، ارائه می‌کند. معمولا یک کلید خصوصی برای دسترسی به موجودی وجود دارد و آدرس چیزی به جز یک شناسه امن نیست. بعد از کنار گذاشتن آدرس IP در بیتکوین، P2PKH به عنوان استاندارد جدید آدرس‌های بیتکوین شناخته شد. این آدرس چیزی شبیه به آدرس زیر است:

۱K31KZXjcochXpRhjH9g5MxFFTHPi2zEXb

یک آدرس استاندارد P2PKH، سی و چهار حرف دارد و با ۱ شروع می‌شود. P2PKH مخفف “Pay to Public Key Hash” است. یعنی شما توسط هش یک کلید عمومی، پرداخت انجام می‌دهید. برای مبتدیان، این ممکن است بسیار گیج کننده باشد. بنابراین ابتدا باید فرآیند ساخت همچین آدرسی را یاد بگیریم تا بدانیم چگونه عمل می‌کند.

هر نرم‌افزار کیف پول که استفاده می‌کنید یک آدرس P2PKH تولید می‌کند. این کار ترکیبی از چند عملیات نه چندان پیچیده‌ی رمزنگاری است.

ابتدا، کیف پول شما یک کلید خصوصی ECDSA تولید می‌کند. ECDSA یک الگوریتم رمزنگاری در هسته آدرس‌های بیتکوین است که یک الگوریتم امضای غیرمتقارن می‌باشد. یعنی شما می‌توانید یک پیام را با کلید خصوصی امضا کرده و آن را با کلید عمومی تایید کنید. با  استفاده از ECDSA و امضا کردن پیام، ‌می‌توانید به بقیه ثابت کنید که شما تنها تولید کننده پیام هستید و اصالت آن را تایید کنید. این مورد بسیار شبیه به امضای یک نامه به طور فیزیکی است.

بنابراین بعد از ایجاد کلید خصوصی، کیف پول، کلید عمومی را از روی آن بدست ‌می‌آورد. این کار با استفاده از برخی محاسبات و الگوریتم‌های تصادفی انجام می‌شود. البته جزییات آن مهم نیست. چیزی که اهمیت دارد این است که کلید عمومی تنها چیزی است که شما برای دریافت و جمع‌آوری ارز دیجیتالی به آن نیاز دارید.

ایجاد آدرس بلاکچین در بیتکوین

برای ایجاد آدرس، کیف پول شما کلید عمومی را از طریق یک سری از الگوریتم‌های رمزنگاری بدست می‌آورد. به طور شفاف این چیزی است که اتفاق می‌افتد:

نرم‌افزار هش، کلید عمومی را با SHA 256 و سپس RIPEMD-160 بدست می‌آورد. سپس آن را با ۰۰ بایت به عنوان پیشوند در ابتدای نتیجه قبل جمع می‌کند. به همین دلیل است که آدرس‌های P2PKH با ۱ شروع شده و با چهار بایت checksum در انتها ختم می‌شود. چهار بایت از checksum توسط دوبار هش گرفتن از نتیجه با SHA 256 و جدا کردن ۴ بایت اول آن بدست می‌آید. سپس کیف پول شما نتیجه را به یک رشته base58 تبدیل می‌کند. حالا یک آدرس بیتکوین بدست آمده است.

شما نیاز به دانستن جزییات رمزنگاری ندارید. مهم این است که آدرس، یک کلید عمومی با خوانایی بیشتر ارائه کرده و یک checksum را برای جلوگیری از خطای تایپی به آن اضافه می‌کند. هر وقت شما یک آدرس را در کیف پول خود وارد می‌کنید، پیشوند را چک کرده و checksum را حساب می‌کند. اگر checksum محاسبه شده با مقدار موجود در آدرس متفاوت باشد، امکان ارسال را در صورت وجود خطای تایپی نخواهید داشت.

اگر شما کلید خصوصی یک آدرس را داشته باشید، فقط شما می‌توانید یک تراکنش را برای توکنی که به این آدرس اختصاص دارد امضا کنید. در حالی که هر کسی که آدرس شما را بداند می‌تواند اعتبار امضای شما را تایید کند. این فرآیند ساده، امضای تراکنش و تایید امضا، تنها چیزی است که رمزنگاری روی تراکنش انجام می‌دهد.

اما بیتکوین آدرس‌های پیشرفته‌تری دارد: یعنی آدرس‌های P2SH. که خلاصه “Pay To Script Hash” می‌باشد. یعنی شما به هش یک آدرس پرداخت نمی‌کنید؛ بلکه به هش یک اسکریپت پرداخت می‌کنید. برای امضای یک تراکنش شما به یک امضا که با یک کلید عمومی خاصی تطابق داشته باشد، نیاز ندارید. بلکه به یک اسکریپت که با یک هش مشخص تطابق داشته باشد نیاز دارید.

هر چند برای فهم قدرت P2SH به دانش بیشتری نیاز است، فعلا بیتکوین را کنار گذاشته در ادامه روی آدرس‌ها تمرکز می‌کنیم.

آدرس‌ها در کوین‌های دیگر

بسیاری از کوین‌ها از آدرس‌دهی مشابه بیتکوین استفاده می‌کنند. برای مثال لایت‌ کوین ، دش و دوج کوین از روندهای مشابهی برای رمز‌گذاری استفاده می‌کنند: ECDSA, SHA 256, RIPEMD 160

تنها تفاوت وجود پیشوند هشِ RIPEMD-160 است. در حالی که پیشوند ۰۰ در آدرس بیتکوین باعث شروع آن با «۱» می‌شود، کوین‌های دیگر مانند دش، لایت کوین و دوج کوین از پیشوند‌های دیگری استفاده می‌کنند که باعث می‌شود با حروفی مثل «X» و «L» و «D» شروع شوند.

مادامی که این کوین‌ها از الگوریتم‌های رمزنگاری متفاوتی استفاده می‌کنند، شما می‌توانید از همان کلید عمومی و خصوصی مشابه برای ذخیره کوین در تمام ارزهای دیجیتال استفاده کنید.

ارزهای دیگر از روش‌های دیگری برای تولید آدرس استفاده می‌کنند. برای مثال مونرو بر اساس الگوریتم Cryptonote می‌باشد. این الگوریتم نوع دیگری از الگوریتم امضای رمزشده را برای تولید کلید عمومی استفاده می‌کند. ارزهای مبتنی بر کریپتونوت (Cryptonote) یک امضای حلقه گونه دارند که حریم خصوصی بیشتری را فراهم می‌کند چرا که شما نمی توانید تعیین کنید یک تراکنش با کدام کلید امضا شده است. به همین دلیل، آدرس‌های کریپتونوت باید شامل دو کلید عمومی باشند: یک کلید مشاهده و دیگری کلید پرداخت.

همانند آدرس‌های بیتکوین، کریپتونوت یک پیشوند اضافه ‌می‌کند و نتیجه را هش می‌کند. این الگوریتم از Keccak-256 بجای SHA-256 دوتایی برای تولید checksum چهاربیتی استفاده می‌کند که به آخر یک رشته اضافه می‌شود. بعد از تبدیل نتیجه به base58 شما آدرس نهایی را بدست می‌آورید که از بیتکوین طولانی تر می‌باشد. و شبیه زیر است:

۴۳ZZViHQKd42X7cajEtc6NUoxG4AvyMu3ZqpGTBP85uhEfYoPVAuGHxJcomMHEPp3NWiKJRUMnuAJ7dfBrPTcfjYMPJzz2a

این تنوع در آدرس‌ها،‌ نشان‌ می‌دهد که آدرس‌ها فقط وسیله‌ای برای پرداخت هستند که به یک کلید عمومی مشخص الحاق می‌شود. برای همین، مهم نیست که شما چه کاری با کلید عمومی انجام می‌دهید، از چه الگوریتمی برای تبدیل آن به یک آدرس استفاده می‌کنید و …

روال ساخت یک آدرس، مفاهیمی از امنیت، حریم خصوصی و قابلیت استفاده را در بر دارد. بدون استفاده از checksum، آدرس‌های بیتکوین ممکن است دچار اشتباه تایپی شوند و بدون تعبیه کلید مشاهده در آدرس، مونرو نمی‌تواند آنگونه که هست خصوصی بماند.

آدرس‌های اتریوم

مانند خیلی از چیزهای دیگر در دنیای رمزارزها، مبحث آدرس‌ها با رسیدن به اتریوم جذاب‌تر می‌شود. بسیاری از افرادی که با بیتکوین شروع کرده‌اند و سپس به سراغ اتریوم می‌روند، با دیدن قالب آدرس آن سردرگم می‌شوند که یک آدرس طولانی، و یک رشته در مبنای ۱۶ است که با ۰x شروع می‌شود. به عنوان مثال:

۰x0eb81892540747ec60f1389ec734a2c0e5f9f735

از لحاظ فنی، تولید آدرس اتریوم مشابه بیت‌کوین است، اما نه در همه موارد. برای تولید یک کلید عمومی ۶۴ بایتی، باید از یک کلید خصوصی شروع کرده و از ECDSA استفاده کنید. یعنی همان طور که بیت‌کوین عمل می‌کند. سپس آن را توسط Keccak-256 هش می‌کنید. نتیجه که یک رشته ۳۲ بایتی خواهد بود. ۱۲ بیت اول از این بایت‌ها دور انداخته می‌شود و ۲۰ بایت باقی مانده که یک آدرس ۴۰ کاراکتری است با یک پیشوند ۰x آدرس اتریوم را تشکیل می‌دهند. برخلاف بیت‌کوین یا کریپتونت، اتریوم آدرس را به base58 تبدیل نمی‌کند، بنابراین یک آدرس هگزادسیمال یا مبنای ۱۶ خواهد بود.

تفاوت دیگر اتریوم با رمزارزهای دیگر، این است که آدرس‌های اتریوم checksum ندارند. هر رشته‌ی ۴۰ کاراکتری مبنای ۱۶ می‌تواند یک آدرس اتریوم باشد. یعنی خطای تایپی در وارد کردن آدرس قابل شناسایی نخواهد بود.

در مقایسه با سایر رمزارزها، آدرس‌ها برای کاربر اتریوم، خام، خشن و خطرناک خواهد بود. این مساله برای ارزی که دومین بازار بزرگ را در اختیار دارد و به عنوان خلاقانه ترین رمزارز شناخته می‌شود، بسیار پیش پا افتاده است.

دلیل اول برای این مشکل، این است که در زمان ارائه نسخه اول اتریوم، Frontier، کسی واقعا به این موضوع اهمیت نمی‌داد. هدف توسعه دهندگان اتریوم ساخت یک قرارداد هوشمند بود، که پرداخت‌ها به راحتی به اسامی و دامنه‌ها فرستاده شود.

البته همانطور که جف کولمن اشاره کرد، استفاده نکردن اتریوم از روش مشابه بیت‌کوین دلیل مهمتری دارد. در حقیقت توسعه دهندگان گمان کردند که این کار می‌تواند بهتر انجام شود. به یاد بیاورید که یک آدرس فقط یک روش رمزنگاری برای ارائه اطلاعات است که موجودی را به یک کلید خصوصی تخصیص می‌دهد. این کار می‌تواند توسط قراردادهایی انجام شود که اطلاعات را به اسامی اختصاص می‌دهد.

ICAP یک شماره بانکی بین‌المللی کاملا معتبر است که نرم‌افزارهای بانکی می‌توانند آن را بفهمند و با آن تعامل کنند. IBAN نیز نمونه متمرکز این پروتکل بوده و شناسه بین‌المللی مشتریان در صنعت بانکداری است. این شناسه از ۲۳ کاراکتر حساس به حروف کوچک و بزرگ تشکیل شده است و شامل یک کد کشور، یک checksum و شماره بانک در کنار شماره حساب می‌باشد.

در حال فرمت ICAP حاضر اینگونه می‌باشد:

E7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS

مانند بیتکوین، این آدرس از کاراکتر‌های base58 استفاده می‌کند و شامل checksum می‌شود.

استیم، نام کاربری شما آدرس شماست!

ارز رمزنگاری‌شده استیم ( Steem ) سیستم مشابه اتریوم را استفاده کرده است. در استیم نام کاربری شما کیف پول شما است.

استیم رمزارزی مبتنی بر ایده Bitshares است. این ارز با بستر شبکه اجتماعی Steemit لینک شده است. یعنی شما می‌توانید استیم کوین را با بدست آوردن لایک و کامنت روی پست‌های خود ماین کنید! استیم مانند بیت‌کوین و اتریوم غیرمتمرکز نیست و قسمت‌های مهم آن در پلتفرم خصوصی Steemit میزبانی می‌شود و قسمت اصلی استیم می‌باشد.

هرچند، استیم به روش متمرکزتری ایده‌ی قرارداد هوشمند اتریوم را پیاده‌سازی کرده است اما کاربران در این سیستم نیز یک کلید خصوصی دریافت کرده و همانند ارزهای دیگر می‌توانند تراکنش‌ها را امضا کنند. در استیم نام‌های کاربری، آدرس‌هایی نیستند که از کلید خصوصی مشتق شده باشند. بلکه فقط نام‌هایی هستند که روی پایگاه داده استیم به کلید‌های عمومی وصل شده‌اند. در اینجا مهمترین بخش تایید اتصال بین کلید عمومی و آدرس، براساس محاسبات ریاضی نیست؛ بلکه نیاز به اعتماد به بستر استیم داریم.

شیوه آدرس دهی براساس نام کاربری در استیم جالب است چرا که قابلیت استفاده ایده‌آل را فراهم می‌کند. اما هنوز متمرکز بوده و عدم اعتماد کافی را برای بسیاری از کاربران بلاکچین به همراه دارد. یعنی سیستم هنوز از شفافیت کافی برخوردار نمی‌باشد.

یک سیستم قرارداد هوشمند مانند اتریوم، می‌تواند هر دو بخش ایده‌آل را داشته باشد؛ غیرمتمرکز بودن، اعتماد طبیعی بلاکچین و راحتی استفاده از آدرس‌های مبتنی بر نام استیم!

ارسال نظر

14 دیدگاه ها در "راز آدرس ها در تکنولوژی بلاکچین!"

avatar
  اشتراک  
جدید ترین قدیمی ترین محبوب ترین
اطلاع از
وحید
مهمان

خیلی کامل بود ممنون
از استیم مطلب بیشتر بزارید

ادمین سایت
ادمین سایت

با سلام و تشکر
بله در برنامه هامون هست که به طور کامل استیم رو پوشش بدیم

سجاد تقی زاده
مهمان

با سلام
میخواستم بدونم علت تغییر آدرس کیف پول به خاطر چیه و اگه آدرس مون تغییر کرد دیگه نمیتونیم از آدرس قبلی استفاده کنیم؟
ممنون از سایت خوبتون

ادمین سایت
ادمین سایت

سلام
کیف پول های استفاده شده در سایت ها معمولا HD wallet هستند.
شما با ساختن این کیف پول ها می توانید تعداد زیادی آدرس داشته باشید که از طریق یک کلید خصوصی ساخته شده است.
با توجه به این توضیحات اگر سایت ذکر شده ازhd wallet پشتیبانی میکند آدرس هایی که فرمودین معتبر هستند ولی توصیه می کنیم از آدرس های جدید ساخته شده استفاده کنید.

مسعود
مهمان

سلام وقت بخیر من آدرس کیف پولم رو دادم و یکبار cash کردم ولی الان آدرس کیف پولم عوض شده و من تو تمام ماینرهایی که ازم آدرس خواستن آدرس قبلی رو دادم میخواستم راهنمایییم کنید ممنون میشم

ادمین سایت
ادمین سایت

با سلام
اگر آدرس جدیدی ساختید میتونید آدرس جدیدتونو به ماینرها بدین.

علی
مهمان

سلام چطور میشه فهمید هر ادرس بیت کوین برای کدام شرکت است؟
مثلا ۳۵۴UjB7Ve8FeMrN2G85DCAZXsJ3e89j729 برای jaxx است یا btc.com

ادمین سایت
ادمین سایت

با سلام
آدرس بیت کوین توسط یک الگوریتم ساخته میشه و انحصاری نیست که بگیم فلان آدرس برای Jaxx هستش یا جای دیگه .

میلاد محمدی
مهمان

سلام ببخشید من وقتی تراکنش انجام میدم ادرس بیت کوینم عوض میشه میخواستم بپرسم بگم ببینم وقتی تو ی سایتی ادرس قبلیو دادم اگ انتقالش بدم میاد ب حسابم اون حسابم ادرس عوض شده ؟؟؟

ادمین سایت
ادمین سایت

با سلام
اینکه آدرستون عوض میشه مشکلی نیست و همه ی آدرس ها مربوط به همون کیف پول شما هستند.
به این کیف پول ها hd wallet میگن، پیشنهاد میکنم مقاله زیر رو مطالعه کنید:
کیف پول های hd

حمید
مهمان

هر کد رکوئست بلاکچین برای دریافت بیت کویین چند بار قابل استفاده است؟ یعنی میشود یک کد رو چند با استفاده کرد!؟

ادمین سایت
ادمین سایت

با سلام
کد ریکوئست بیت کوین منظورتون آدرس بیت کوینه؟

حمید
مهمان

داخل کیف پول بلاکچین دوتا کد میشه گرفت یکی برای ارسال sendبیت کویین کیف پولمون برای خرید… یکی هم برای دریافت request
سوال من اینه بعد چند بار دریافت کد request تقییز میکنه و برنامه یه کد دیگه برای دریافت بهمون میده… حالا اون کد قبلی که داده بود میشه استفاده ش کرد یا منقضی شده؟

ادمین سایت
ادمین سایت

با سلام
میشه ازش استفاده کرد، اون کدهای جدید به این دلیل هست که کیف پول HD Wallet هستش.

عضویت در کانال تلگرام میهن بلاکچین