قضیه اینه که من نرمافزار bitcoin-core رو دانلود کردم و با استفاده از اون، تمام بلاکچین بیتکوین رو گرفتم روی سیستمم (تقریبا ۲۲۰گیگابایت)
یه اسکریپت ساده نوشتم که این بلوکها رو از height=0 تا آخرین بلوک یکی یکی بگیره و بریزه توی یه دیتابیس mysql. البته فقط hash و height رو.
الآن خواستم hex اون بلوکها رو هم وارد دیتابیس کنم، ولی بعد از حدود ۳۰۰۰۰ تا یه ارور گرفتم که میگه «این چیزی که میخوای وارد این ستون از نوع text کنی، سایزش خیلی بزرگه» (تا جایی که میدونم text بزرگترین فورمت برای دیتابیسه) وقتی نگاه کردم دیدم بعضی از hexها (بعضی بلوکها) خیلی بزرگ هستن در حالی که اکثر بلوکها سایزشون مثل همه.
با توجه به داکیومنت باید دقیقا 80بایت باشه:
Version (4 bytes)
Hash of the previous block, thus making a chain of block (32 bytes)
Merkle root, the tree of transactions' reference (32 bytes)
Timestamp, number of seconds since 1970-01-01 00:00 (4 bytes)
Bits, a representation of the networks current difficulty (4 bytes)
Nonce, incremented when mining (4 bytes)
به عبارتی، اکثر بلوکها ۴۳۰کاراکتر طول دارن، مثل این:
ولی یه تعداد کمی از بلوکها سایزشون خیلی بزرگتره. یکی رو شمردم (با کامند wc) ۳۹۵۷۰ کارکتر بود. (دقیقا ۹۲ برابر بلوکهای معمولی)
از بین دوستان کسی هست که اطلاعات تخصصی درمورد بلاکچین داشته باشه و بتونه راهنماییم کنه؟
فقط میخوام بدونم چرا بعضی بلوکها اینقدر بزرگتر هستن ولی اکثرشون اندازهی هم.
پ.ن:
ربطی به تراکنشها نداره. این دوتا بلوکی که مقایسه کردم، یکیشون ۱ تراکنش داشت و یکی ۲ تراکنش.
خوب من بلاک بدون تراکنش رو میخوام.
نمیدونم شاید درست متوجه نشدم، ولی مگه کسی که ماین میکنه، یه استرینگ با سایز ثابت نمیفرسته به سرورها برای تایید؟ (سایز ثابتی که توی داکیومنت، ۸۰ بایت گفته شده) مگه اصل قضیه یه هش نیست؟ هش باید سایزش ثابت باشه.
کسی که ماین میکنه، یه اسرینگ رندم (+ یه سری دیتا مربوط به height و هش بلوک قبلی و…) با سایز مشخص میفرسته به nodeها. و نودها خودشون تراکنشها رو اضافه میکنن؟
یا این:
کسی که ماین میکنه، همهی تراکنشها رو هم میفرسته به node؟
اگه دومی درست باشه، باید بگم که اصلا سیستم کار دستگاههایی مثل ant-miner رو درک نمیکنم.
با توجه به اینکه این دستگاهها یه ic اختصاصی براشون ساخته شده که کارش فقط تولید تصادفی هشهای sha256 هست و کار دیگهای نمیتونه انجام بده، چطوری از تراکنشها خبردار میشه و اضافه میکنه؟
(یا شاید ant-miner یه cpu و سیستم عامل هم روش هست که در کنار این ic کار میکنه؟)
سورسهایی که برای نرمافزار ماینینگ دیدم، همشون خیلی ساده بودن. فقط یه api میزدن به یه node و یه سری دیتا (مثل هش بلوک قبلی) رو میگرفتن و به یه sha256 رندم اضافه میکردن و میفرستادن به نود.
یا شاید اون سورسهایی که من دیدم غلط یا ناقص بودن.
اینا رو دیگه حاجی فکر کنم باید کتاب کت و کلفت بخونی
نمیدونم کجا خوندم که طرف نوشته بود C++ زبان خیلی خیلی خوب وساده ای هست فقط قبل کار کردن مجبورت میکنه همه چی رو بدونی ، فکر کنم این حالت الان برای تو در بلاکچین و بیت کوئین پیش اومده و باید کل طرز کار سیستمش رو بدونی تا بتونی بریزی تو mysql
اونش مسالهای نیست.
نرمافزار bitcoin-core رو دانلود کردم و کل بلاکچین رو گرفتم دارم، فقط کافیه با api ازش دیتاها رو بگیرم. رسما کار راحتیه.
فقط یه چیزاییش رو درک نمیکنم. مثلا همینکه چرا بعضی بلوکها اینقدر بزرگن؟ (خوب احتمالا به خاطر اینه که تراکنشها رو هم داره بهم نشون میده)
و مسالهی مهمتر اینه که آیا ماینرها باید یه هش ۱ یا ۲مگابایتی پیدا کنن؟ خیلی نامردیه که
و سوال اصلی اینه که من الآن میخوام ماین کنم، باید یه چیزی بین ۴۰۰ تا ۲ملیون کاراکتر حدث بزنم؟ یه جورایی غیر منطقیه. منطقیش اینه که یه sha256 به اضافهی یه سری استرینگ ثابت رو بفرستم به نود (که خوشبختانه روی سیستم خودمه) و هر ۱۰دقیقه اون استرینگ ثابت عوض بشه.