به دوره توسعه بیت کوین خوش آمدید! نام من هامبرتو است و خوشحالم که اولین و تنها دوره آموزشی را به شما ارائه می کنم که در آن با ساخت کیف پول بیت کوین رومیزی بیت کوین را یاد خواهید گرفت!
در این دوره آموزشی، نحوه عملکرد بیت کوین از نقطه نظر فنی را خواهید آموخت. به طور دقیق تر، نحوه عملکرد کیف پول بیت کوین را با جزئیات خواهید آموخت. همچنین، نحوه عملکرد یک گره بیت کوین و نحوه اجرای آن را خواهید آموخت. خواهیم دید که چگونه با کیف پول ما و سایر گره ها تعامل می کند. همچنین خواهیم آموخت که شبکه بیت کوین چگونه کار می کند و چگونه به اجماع دست می یابد.
مفاهیم کلیدی بیت کوین که یاد خواهیم گرفت شامل تراکنش ها، آدرس ها، دانه ها، کلیدها، موجودی ها، بلاک چین، استخراج و کیف پول است.
از آنجایی که ما یک برنامه کاربردی دسکتاپ در طول دوره ایجاد خواهیم کرد، دانشجو این فرصت را خواهد داشت تا مهارت های مهندسی نرم افزار زیر را که در صنعت نرم افزار تقاضای زیادی دارد، تمرین کند:
با انجام دادن بیاموزید. حدود 17 درصد از این درس را تئوری تشکیل می دهد. بقیه از کلاس های عملی تشکیل شده است. این دوره به شدت بر روی کد متمرکز است و در صورت نیاز با برخی ارائهها همراه است. در زیر هر ویدیو، میتوانید پیوندهای اضافی و مطالب مطالعه را در صفحه منابع پروژهها بیابید. شما یک کیف پول دسکتاپ بیت کوین می سازید و در حین انجام این کار مفاهیم مهم بیت کوین را یاد می گیرید.
توصیه میشود که دانشآموز قبل از گذراندن این دوره، دانش برنامهنویسی شی گرا را داشته باشد. دانش جاوا یا زبان های مشابه مورد نیاز است. اگرچه این دوره مفاهیم مختلف مهندسی نرم افزار را ارائه می دهد، اما ما بر درک بیت کوین تمرکز می کنیم. اگر دانشآموز بخواهد برخی از مفاهیم مهندسی نرمافزاری که در این دوره به آنها اشاره شده است را با جزئیات بداند، باید از منابع دیگر در طول دوره برای درک بهتر آنها استفاده کند.
در طول دوره، برنامه کیف پول بیت کوین رومیزی خود را خواهید ساخت. همچنین، شما این فرصت را خواهید داشت که برنامه به دست آمده را با سایر دانش آموزان و ما به اشتراک بگذارید! برای این کار بر روی دکمه ایجاد پروژه در انتهای همین صفحه کلیک کنید. سپس، به صفحهای هدایت میشوید که میتوانید عنوان پروژه، توضیحات، پیوند، ویدیوی یوتیوب یا تصویری را در آن پست کنید. در زیر چند پیشنهاد از مواردی که می توانید در پایان دوره با ما به اشتراک بگذارید آمده است:
پس از اشتراکگذاری پروژهتان، برای دیدن آن در جامعه ما در دسترس خواهد بود.
کیف پول بیت کوین BYOW
بیایید کمی بیشتر در مورد کیف پولی که میسازید صحبت کنیم. در طول دوره، من به این کیف پول به عنوان BYOW اشاره می کنم، مخفف عبارت "کیف پول خود را بسازید". ما توسعه این برنامه را با جاوا 16 شروع خواهیم کرد، اما بعداً در دوره آموزشی آن را به نسخه 19 به روز خواهیم کرد. ما از فریمورک بوت فنری نسخه 2.5.4 استفاده خواهیم کرد که یک ظرف تزریق وابستگی و امکانات زیادی برای کمک به شما ارائه می دهد. ما اپلیکیشن خود را می سازیم بعداً در دوره، ما آن را به نسخه 2.7.5 به روز خواهیم کرد.
ما از Java FX نسخه 16 در پروژه استفاده خواهیم کرد. بعداً آن را به نسخه 19 بهروزرسانی میکنیم. این کتابخانه کلاسهایی را ارائه میکند که به ما در ساختن رابط کاربری گرافیکی برنامه، که به عنوان gooey نیز شناخته میشود، کمک میکند. برای آزمایش، از groovy، چارچوب Spock و تست FX استفاده می کنیم. برای ایجاد دانههای کیف پول، آدرسها، تراکنشها و سایر عملیات بیتکوین، از کتابخانه جاوای بیتکوین منبع باز استفاده میکنیم که مخصوصاً برای این دوره ساختهام.
ما از نود هسته بیت کوین نسخه 22 برای ارتباط با بلاک چین استفاده خواهیم کرد. بعداً در دوره، ما آن را به نسخه 23 به روز خواهیم کرد. اگرچه گره هسته بیت کوین می تواند کیف پول و آدرس تولید کند، ما از آن فقط برای بازیابی داده ها و ارسال داده ها به بلاک چین استفاده خواهیم کرد. عملیاتی مانند تولید دانهها، آدرسها، ساخت و امضای تراکنشها توسط اپلیکیشن ما انجام میشود. استثنا برای آزمون ها خواهد بود. در این موارد، ما از گره هسته بیت کوین RPC API برای تولید آدرس ها، ارسال تراکنش ها و استخراج بلوک ها در محیط های آزمایشی استفاده می کنیم. بنابراین، ما با مهمترین روشهای RPC API گره هسته بیتکوین آشنا میشویم و یک کلاینت برای برقراری ارتباط با آن از برنامهمان ایجاد میکنیم.
به عنوان پایگاه داده، از اجرای جاوا SQL HSQLDB استفاده خواهیم کرد. ما از ادغام صاف آن با کتابخانه JPA داده بوت فنری برای برقراری ارتباط با پایگاه داده استفاده خواهیم کرد. در نهایت، ما از Intellij IDEA به عنوان IDE برای ساخت این پروژه استفاده خواهیم کرد.
همه کدهای ارائه شده در این دوره منبع باز هستند و در صفحه GitHub ما در دسترس هستند. برای هر کلاس عملی، این صفحه حاوی پیوندی با تفاوت کد بین دو کلاس عملی آخر برای راحتی دانشآموز است.
منابع:
دانلود، پیکربندی و اجرای نود هسته بیت کوین و دانلود IntelliJ IDEA
- وب سایت Bitcoin Core:
- دستورالعمل های نصب هسته بیت کوین:
برای ویندوز:
برای لینوکس:
برای سیستم عامل مک:
- مکان bitcoin.conf:
- وب سایت دانلود IntelliJ IDEA:
- محتوای bitcoin.conf:
testnet=1
datadir=جایگزین مسیری که میخواهید بلاک چین را در آن ذخیره کنید
سرور=1
rpcuser=byow
rpcpassword=byow
txindex=1
fallbackfee=0.00001
zmqpubrawtx=tcp://127.0.0.1:29000
zmqpubhashblock=tcp://127.0.0.1:29000
بیت کوین چیست؟
- بیت کوین: یک سیستم نقدی الکترونیکی همتا به همتا، توسط ساتوشی ناکاموتو:
شبکه بیت کوین، اکوسیستم و اصول
- اصول بیت کوین:
- کد منبع اصلی بیت کوین:
شروع پروژه
- Spring Initializr:
پیکربندی رابط کاربری گرافیکی
- تفاوتهای کد:
ایجاد اولین آزمون ما
- تفاوت کد:
دانه های یادگاری
- BIP 39:
ایجاد پنجره گفتگوی Wallet
- تفاوتهای کد:
ایجاد دانه یادگاری
- کد منبع کتابخانه جاوا بیت کوین:
- تفاوت کد:
ایجاد دکمههای پنجره گفتگوی کیف پول و اعتبارسنجی
- تفاوت کد:
کیف پول فعلی قابل مشاهده
- تفاوتهای کد:
برگه دریافت بیت کوین
- تفاوتهای کد:
آدرس بیت کوین و کیف پول HD
- BIP 13:
- BIP 32:
- BIP 44:
- BIP 84:
- BIP 49:
- SLIP 44:
ایجاد کلیدهای عمومی گسترده کیف پول ما
- دانه یادگاری برای آزمایش سرویس کیف پول ایجاد:
"رها کردن رها کردن رها کردن رها کردن رها کردن رها کردن رها کردن رها کردن رها کردن در مورد"
- موارد آزمایشی برای تست خدمات گسترده pubkey:
- وب سایت ایان کلمن:
- تفاوت کد:
ایجاد آدرسهای Segwit
- آدرس مورد آزمایشی مولد متوالی:
"zpub6tmUiGj1DxgtbyrfYZUgfrVLuU2gyFPZMkSof4MdWNJaKuas4R1DB9D2arQ52ThKRxfpMbHQeYig45Mt8eNhd5zkFSx81CQWy7Y"،
- موارد آزمایشی مولد آدرس Segwit:
- تفاوت کد:
درک آدرس های Segwit و مقدمه ای بر محیط های شبکه بیت کوین
- BIP 173:
ایجاد آدرسهای Segwit – قسمت دوم
- تفاوت کد:
افزودن پشتیبانی برای Main Net، Test Net و Reg Test Environments
- تفاوت کد:
ایجاد Node Client برای ایجاد و فهرست کردن کیف پول
- مستندات روش ایجاد کیف پول بیت کوین Core Node RPC:
- مستندات روش listwalletdir بیت کوین Core Node RPC:
- مستندات روش لیست کیف پولهای لیست نود بیت کوین Core Node RPC:
- تفاوت کد:
Node Clients برای بارگیری کیف پول، دریافت آدرس جدید، بررسی موجودی ما و استخراج بیت کوین در محیط تست Reg
- مستندات روش loadwallet RPC Core Node Bitcoin:
- مستندات متد getnewaddress RPC گره هسته بیت کوین:
- مستندات روش دریافت تعادل RPC Core Node Bitcoin:
- مستندات روش آدرس آدرس RPC تولید بیت کوین Core Node:
- تفاوت کد:
ارسال بیت کوین از گره به برنامه. گره هسته بیت کوین CLI
- اسناد روش ارسال آدرس آدرس RPC Core Bitcoin:
- تفاوت کد:
جدول آدرس ها
- تفاوتهای کد:
وارد کردن آدرس های برنامه ما به گره بیت کوین ما
- مستندات روش چندگانه import RPC Core Bitcoin:
- آدرس هایی برای آزمایش کلاینت آدرس ورودی چندگانه Node:
bcrt1qkqn37nzqtp6wt9hnkkkc4a6pu704t883dxq02j
bcrt1qv579hpgz6h92lwpudyw4q4pwts2rhxe9kwft82
bcrt1q84t8hyycfwvw79zrxhhkhdcepyscxvshulr8zw
- تفاوت کد:
فراخوانی گره بیت کوین ما به صورت ناهمزمان
- تفاوتهای کد:
گوش دادن به تراکنش ها از Node با ZeroMQ
- تفاوتهای کد:
تراکنش های بیت کوین: ورودی ها، خروجی ها، اسکریپت ها و مجموعه UTXO
- مستندات روش لیست هزینه شده RPC گره هسته بیت کوین:
دریافت UTXO از گره و فیلتر کردن آنها
- تفاوت کد:
به روز رسانی آدرس های کیف پول فعلی
- تفاوت کد:
نمایش اطلاعات آدرس در جدول آدرس ها
- تفاوت کد:
سناریوهای آزمایشی بیشتر برای دریافت بیت کوین و جلوگیری از استفاده مجدد از آدرس
- تفاوت کد:
بهبود دریافت تست های بیت کوین. دریافت تراکنش های بیشتر از آدرس ها
- تفاوت کد:
ایجاد آدرس های بیشتر
- تفاوت کد:
تأییدیه های آزمایشی
- تفاوت کد:
جدول معاملات
- تفاوت کد:
پر کردن جدول معاملات
- تفاوت کد:
بهبود تستها برای جدول معاملات و اجرای برنامه ما در محیط شبکه آزمایشی
- شیر آب تست بیت کوین:
- Net Blockchain Explorer را آزمایش کنید:
- تفاوت کد:
گوش دادن به بلوک ها و قالب بندی موجودی ها
- تفاوت کد:
موجودی مجموع کیف پول
- تفاوت کد:
محاسبه و نمایش کل موجودی کیف پول
- تفاوت کد:
افزودن آزمایشهای بیشتر برای ویژگی کل موجودی
- تفاوت کد:
برگه ارسال بیت کوین
- تفاوت کد:
کارمزد و اندازه تراکنش
- وب سایت هزینه بیت کوین:
- وب سایت Mempool Space:
- گره هسته بیت کوین RPC مستندات روش هزینه هوشمند را برآورد می کند:
ایجاد ماشین حساب اندازه تراکنش و کارمزد هوشمند Node Estimate
- تفاوت کد:
ایجاد ماشین حساب اندازه تراکنش و کارمزد هوشمند Node Estimate
- تفاوت کد:
انتخاب سکه و گرد و غبار
- ارزیابی استراتژیهای انتخاب سکه، توسط مارک ارهارت:
- سیاست گرد و غبار هسته بیت کوین:
پیاده سازی Dust Calculator و سایر ابزارهای کاربردی
- تفاوت کد:
اجرای انتخابکننده سکه قرعهکشی تصادفی
- Utxo و آدرسهای تست انتخاب کننده سکه به صورت تصادفی:
Utxo جدید(
«95ca08e71b5b8149b3c70f363e4a29e6a541850be3f143216d85b4b8429183a1،
0،
«bcrt1qr8z6uh0pjymq7u70s2xt0vpz5y8kvula632qh6،
«»،
«001419c5ae5de191360f73cf828cb7b022a10f6673fd،
Satoshi.toBtc(مقدار)،
1،
null،
null
)
string addressToSend = "bcrt1q3d5nn9qw9s44cr6g6mh75m0cf4tr7prsfrm5c6"
String changeAddress = "bcrt1qgykwpz3ql696ct5denuqavk7xcmh6lzwmpcyuk"
- موارد آزمایشی برای تست انتخاب کننده سکه به صورت تصادفی:
ورودیهای مورد انتظار | خروجی های انتظار می رود | inputAmounts
1 | 1 | [100_002_090]
1 | 1 | [100_002_091]
1 | 1 | [100_002_383]
1 | 1 | [100_002_384]
1 | 1 | [100_002_678]
1 | 1 | [100_002_679]
1 | 1 | [100_002_972]
1 | 2 | [100_002_973]
2 | 1 | [50_001_691، 50_001_691]
2 | 1 | [50_001_691, 50_001_692]
2 | 1 | [50_001_691، 50_001_984]
2 | 1 | [50_001_691، 50_001_985]
2 | 1 | [50_001_691، 50_002_279]
2 | 1 | [50_001_691، 50_002_280]
2 | 1 | [50_001_691، 50_002_573]
2 | 2 | [50_001_691, 50_002_574]
3 | 1 | [33_334_891، 33_334_891، 33_334_892]
3 | 1 | [33_334_891، 33_334_891، 33_334_893]
3 | 1 | [33_334_891، 33_334_891، 33_335_185]
3 | 1 | [33_334_891، 33_334_891، 33_335_186]
3 | 1 | [33_334_891، 33_334_891، 33_335_480]
3 | 1 | [33_334_891، 33_334_891، 33_335_481]
3 | 1 | [33_334_891، 33_334_891، 33_335_774]
3 | 2 | [33_334_891، 33_334_891، 33_335_775]
- تفاوت کد:
اجرای تراکنش خالق
- موارد آزمایشی برای تست خدمات ایجادکننده تراکنش:
- تفاوت کد:
پنجره گفتگوی ارسال تراکنش
- تفاوت کد:
نمایش داده های تراکنش در پنجره گفتگوی ارسال بیت کوین
- تفاوت کد:
کیف پول و نود ما چگونه تراکنش های ارسالی را انجام خواهند داد
- مستندات روش ارسال تراکنش RPC Core Node Bitcoin:
- مستندات روش لیست معاملات RPC نود هسته بیت کوین:
امضا و ارسال تراکنشهای Segwit
- تفاوت کد:
تصحیح جداول و موجودی تراکنش ها و آدرس ها
- تفاوت کد:
تغییر آدرس ها را تغییر دهید. افزودن هشدار خطا برای رمزهای عبور اشتباه
- تفاوت کد:
پیامهای خطا و آزمایشهای بیشتر برای ویژگی Send Bitcoin
- ارسال تست های اضافی بیت کوین:
- تفاوت کد:
یک Refactor ضروری
- تفاوت کد:
A Necessary Refactor Part II
- موارد تست ماشین حساب اندازه تراکنش جدید:
- تفاوت کد:
آدرسهای Segwit تودرتو
- BIP 141:
- BIP 49:
دریافت بیت کوین در آدرس های Segwit تو در تو
- موارد تست ژنراتور آدرس Segwit تودرتو:
- تفاوت کد:
ارسال بیت کوین به آدرسهای Segwit تودرتو و آزمایش کیف پول ما در محیط شبکه آزمایشی
- موارد تست ماشین حساب اندازه تراکنش برای ورودی ها و خروجی های Segwit تودرتو:
- تفاوت کد:
ارسال بیت کوین به آدرس های قدیمی
- موارد تست ماشین حساب اندازه تراکنش برای ورودی های Segwit و خروجی های قدیمی:
- تفاوت کد:
ذخیره و رمزگذاری کیف پول ما
- وب سایت HSQLDB:
- تفاوت کد:
منوی بارگیری کیف پول
- تفاوت کد:
بارگیری کیف پول
- تفاوت کد:
قابلیت انکار قابل قبول، بازسازی مجدد و آزمایشات بیشتر برای ویژگی Load Wallet
- لیست RPC گره هسته بیت کوین توسط مستندات روش آدرس دریافت شده است:
- تفاوت کد:
رفع آدرس ها، تراکنش ها و موجودی ها
- تفاوت کد:
به روز رسانی تعداد آدرس های تولید شده و بهینه سازی تست ها
- تفاوت کد:
وارد کردن کیف پول با دانه حافظه
- تفاوت کد:
اعتبار سنجی آدرس ها
- موارد تست برای آزمون اعتبار سنجی آدرس در کلاس تست بیت کوین ارسال
- تفاوت کد:
ایجاد نوار پیشرفت
- تفاوتهای کد:
به روز رسانی وابستگی ها
- دانلود بیت کوین Core نسخه 23:
- تفاوت کد:
اجرای کیف پول ما در محیط اصلی خالص
- دانلود جاوا 19:
- تفاوت کد:
توسعه دهنده نرم افزار و بیت کوین پلب
من بیش از 5 سال تجربه به عنوان یک توسعه دهنده نرم افزار حرفه ای دارم که به ویژه در صنعت تجارت الکترونیک کار می کنم.
من از سال 2016 به بیت کوین علاقه مند بوده ام. از آن زمان به شدت بیت کوین را مطالعه کرده ام. من کتابخانه منبع باز بیت کوین-جاوا را توسعه داده ام.
من ابتکار آموزش بیت کوین را برای تمرکز بر ارائه آموزش بیت کوین برای توسعه دهندگان در سراسر جهان ساخته ام.
نمایش نظرات