نحوه استخراج داده های بیت کوین روی زنجیره ای

ساخت وبلاگ

به دست آوردن داده های زنجیره ای در زمان واقعی می تواند دشوار باشد ، همانطور که در تعداد بی پایان اکتشاف کنندگان blockchain و ارائه دهندگان داده ها مشهود است. در نتیجه ، پاسخ دادن به سؤالات ساده ، به عنوان مثال: "چه تعداد کیف پول بیت کوین بیش از 100 BTC دارند؟"چالش برانگیز استخدماتی مانند Glassnode این معیارهای زنجیره ای را ارائه می دهند - اما بدون هزینه شیب دار. بنابراین اگر می خواهید این معیارها را برای خودتان یا تجارت خود محاسبه کنید ، چه می کنید؟در این پست وبلاگ ما مسیری را که می توانید برای محاسبه داده های بیت کوین از طریق راه حل یک متریک به عنوان مثال تعریف خواهیم کرد ، تعریف خواهیم کرد: تعداد کیف پول های بیت کوین با بیش از ‘X 'BTC چقدر است؟

قبل از اینکه نحوه استخراج داده های زنجیره ای را بررسی کنیم ، ارزش آن را دارد که لحظه ای را درک کنیم که چگونه معاملات در blockchain عملکرد دارند. بیت کوین به گونه ای طراحی شده است که بر خلاف حساب کاربری متداول/تعادل دهنده ، به عنوان یک رهبر معامله ای کار کند. بیت کوین به معنای آشنا هیچ حساب ندارد. در عوض ، لیستی از معاملات را که هنوز هزینه نشده است ، معروف به UTXO (خروجی معاملات غیر منتظره) ، پیگیری می کند. تعادل متعلق به هر آدرس ، مجموع مقادیر همه UTXO متعلق به آن آدرس است. این مفهوم با یک مثال بهتر نشان داده شده است.

عملکرد معاملات blockchain چگونه

به خاطر سادگی ، می توانیم یک نمونه اساسی از یک blockchain با تنها دو شرکت کننده ، آلیس و باب را تصور کنیم. اکنون تصور کنید که در ابتدا ، فقط آلیس وجود دارد. او به عنوان اولین و تنها کاربر ، بلوک Genesis (اول) را معدن می کند. بلوک پیدایش فقط از یک معامله تشکیل شده است که به آن معامله Coinbase گفته می شود. این معامله Coinbase از دو بخش ، ورودی و خروجی تشکیل شده است. ورودی خالی است ، اما خروجی پاداش معدن است که ما به عنوان 50 BTC خواهیم گرفت.

از آنجا که آلیس معدنچی است ، او می تواند معامله Coinbase را بسازد. او خروجی را با مقدار 50 BTC به خودش می نویسد ، بنابراین فقط کلید خصوصی وی می تواند آن را باز کند. لیست UTXO در این مرحله فقط شامل معامله Coinbase Block Block است و فقط توسط آلیس قابل هزینه است.

در حالی که در کنار هم قرار می گیرد ، آلیس 9 بلوک دیگر را معدن می کند و 500 BTC را جمع می کند. سرانجام که خواستار کاربران بیشتری در blockchain خود بود ، در صورت پیوستن به دوست خود باب 75 BTC قول می دهد. باب به شبکه می پیوندد و از آنجا که آلیس تنها کاربر فعلی است ، داده های blockchain را از وی بارگیری می کند. همانطور که قول داده شد ، آلیس برای پیوستن به باب 75 BTC پرداخت می کند.

اکنون ، در این مرحله ، آلیس 500 BTC را در قالب 10 UTXO با مقدار 50 BTC هرکدام جمع کرده است. برای اینکه آلیس به باب بپردازد ، باب ابتدا باید کلید عمومی خود را که برای ارسال پرداخت به آن استفاده می کند ، آلیس را ارائه دهد. با کلید عمومی باب ، او می تواند معامله ای را انجام دهد که به باب 75 BTC خود بپردازد. برای انجام این کار ، او به لیست UTXO خود نگاه می کند و 2 UTXO را با مقدار 50 BTC هرکدام دریافت می کند ، که ورودی معامله را تشکیل می دهد. و سپس با داشتن "قفل" ورودی ، او دو خروجی را ایجاد می کند ، یکی برای پرداخت کلید عمومی باب با ارزش 75 BTC ، و همچنین تغییر با ارزش 25 BTC ، که او را به آدرس خودش بازگرداند.

پس از این معامله ، دو UTXO هزینه شده است. از این دو Utxo صرف شده ، دو UTXO جدید تولید می شود: یکی برای پرداخت باب و دیگری برای آلیس برای ارسال تغییر به خودش. اکنون لیست UTXO آلیس شامل 8 UTXO با مقدار 50 BTC و 1 UTXO با مقدار 25 BTC است ، برای کل 425 BTC. در همین حال ، باب برای کل 75 BTC یک UTXO دارد.

نحوه محاسبه مانده های کیف پول

اکنون که ما درک می کنیم که چگونه معاملات بیت کوین کار می کند ، می دانیم که برای محاسبه تعادل همه کیف پول ها ، به جدیدترین لیست UTXO نیاز داریم. خوشبختانه ، گره بیت کوین این موضوع را پیگیری می کند. به عنوان اولین قدم ، ما باید گره بیت کوین را روی دستگاه خود اجرا کنیم ، که در حال حاضر در حال ایستادن است~452 گیگابایتلیست UTXO در~/. bitcoin/chainstate/ دایرکتوری به عنوان دسته ای از پرونده های LevelDB. ما به راهی برای دسترسی به LevelDB نیز نیاز خواهیم داشت - Plyvel یک بسته عالی پایتون برای این کار است.

در مرحله بعد ، قبل از تلاش برای خواندن پرونده ها ، ایده خوبی است که گره بیت کوین (توقف Bitoinc-Cli) را متوقف کرده و پرونده ChainState را در جایی کپی کنید تا از فاسد شدن آن جلوگیری کنید. ما می توانیم با اجرا به پایگاه داده ChainState دسترسی پیدا کنیم:

یک ورودی واحد چیزی شبیه به این خواهد بود:

برای جلوگیری از پرچم گذاری توسط نرم افزار آنتی ویروس ، هر ورودی در LevelDB مبهم است. جزئیات از جمله نحوه ورود به سیستم های ورودی را می توان در کد منبع یافت. علاوه بر این ، شبکه توسعه دهنده بیت کوین مقاله ای عالی دارد که جزئیات بیشتری را ارائه می دهد. یافتن لیست UTXO موضوعی است که از طریق هر UTXO ، deobfacting و ذخیره در یک DataFrame یا یک فایل CSV برای تجزیه و تحلیل بیشتر ، تکرار می شود. یک ورودی منفرد ممکن است به نظر برسد:

سرانجام ، ما با گروه بندی توسط آدرس و جمع بندی تمام مقادیر ، تعادل همه کیف پول ها با BTC غیر صفر را پیدا می کنیم!

می توانید از پلتفرم Shakudo برای خودکارسازی این پروژه و همچنین برای سایر راه حل های blockchain و web3 استفاده کنید. Shakudo ناوگان ابزارهای منبع باز و چارچوب های داده مدرن را در یک پلت فرم پروژه داده بصری و پایان به پایان می گذارد. با رزرو نسخه ی نمایشی با ما ، آن را برای خودتان امتحان کنید.

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محسن زنجانچی بازدید : <-PostHit-> تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 13:40