اپلیکیشن Beeper که سر کلاس راجع بهش صحبت کردم ، این اپ میتونه با تمام پیام رسان های شما پل بزنه و براحتی هم به واتس اپ تلگرام اینستاگرام و بقیه اپ ها پیام بفرستید و دریافت کنید بدون هیچ فیلتری یا نیاز به پروکسی و فیلترشکن
اپ رو نصب کنید واردش که شدید صفحه اول پل ها رو نشون میده که رو هر کدوم کلیک کنید فعال میشه فقط زمان اتصال به مثلا تلگرام یه کد تایید به حساب تلگرام میفرسته که باید داخل اپ جایی که خودش مشخص میکنه وارد کنید تا متصل به تلگرام بشه و همینجوری به بقیه
همزمان همه اپ ها رو در یک اپ بدون فیلتر خواهید داشت
اینستاگرام قسمت دایرکت براتون اضافه میشه
https://play.google.com/store/apps/details?id=com.beeper.android
#M_Sh
@persians_python
اپ رو نصب کنید واردش که شدید صفحه اول پل ها رو نشون میده که رو هر کدوم کلیک کنید فعال میشه فقط زمان اتصال به مثلا تلگرام یه کد تایید به حساب تلگرام میفرسته که باید داخل اپ جایی که خودش مشخص میکنه وارد کنید تا متصل به تلگرام بشه و همینجوری به بقیه
همزمان همه اپ ها رو در یک اپ بدون فیلتر خواهید داشت
اینستاگرام قسمت دایرکت براتون اضافه میشه
https://play.google.com/store/apps/details?id=com.beeper.android
#M_Sh
@persians_python
Google Play
Beeper: Universal Chat - Apps on Google Play
Chat with anyone you want on any chat network
پایتون فارسی(PyCore)
پاول دورف نابغه قرن جدید !؟! تلگرام بر خلاف اکثر شبکه های اجتماعی و پیام رسان های معروف به دور از سیاسی گری متولد شد و تا به امروز به دو شعار باطنی خود که دوری از جانب گری در مسایل سیاسی و حفظ حریم خصوصی کاربران بوده عمل کرده است. به شکلی که تلگرام هم در کشورهای…
اینم نقد شدن نات کوین از شروع این پروژه چندین مطلب راجع بهش نوشتم امیدوارم ازش استفاده کرده باشید
👍3
سلام وقت همگی بخیر
با توجه به تعطیلی روز پنجشنبه در خراسان رضوی کلیه کلاس های مجتمع فنی روز پنجشنبه
تعطیل هست
با توجه به تعطیلی روز پنجشنبه در خراسان رضوی کلیه کلاس های مجتمع فنی روز پنجشنبه
تعطیل هست
سایتscr که فانکشن های تبدیل زمان میلادی به زمان شمسی رو بهتون میده
یه فانکشن پایتونی رو نوشته که سه تا آرگومان بهش داده میشه سال و ماه و روز میلادی و خروجی یه لیست برمیگردونه که سال و ماه و روز شمسی رو میده و میتونید تو پروژه هاتون استفاده کنید ازش بدون نیاز به پکیج خاصی
https://jdf.scr.ir/jdf/python
یه فانکشن پایتونی رو نوشته که سه تا آرگومان بهش داده میشه سال و ماه و روز میلادی و خروجی یه لیست برمیگردونه که سال و ماه و روز شمسی رو میده و میتونید تو پروژه هاتون استفاده کنید ازش بدون نیاز به پکیج خاصی
https://jdf.scr.ir/jdf/python
#SADRA_K
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👌2
سلام به همه دو تا پروژه جدید رو تلگرام لانچ شدن شبیه به نات کوین و تپ سواپ
اگه علاقه به این موضوعات دارید میتونید تست کنید شاید مثل نات کوین قیمت گرفتن
اولی بزرگترین کانال تلگرام رو دارن با بیست میلیون کاربر
دومی هم در حال حاضر ده میلیون عضو داره
بازی همستر با کانال بیست میلیونی
https://t.me/hamsTer_kombat_bot/start?startapp=kentId26472764
--------------------------------------------------------
بازی یس کوین که الان ده میلیون کاربر داره
https://t.me/theYescoin_bot/Yescoin?startapp=TmPQnI
اگه علاقه به این موضوعات دارید میتونید تست کنید شاید مثل نات کوین قیمت گرفتن
اولی بزرگترین کانال تلگرام رو دارن با بیست میلیون کاربر
دومی هم در حال حاضر ده میلیون عضو داره
بازی همستر با کانال بیست میلیونی
https://t.me/hamsTer_kombat_bot/start?startapp=kentId26472764
--------------------------------------------------------
بازی یس کوین که الان ده میلیون کاربر داره
https://t.me/theYescoin_bot/Yescoin?startapp=TmPQnI
Telegram
Hamster Kombat
Just for you, we have developed an unrealistically cool application in the clicker genre, and no hamster was harmed! Perform simple tasks that take very little time and get the opportunity to earn money!
👍6👎3👌1
پایتون فارسی(PyCore)
برای آخرین مطلب راجع به نات کوین اینکه فکر کنید با کلیک کردن قراره کسی پولدار بشه یه رویای خوشایند غیرواقعی هست این شکل پروژه ها با استفاده از اهرم تعداد افراد به یه پروژه ای ارزش میدن و حالا ممکنه در آینده با ایده های پشتش بتونن این ارز رو قیمت گذاری کنند…
یک بار دیگه این مطلب رو بخونید و لپ مطلب رو بگیرید
پروژه های بر بستر تلگرام بعد از نات قطعا قارچ وار رشد میکنن و همه شون هم قرار نیست به جایی برسند
فرصت های که بعنوان یه برنامه نویس پیش اومده رو بگیرید و روی تخصص خودتون متمرکز بشید
و این پروژه ها رو هم بعنوان یه گیم ببینید که ممکنه بشه ممکنه نشه
جوری نشه که بخاطر این جوی که شکل گرفته از هدف اصلی دور بشید و تمام وقت و تمرکز رو روی اینا بذارید
هیچ چیزی تو این دنیا مجانی نیست
پروژه های بر بستر تلگرام بعد از نات قطعا قارچ وار رشد میکنن و همه شون هم قرار نیست به جایی برسند
فرصت های که بعنوان یه برنامه نویس پیش اومده رو بگیرید و روی تخصص خودتون متمرکز بشید
و این پروژه ها رو هم بعنوان یه گیم ببینید که ممکنه بشه ممکنه نشه
جوری نشه که بخاطر این جوی که شکل گرفته از هدف اصلی دور بشید و تمام وقت و تمرکز رو روی اینا بذارید
هیچ چیزی تو این دنیا مجانی نیست
👍6👎1
خب سلام دوباره در ادامه مجموعه پست های دیتابیس تو این یکی قراره با معماری Vitess اشنا بشیم و متوجه بشیم یوتوب چگونه 2.49 میلیارد کاربر خودش رو با MySQL هندل میکنه.
توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه.
روزی روزگاری، سه نفر که تو PayPal کار میکردن، تصمیم گرفتن یه سایت دوستیابی درست کنن. اما مدل کسبوکارشون شکست خورد. برای همین ایدهشون رو عوض کردن و یه سایت اشتراکگذاری ویدئو درست کردن و اسمش رو گذاشتن یوتیوب.
اونا عناوین ویدئوها، توضیحات و اطلاعات کاربران رو تو MySQL ذخیره کردن. وقتی کاربرهای بیشتری به سایت پیوستن، اونا MySQL رو به حالت رهبر-دنبالکننده (leader-follower replication topology) تنظیم کردن تا بتونن بهتر مقیاسپذیری کنن. اما تکرار در MySQL تکنخی (single-threaded) است. بنابراین دنبالکنندهها نمیتونستن در عملیات نوشتن شدید به رهبر برسند و دادههای جدید رو بهروز کنن. با این حال، نرخ رشدشون خیلی زیاد بود و به یک میلیارد کاربر رسیدن و به دومین سایت پربازدید در جهان تبدیل شدن.
بنابراین با اضافه کردن یه حافظه نهان (cache) مقیاسپذیری کردن و همه رویدادها رو از لاگ باینری MySQL (binary log) بارگذاری کردن. این یعنی تکرار به حافظه وابسته شد و سرعت بیشتری پیدا کرد. اگرچه این کار به طور موقت مشکل مقیاسپذیری اونا رو حل کرد، مشکلات جدیدی به وجود اومد.
در اینجا به برخی از اونا اشاره میکنم:
1. پارتیشنبندی (Sharding):
اولین کاری که باید کرد این که MySQL باید پارتیشنبندی بشه تا نیازهای ذخیرهسازی رو مدیریت کنه. اما بعد از پارتیشنبندی، معاملات (transactions) و پیوستن جداول (joins) سخت میشه. بنابراین منطق برنامه (application logic) باید این رو مدیریت کنه. این یعنی منطق برنامه باید بفهمه که کدوم پارتیشنها رو باید پرسوجو کنه و این باعث افزایش احتمال زمان خرابی (downtime) میشه.
2. عملکرد (Performance):
و(leader-follower replication topology) باعث میشه که دادههای قدیمی از دنبالکنندهها خونده بشه. بنابراین منطق برنامه باید خوندن دادهها رو به رهبر هدایت کنه اگر دادههای جدید لازم باشه. و این نیاز به پیادهسازی منطق اضافی داره.
3. حفاظت (Protection):
ریسک اینکه برخی پرسوجوها خیلی طول بکشه تا دادهها رو برگردونن وجود داره. همچنین تعداد زیادی از اتصالات MySQL به طور همزمان میتونه مشکلساز بشه و ممکنه دیتابیس رو از کار بندازه.
اونا میخواستن یه لایه انتزاعی روی MySQL برای سادگی و مقیاسپذیری ایجاد کنند. بنابراین Vitess رو ساختن. در اینجا نحوه ارائه مقیاسپذیری بالا توسط Vitess رو توضیح میدم:
1. تعامل با پایگاه داده:(Interacting with Database)
اونا یه سرور جانبی (sidecar server) جلو هر نمونه MySQL نصب کردن و اسمش رو گذاشتند VTTablet.
این سرور جانبی به اونا اجازه میداد:
- کنترل سرور MySQL و مدیریت پشتیبانگیری از پایگاه داده
- بازنویسی کوئریهای سنگین با اضافه کردن محدودیت (limit clause)
- کش کردن دادههای پر دسترس برای جلوگیری از مشکل Thundering Herd
2. مسیریابی کوئریها(Routing SQL Queries):
یه سرور پراکسی بدون حالت (stateless proxy server) برای مسیریابی کوئریها تنظیم کردند و اسمش رو گذاشتند VTGate.
این سرور پراکسی بهشون اجازه میداد:
- پیدا کردن VTTablet صحیح برای مسیریابی کوئری بر اساس اسکیما و طرح پارتیشنبندی
- پایین نگه داشتن تعداد اتصالات MySQL از طریق تجمیع اتصالات (connection pooling)
- صحبت با لایه کاربردی به پروتکل MySQL
- عمل کردن مانند یه سرور MySQL یکپارچه برای سادگی
- محدود کردن تعداد معاملات در یک زمان برای عملکرد بهتر
همچنین برای مقیاسپذیری بیشتر، سرورهای VTGate متعددی راهاندازی کردند.
3. اطلاعات حالت:
تصویر چهارم در کامنت ها
یه پایگاه داده توزیعشده کلید-مقدار (distributed key-value database) راهاندازی کردند تا اطلاعات مربوط به اسکیما، طرحهای پارتیشنبندی و نقشها رو ذخیره کنه.
این پایگاه داده همچنین روابط بین پایگاههای داده مثل رهبر و دنبالکنندهها رو مدیریت میکنه.
در ادمه از Zookeeper برای پیادهسازی این پایگاه داده کلید-مقدار استفاده کرندند.
علاوه بر این، این دادهها رو در VTGate برای عملکرد بهتر کش میکردند.
برای بهروزرسانی پایگاه داده کلید-مقدار، یه سرور HTTP راهاندازی کردند و اسمش رو گذاشتند VTctld. این سرور فهرست کامل سرورها و روابطشون رو میگیره و سپس پایگاه داده کلید-مقدار رو بهروزرسانی میکنه.
#database
#postgresql
توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه.
روزی روزگاری، سه نفر که تو PayPal کار میکردن، تصمیم گرفتن یه سایت دوستیابی درست کنن. اما مدل کسبوکارشون شکست خورد. برای همین ایدهشون رو عوض کردن و یه سایت اشتراکگذاری ویدئو درست کردن و اسمش رو گذاشتن یوتیوب.
اونا عناوین ویدئوها، توضیحات و اطلاعات کاربران رو تو MySQL ذخیره کردن. وقتی کاربرهای بیشتری به سایت پیوستن، اونا MySQL رو به حالت رهبر-دنبالکننده (leader-follower replication topology) تنظیم کردن تا بتونن بهتر مقیاسپذیری کنن. اما تکرار در MySQL تکنخی (single-threaded) است. بنابراین دنبالکنندهها نمیتونستن در عملیات نوشتن شدید به رهبر برسند و دادههای جدید رو بهروز کنن. با این حال، نرخ رشدشون خیلی زیاد بود و به یک میلیارد کاربر رسیدن و به دومین سایت پربازدید در جهان تبدیل شدن.
بنابراین با اضافه کردن یه حافظه نهان (cache) مقیاسپذیری کردن و همه رویدادها رو از لاگ باینری MySQL (binary log) بارگذاری کردن. این یعنی تکرار به حافظه وابسته شد و سرعت بیشتری پیدا کرد. اگرچه این کار به طور موقت مشکل مقیاسپذیری اونا رو حل کرد، مشکلات جدیدی به وجود اومد.
در اینجا به برخی از اونا اشاره میکنم:
1. پارتیشنبندی (Sharding):
اولین کاری که باید کرد این که MySQL باید پارتیشنبندی بشه تا نیازهای ذخیرهسازی رو مدیریت کنه. اما بعد از پارتیشنبندی، معاملات (transactions) و پیوستن جداول (joins) سخت میشه. بنابراین منطق برنامه (application logic) باید این رو مدیریت کنه. این یعنی منطق برنامه باید بفهمه که کدوم پارتیشنها رو باید پرسوجو کنه و این باعث افزایش احتمال زمان خرابی (downtime) میشه.
2. عملکرد (Performance):
و(leader-follower replication topology) باعث میشه که دادههای قدیمی از دنبالکنندهها خونده بشه. بنابراین منطق برنامه باید خوندن دادهها رو به رهبر هدایت کنه اگر دادههای جدید لازم باشه. و این نیاز به پیادهسازی منطق اضافی داره.
3. حفاظت (Protection):
ریسک اینکه برخی پرسوجوها خیلی طول بکشه تا دادهها رو برگردونن وجود داره. همچنین تعداد زیادی از اتصالات MySQL به طور همزمان میتونه مشکلساز بشه و ممکنه دیتابیس رو از کار بندازه.
اونا میخواستن یه لایه انتزاعی روی MySQL برای سادگی و مقیاسپذیری ایجاد کنند. بنابراین Vitess رو ساختن. در اینجا نحوه ارائه مقیاسپذیری بالا توسط Vitess رو توضیح میدم:
1. تعامل با پایگاه داده:(Interacting with Database)
اونا یه سرور جانبی (sidecar server) جلو هر نمونه MySQL نصب کردن و اسمش رو گذاشتند VTTablet.
این سرور جانبی به اونا اجازه میداد:
- کنترل سرور MySQL و مدیریت پشتیبانگیری از پایگاه داده
- بازنویسی کوئریهای سنگین با اضافه کردن محدودیت (limit clause)
- کش کردن دادههای پر دسترس برای جلوگیری از مشکل Thundering Herd
2. مسیریابی کوئریها(Routing SQL Queries):
یه سرور پراکسی بدون حالت (stateless proxy server) برای مسیریابی کوئریها تنظیم کردند و اسمش رو گذاشتند VTGate.
این سرور پراکسی بهشون اجازه میداد:
- پیدا کردن VTTablet صحیح برای مسیریابی کوئری بر اساس اسکیما و طرح پارتیشنبندی
- پایین نگه داشتن تعداد اتصالات MySQL از طریق تجمیع اتصالات (connection pooling)
- صحبت با لایه کاربردی به پروتکل MySQL
- عمل کردن مانند یه سرور MySQL یکپارچه برای سادگی
- محدود کردن تعداد معاملات در یک زمان برای عملکرد بهتر
همچنین برای مقیاسپذیری بیشتر، سرورهای VTGate متعددی راهاندازی کردند.
3. اطلاعات حالت:
تصویر چهارم در کامنت ها
یه پایگاه داده توزیعشده کلید-مقدار (distributed key-value database) راهاندازی کردند تا اطلاعات مربوط به اسکیما، طرحهای پارتیشنبندی و نقشها رو ذخیره کنه.
این پایگاه داده همچنین روابط بین پایگاههای داده مثل رهبر و دنبالکنندهها رو مدیریت میکنه.
در ادمه از Zookeeper برای پیادهسازی این پایگاه داده کلید-مقدار استفاده کرندند.
علاوه بر این، این دادهها رو در VTGate برای عملکرد بهتر کش میکردند.
برای بهروزرسانی پایگاه داده کلید-مقدار، یه سرور HTTP راهاندازی کردند و اسمش رو گذاشتند VTctld. این سرور فهرست کامل سرورها و روابطشون رو میگیره و سپس پایگاه داده کلید-مقدار رو بهروزرسانی میکنه.
#database
#postgresql
پایتون فارسی(PyCore)
خب سلام دوباره در ادامه مجموعه پست های دیتابیس تو این یکی قراره با معماری Vitess اشنا بشیم و متوجه بشیم یوتوب چگونه 2.49 میلیارد کاربر خودش رو با MySQL هندل میکنه. توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه. روزی روزگاری،…
خلاصه:
اول-VTGate: سرور پراکسی برای مسیریابی کوئریها
دوم-Key-Value Database: سرور پیکربندی برای مدیریت توپولوژی
سوم-VTTablet: سرور جانبی که روی هر MySQL اجرا میشه
اونا Vitess رو با زبان Go نوشتند و اون رو اوپن سورس کردند. همچنین از MariaDB هم پشتیبانی میکنه. یوتیوب تونست با ترکیب رVitess و MySQL به 2.49 میلیارد کاربر رو مدیریت کنه. این مطالعه موردی نشون میده که MySQL میتونه به راحتی ترافیک در مقیاس اینترنت و کاربران زیاد رو مدیریت کنه.
اول-VTGate: سرور پراکسی برای مسیریابی کوئریها
دوم-Key-Value Database: سرور پیکربندی برای مدیریت توپولوژی
سوم-VTTablet: سرور جانبی که روی هر MySQL اجرا میشه
اونا Vitess رو با زبان Go نوشتند و اون رو اوپن سورس کردند. همچنین از MariaDB هم پشتیبانی میکنه. یوتیوب تونست با ترکیب رVitess و MySQL به 2.49 میلیارد کاربر رو مدیریت کنه. این مطالعه موردی نشون میده که MySQL میتونه به راحتی ترافیک در مقیاس اینترنت و کاربران زیاد رو مدیریت کنه.
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ پاول دوروف از #تلگرام_استارز (Stars) به صورت رسمی رونمایی کرد. حالا این استارز به چه درد میخوره؟ بیا تا بگم
فکر کن علی یه فروشگاه کفش فروشی داره، میاد و یه مینی اپ تلگرامی طراحی میکنه، برای فروش کفش. عکس محصولاتش رو هم خیلی معمولی توی کانالش میذاره.
مینی اپ رو بخوام مثال بزنم، مثل نات کوین، همستر و... که بدون نیاز به دانلود، چیزی شبیه به اپلیکیشن رو توی تلگرام براتون باز میکنن.
نحوه پرداخت توی ویدیوی ببینید، چقدر ساده و فقط با یک کلیک.
فروش میتونه هرچیزی باشه. چه محصولات فیزیکی، چه محصولات دیجیتال. برای مثال میتونین با استارز، از من تبلیغ خریداری کنین.
⭐️ چه کاری باید انجام بدیم؟
بخش مهم کار اینجاست. با اومدن استارز، تلگرام به مقصد مهم و کلیدی برای کسب و کارها تبدیل میشه. هرکسی میتونه فروشگاه آنلاین خودش رو توی تلگرام داشته باشه، با ظاهری شیک و پرداختی خیلی راحت.
اگر فروشگاه آنلاین دارین، زود به فکر پیدا کردن برنامه نویس برای نوشتن مینی اپ فروشگاهتون باشین.
⭐️ از کجا استارز بخریم؟
درحال حاضر از طریق گوگلپلی، اپ استور و ربات @PremiumBot
برای کاربران ایرانی در دسترس نیست فعلا
فکر کن علی یه فروشگاه کفش فروشی داره، میاد و یه مینی اپ تلگرامی طراحی میکنه، برای فروش کفش. عکس محصولاتش رو هم خیلی معمولی توی کانالش میذاره.
مینی اپ رو بخوام مثال بزنم، مثل نات کوین، همستر و... که بدون نیاز به دانلود، چیزی شبیه به اپلیکیشن رو توی تلگرام براتون باز میکنن.
نحوه پرداخت توی ویدیوی ببینید، چقدر ساده و فقط با یک کلیک.
فروش میتونه هرچیزی باشه. چه محصولات فیزیکی، چه محصولات دیجیتال. برای مثال میتونین با استارز، از من تبلیغ خریداری کنین.
⭐️ چه کاری باید انجام بدیم؟
بخش مهم کار اینجاست. با اومدن استارز، تلگرام به مقصد مهم و کلیدی برای کسب و کارها تبدیل میشه. هرکسی میتونه فروشگاه آنلاین خودش رو توی تلگرام داشته باشه، با ظاهری شیک و پرداختی خیلی راحت.
اگر فروشگاه آنلاین دارین، زود به فکر پیدا کردن برنامه نویس برای نوشتن مینی اپ فروشگاهتون باشین.
⭐️ از کجا استارز بخریم؟
درحال حاضر از طریق گوگلپلی، اپ استور و ربات @PremiumBot
برای کاربران ایرانی در دسترس نیست فعلا
Forwarded from CodeCrafters (mahyar)
خب سلام دوستان. تصمیم گرفتم تو یکسری پست سریالی(دوره) در مورد فناوری های نوین و جدید و آینده دار که در ایران متاسفانه کمتر بهشون پرداخته شده بپردازیم و چیزای جدید رو یاد بگیریم.
فناوری های نوین مثل بلاکچین، وب 3 و کامپیوترهای کوانتومی که در حال تغییر جهان اینده هستند. در این دوره قصد داریم با این سه فناوری آشنا بشیم و بهمون کمک کنه تا درک عمیقی از آنها پیدا کنیم.
بخش اول: بلاکچین - انقلاب در دنیای دیجیتال
ما این دوره را با بلاکچین آغاز میکنیم، فناوریای که با تمرکززدایی، امنیت و شفافیت خود، تحولات عظیمی در ارزهای دیجیتال، قراردادهای هوشمند و مدیریت زنجیره تأمین ایجاد کرده است.
چرا بلاکچین؟
بلاکچین پایه و اساس ارزهای دیجیتال مانند بیتکوین و اتریوم است و کاربردهای فراتر از ارزهای دیجیتال دارد. در این بخش، شما با اصول پایهای بلاکچین، نحوه کارکرد و کاربردهای متنوع آن آشنا خواهید شد.
ساختار دوره
این دوره به 4 فصل کلیدی تقسیم شده است:
فصل 1: بلاکچین چیست و چگونه کار میکند
پس از تسلط بر بلاکچین، به سراغ وب 3 و سپس کامپیوترهای کوانتومی خواهیم رفت تا شما را برای آیندهای دیجیتالی و هوشمند آماده کنیم.
همچنین میتونید مطالب مرتبط با بلاکچین و وب3 رو و مطالب مرتبط با کامپیوتر های کوانتومی رو با هشتگ های زیر ازین پس در چنل پیدا کنید.
#blockchain
#web3
#quantum_computing
فناوری های نوین مثل بلاکچین، وب 3 و کامپیوترهای کوانتومی که در حال تغییر جهان اینده هستند. در این دوره قصد داریم با این سه فناوری آشنا بشیم و بهمون کمک کنه تا درک عمیقی از آنها پیدا کنیم.
بخش اول: بلاکچین - انقلاب در دنیای دیجیتال
ما این دوره را با بلاکچین آغاز میکنیم، فناوریای که با تمرکززدایی، امنیت و شفافیت خود، تحولات عظیمی در ارزهای دیجیتال، قراردادهای هوشمند و مدیریت زنجیره تأمین ایجاد کرده است.
چرا بلاکچین؟
بلاکچین پایه و اساس ارزهای دیجیتال مانند بیتکوین و اتریوم است و کاربردهای فراتر از ارزهای دیجیتال دارد. در این بخش، شما با اصول پایهای بلاکچین، نحوه کارکرد و کاربردهای متنوع آن آشنا خواهید شد.
ساختار دوره
این دوره به 4 فصل کلیدی تقسیم شده است:
فصل 1: بلاکچین چیست و چگونه کار میکند
1-بلاکچین چیستفصل 2: مفاهیم پایه ارز دیجیتال
2-بلاکچین چگونه کار میکند
3-کاربردهای بلاکچین
4-اولین بلاکچین و معروفترینها
1-بلاکچینهای معروف در حوزه ارزهای دیجیتالفصل 3: کاربردهای پیشرفته بلاکچی
2-استخراج (Mining)
3-کیف پولهای دیجیتال و امنیت
1-قراردادهای هوشمندفصل 4: ابزارها و تکنولوژیهای مرتبط با بلاکچین
2-دپس (DApps) و وب 3.0
3-بلاکچین در صنایع مختلف
4-آینده بلاکچی
1-زبانهای برنامهنویسی بلاکچینادامه مسیر: وب 3 و کامپیوترهای کوانتومی
2-پلتفرمهای توسعه و ابزارهای کاربردی
3-تحلیل دادههای بلاکچین
4-آموزش و منابع یادگ
پس از تسلط بر بلاکچین، به سراغ وب 3 و سپس کامپیوترهای کوانتومی خواهیم رفت تا شما را برای آیندهای دیجیتالی و هوشمند آماده کنیم.
همچنین میتونید مطالب مرتبط با بلاکچین و وب3 رو و مطالب مرتبط با کامپیوتر های کوانتومی رو با هشتگ های زیر ازین پس در چنل پیدا کنید.
#blockchain
#web3
#quantum_computing
👍5👌1
Forwarded from CodeCrafters (mahyar)
فصل اول
1-بلاکچین چیست؟
همه بلاکچین با بیت کوین میشناسند. البته که خیلی هم اتفاق عجیبی نیست بخاطر این که بیت کوین در بستر بلاکچین هست که معنا پیدا کرده.
اما جالبکه بدونید تاریخچه بلاکچین به مدت ها قبل مربوط میشه.بلاکچین در واقع یک مدل دیتابیس هست اما با یکسری تفاوت کلیدی.
خب این تفاوت ها چی هستن؟
1-تغییر ناپذیری و مدیریت داده ها
میشه گفت بلاکچین یک بانک اطلاعاتی است که به اشتراک گذاشته شده و اطلاعتش به کمک رمز نگاری خیلی امن شده و عملا انقلابی در شیوه ذخیره کردن اطلاعات به وجود اورده.
به طور کلی یکسری ردیف از اطلاعات در فضایی با حجم محدود(مثلا 1 مگابایت) ذخیره میشه. فرض کنیم اسم این فضا رو بلوک انتخاب کنیم حالا هرکدوم از این بلوک ها یک کد منحصر به فردی دارن که به بلوک قبلی مرتبط میشه به این صورت که بلوک هایی که دارای اطالاعات هستند با کمک یک زنجیره فرضی بهم وصل میشن.
در نتیجه هر تغییری در اطلاعات یک بلوک نیازمند تغییر همه بلوک های بعد اون است که این امر رو عملا غیر ممکن میکنه.
2-معماری
3-هزینه و پیادهسازی
4-سرعت و عملکرد
#blockchain
@code_crafters
1-بلاکچین چیست؟
همه بلاکچین با بیت کوین میشناسند. البته که خیلی هم اتفاق عجیبی نیست بخاطر این که بیت کوین در بستر بلاکچین هست که معنا پیدا کرده.
اما جالبکه بدونید تاریخچه بلاکچین به مدت ها قبل مربوط میشه.بلاکچین در واقع یک مدل دیتابیس هست اما با یکسری تفاوت کلیدی.
خب این تفاوت ها چی هستن؟
1-تغییر ناپذیری و مدیریت داده ها
به محض این که اطلاعاتی در بلاکچین ذخیره بشه به هیچ عنوان قابلیت
پاک شدن یا تغییر رو نداره
ما در دیتابیس عملیات CRUD رو داریم (create, read , update , delete)
اما بلاکچین از عملیات تغییر پذیری پیشتیبانی نمیکند. به عبارت دیگر در بلاکچین فقط فقط عملیات C&R(Read, Create) داریم.
به این معنی که داده های یک بار نوشته میشن و دیگه نمیتونن پاک بشن یا جایگزین بشن.
میشه گفت بلاکچین یک بانک اطلاعاتی است که به اشتراک گذاشته شده و اطلاعتش به کمک رمز نگاری خیلی امن شده و عملا انقلابی در شیوه ذخیره کردن اطلاعات به وجود اورده.
به طور کلی یکسری ردیف از اطلاعات در فضایی با حجم محدود(مثلا 1 مگابایت) ذخیره میشه. فرض کنیم اسم این فضا رو بلوک انتخاب کنیم حالا هرکدوم از این بلوک ها یک کد منحصر به فردی دارن که به بلوک قبلی مرتبط میشه به این صورت که بلوک هایی که دارای اطالاعات هستند با کمک یک زنجیره فرضی بهم وصل میشن.
در نتیجه هر تغییری در اطلاعات یک بلوک نیازمند تغییر همه بلوک های بعد اون است که این امر رو عملا غیر ممکن میکنه.
2-معماری
از نظر معماری، بلاکچین و دیتابیس متفاوت هستند.سایر تفاوتها
پایگاه داده بر اساس معماری کلاینت-سرور Client-server ساخته شده یکی معماری که هم در محیط های کوچک و هم در مقیاس های بزرگ موفقیت های زیادی داشته.
بلاکچین ها قابلیت این رو دارند که غیر متمرکز بشن یعنی هیچ نهادی واحدی بلاکچین رو کنترل نمیکنه . این بانک اطلاعاتی در شبکه های از کامپیوتر ها توضیع شده و تمامشون یک نسخه از این دیتابیس رو داره بخاطر همین میشه گفت هم شفافیت و هم صحت اطلاعات دائم در داخل شبکه تایید میشه . عملا این اتفاق الزام یک نهاد واسطه مثل سازمان ها و یا دولت ها که مجبور باشن نظارت داشته باشن رو از بین میبره. عملا بلاکچین میتونه روی یک شبکه با اجماع اکثریت به صورت خودمختار و قابل اعتماد اطلاعات رو نگه داری و پردازش کنه.
3-هزینه و پیادهسازی
4-سرعت و عملکرد
#blockchain
@code_crafters
👍2
Forwarded from CodeCrafters (Amirali)
فصل اول
2- بلاکچین چگونه کار میکند؟
بلاکچین را مجموعهای از بلاکها تصور کنید که به صورت زنجیرهوار به یکدیگر متصلاند.
1- ساختار هر بلاک
هر بلاک در زنجیره شامل 3 بخش اصلی است:
برای افزودن بلاک جدید به زنجیره، مراحل زیر انجام میشود:
هر تراکنش در بلاکچین به صورت عمومی قابل مشاهده و ردیابی است. این ویژگی باعث میشود تا تمامی تراکنشها شفاف و قابل اعتماد باشند. این شفافیت به ویژه در کاربردهایی مانند رایگیری الکترونیکی، مدیریت زنجیره تأمین و سیستمهای مالی بسیار مهم است.
تکمیلی:
بعضی از سایتهای تولید محتوا مانند ویکیپدیا و everpedia بر بستر بلاکچین هستند.که اصولا برای اضافه کردن بلاک جدید نیاز به حل معادلات پیچیده نیست،مثلا در سایت everpedia براساس یک سری الگورتیم های دیگه بلاکچین باشه که هیچ یک از این کار ها رو کاربر انجام نمیده.
بیشتر بخوانید:
الگوریتم های هشینگ Hashing algorithms
هش بلاک Block Hash
نود Node
#blockchain
@code_crafters
2- بلاکچین چگونه کار میکند؟
بلاکچین را مجموعهای از بلاکها تصور کنید که به صورت زنجیرهوار به یکدیگر متصلاند.
1- ساختار هر بلاک
هر بلاک در زنجیره شامل 3 بخش اصلی است:
1.1- داده (Data): این بخش شامل اطلاعاتی است که بلاک ذخیره میکند. برای نمونه، در بلاکچین بیتکوین دادهها شامل جزئیات هر تراکنش است مانند فرستنده، گیرنده و مقدار بیتکوین انتقال داده شده.2- فرایند افزودن بلاک به زنجیره
1.2- هش بلاک (Block Hash): هر بلاک دارای یک کد منحصر به فرد به نام هش است که با استفاده از الگوریتمهای رمزنگاری تولید میشود. هش یک بلاک مانند اثر انگشت آن بلاک است و کوچکترین تغییری در جزئیات دادههای بلاک، هش آن را به کلی تغییر میدهد.
الگوریتمهای هشینگ توابع ریاضی یکطرفهای هستند که ورودی آن هر چیزی میتواند باشد اما خروجی آن یک مقدار منحصر به فرد با اندازه ثابت است. یکطرفه بودن این توابع به این معناست که با داشتن خروجی نمیتوان به داده ورودی آن دست پیدا کرد.
1.3- هش بلاک قبلی (Previous Block Hash): هر بلاک حاوی هش بلاک قبلی است که به آن متصل است. این ویژگی باعث ایجاد زنجیرهای از بلاکها میشود و امنیت و تغییرناپذیری بلاکچین را تضمین میکند.
برای افزودن بلاک جدید به زنجیره، مراحل زیر انجام میشود:
2.1- تایید تراکنشها (Transaction Verification): ابتدا تراکنشهای جدید توسط نودهای شبکه تایید میشوند. این تایید شامل بررسی صحت امضاهای دیجیتال و اطمینان از عدم تکراری بودن تراکنشها است.شفافیت و قابلیت ردیابی
2.2- حل مسئله ریاضی (Proof of Work): برای اضافه کردن بلاک جدید به زنجیره، نودها باید یک مسئله ریاضی پیچیده را حل کنند که به آن اثبات کار میگویند. این فرآیند نیازمند قدرت محاسباتی زیادی است و زمان و انرژی زیادی مصرف میکند.
2.3- اضافه شدن به زنجیره (Block Addition): پس از حل مسئله و تایید صحت بلاک جدید توسط سایر نودهای شبکه، بلاک به زنجیره اضافه میشود.
هر تراکنش در بلاکچین به صورت عمومی قابل مشاهده و ردیابی است. این ویژگی باعث میشود تا تمامی تراکنشها شفاف و قابل اعتماد باشند. این شفافیت به ویژه در کاربردهایی مانند رایگیری الکترونیکی، مدیریت زنجیره تأمین و سیستمهای مالی بسیار مهم است.
تکمیلی:
بعضی از سایتهای تولید محتوا مانند ویکیپدیا و everpedia بر بستر بلاکچین هستند.که اصولا برای اضافه کردن بلاک جدید نیاز به حل معادلات پیچیده نیست،مثلا در سایت everpedia براساس یک سری الگورتیم های دیگه بلاکچین باشه که هیچ یک از این کار ها رو کاربر انجام نمیده.
بیشتر بخوانید:
الگوریتم های هشینگ Hashing algorithms
هش بلاک Block Hash
نود Node
#blockchain
@code_crafters
Forwarded from CodeCrafters (mahyar)
فصل اول
3-کاربردهای بلاکچین
بلاکچین به دلیل ویژگیهای منحصر به فرد خود، کاربردهای متنوعی در صنایع و حوزههای مختلف دارد. در این درس به بررسی برخی از مهمترین کاربردهای بلاکچین میپردازیم.
1- ارزهای دیجیتال
2- قراردادهای هوشمند
3- زنجیره تأمین
4- رأیگیری الکترونیکی
5- بهداشت و درمان
6- مدیریت
نتیجهگیری
@code_craftesr
3-کاربردهای بلاکچین
بلاکچین به دلیل ویژگیهای منحصر به فرد خود، کاربردهای متنوعی در صنایع و حوزههای مختلف دارد. در این درس به بررسی برخی از مهمترین کاربردهای بلاکچین میپردازیم.
1- ارزهای دیجیتال
اولین و معروفترین کاربرد بلاکچین، ارزهای دیجیتال یا رمزارزها هستند. بیتکوین و اتریوم به عنوان نمونههای اصلی این دسته، توانستهاند با استفاده از بلاکچین، پرداختها و تراکنشهای مالی را به صورت امن و غیرمتمرکز انجام دهند.
- بیتکوین: به عنوان اولین ارز دیجیتال، بیتکوین امکان انجام تراکنشهای همتا به همتا را بدون نیاز به واسطهها فراهم کرده است.
- اتریوم: علاوه بر قابلیتهای بیتکوین، اتریوم پلتفرمی برای اجرای قراردادهای هوشمند و توسعه برنامههای غیرمتمرکز ارائه میدهد.
2- قراردادهای هوشمند
قراردادهای هوشمند (Smart Contracts) برنامههایی هستند که بر روی بلاکچین اجرا میشوند و شرایط قراردادی را به صورت خودکار و بدون نیاز به واسطههای سنتی اجرا میکنند.
- مزایا: حذف واسطهها، کاهش هزینهها و افزایش سرعت اجرای قراردادها.
- مثال: میتوان از قراردادهای هوشمند برای اتوماسیون فرآیندهای حقوقی، بیمه و معاملات املاک استفاده کرد.
3- زنجیره تأمین
بلاکچین میتواند شفافیت و کارایی زنجیره تأمین را بهبود بخشد. از تولید تا مصرف، هر مرحله از زنجیره تأمین میتواند به صورت امن و قابل ردیابی در بلاکچین ثبت شود.
- مزایا: افزایش شفافیت، کاهش تقلب و بهبود مدیریت موجودی.
- مثال: پیگیری محصولات غذایی از مزرعه تا فروشگاه برای اطمینان از کیفیت و اصالت کالا.
4- رأیگیری الکترونیکی
استفاده از بلاکچین در سیستمهای رأیگیری الکترونیکی میتواند شفافیت و امنیت انتخابات را افزایش دهد.
- مزایا: جلوگیری از تقلب، افزایش شفافیت و امکان رأیگیری از راه دور.
- مثال: پیادهسازی سیستمهای رأیگیری برای انتخابات ملی و محلی با استفاده از بلاکچین
5- بهداشت و درمان
در حوزه بهداشت و درمان، بلاکچین میتواند به اشتراکگذاری امن و کارآمد اطلاعات پزشکی بین بیماران، پزشکان و مراکز درمانی کمک کند.
- مزایا: افزایش امنیت و حریم خصوصی، بهبود هماهنگی بین مراکز درمانی و کاهش هزینهها.
- مثال: ایجاد پروندههای پزشکی الکترونیکی بر روی بلاکچین که تنها توسط افراد مجاز قابل دسترسی باشد
6- مدیریت
هویت
بلاکچین میتواند به ایجاد سیستمهای مدیریت هویت دیجیتال امن و غیرمتمرکز کمک کند.
- مزایا: افزایش امنیت اطلاعات شخصی، کاهش تقلب و سوء استفاده از هویت.
- مثال: ایجاد شناسههای دیجیتال برای افراد که به صورت امن در بلاکچین ذخیره میشوند و در دسترسی به خدمات مختلف مورد استفاده قرار میگیرند
نتیجهگیری
بلاکچین با ویژگیهای منحصر به فرد خود، کاربردهای فراوانی در صنایع و حوزههای مختلف دارد. این فناوری میتواند به بهبود شفافیت، امنیت و کارایی فرآیندها کمک کرده و نوآوریهای جدیدی را در دنیای دیجیتال به ارمغان آورد. در درسهای بعدی، به بررسی عمیقتر سایر مفاهیم و کاربردهای بلاکچین خواهیم پرداخت.#blockchain
@code_craftesr
راجع به بازی های ایردراپی جدید تلگرام
به نظر من احتمال لیست شدن تپ سواپ خیلی بیشتر از بقیه هست در حال حاضر به یک دلیل مهم
مهمترین موضوعی که در پایدار موندن به اصطلاح شت کوین ها هست بحث استخر نقدینگی هست که بتونه در مقابل فروش های روزهای اول دوام بیاره
تپ سواپ با تسک دو برابر شدن سكه ها در برابر یک Ton تونست (با توجه به لیست شدن نات کوین و اعتماد عمومی ) استخر قوی نقدینگی تشکیل بده با جمع همون TOn هایی ک دریافت کرد پس احتمال پایدار بودن و لیست شدن بسیار قوی تری از بقیه داره
همستر در حال حاضر تمرکز خودش رو روی پولی که از یوتیوب بدست میاره گذاشته (البته در حال حاضر ) و باید مشخص بشه چه فکری برای استخر نقدینگی داره
به نظر من احتمال لیست شدن تپ سواپ خیلی بیشتر از بقیه هست در حال حاضر به یک دلیل مهم
مهمترین موضوعی که در پایدار موندن به اصطلاح شت کوین ها هست بحث استخر نقدینگی هست که بتونه در مقابل فروش های روزهای اول دوام بیاره
تپ سواپ با تسک دو برابر شدن سكه ها در برابر یک Ton تونست (با توجه به لیست شدن نات کوین و اعتماد عمومی ) استخر قوی نقدینگی تشکیل بده با جمع همون TOn هایی ک دریافت کرد پس احتمال پایدار بودن و لیست شدن بسیار قوی تری از بقیه داره
همستر در حال حاضر تمرکز خودش رو روی پولی که از یوتیوب بدست میاره گذاشته (البته در حال حاضر ) و باید مشخص بشه چه فکری برای استخر نقدینگی داره
👍2
Forwarded from CodeCrafters (mahyar)
زبان های معروف بلاکچین
خب تو این پست قراره با زبان های برنامه نویسی که در بلاکچین کاربرد زیادی داشتند و دارند اشنا بشیم و همچنین در پست بعدی مریم سراغ پیاده سازی بلاکچین و الگورتیم های مربوطه با پایتون🥸🥸
برای توسعهی بلاک چین زبانهای مختلفی وجود دارند، اما برخی محبوبتر و برخی دیگر ناشناختهتر باقیماندهاند.
1-سی پلاس پلاس (C++)
2-سالیدیتی (Solidity)
6-گولنگ (Golang)
سایر زبانهای برنامهنویسی بلاکچین:
(C#)
(Java Script)
(Simplicity)
(Rholang)
(PHP)
(Ruby)
(Rust)
(Erlang)
(CX)
#blockchain
#web3
@code_crafters
خب تو این پست قراره با زبان های برنامه نویسی که در بلاکچین کاربرد زیادی داشتند و دارند اشنا بشیم و همچنین در پست بعدی مریم سراغ پیاده سازی بلاکچین و الگورتیم های مربوطه با پایتون🥸🥸
برای توسعهی بلاک چین زبانهای مختلفی وجود دارند، اما برخی محبوبتر و برخی دیگر ناشناختهتر باقیماندهاند.
1-سی پلاس پلاس (C++)
C++ یک زبان برنامه نویسی شیگرا است که در فناوری بلاک چین برای اولین بار توسط بنیانگذاران بیت کوین استفاده شد
2-سالیدیتی (Solidity)
این زبان برنامه نویسی بلاکچین توسط اتریوم توسعه داده شد و هدف اصلی آن کمک به توسعهدهندگان برای ایجاد شبکههای بلاک چین بر روی پلتفرم خود بود. از آنجاییکه Solidity به توسعهدهندگان بلاک چین اختصاص داده شده است
از Solidity میتوان برای ایجاد قراردادهای هوشمند جهت رای دادن، تامین مالی جمعی و کیف پولهای چند امضایی استفاده کرد. همچنین این زبان برنامه نویسی بلاکچین یکی از سریعترینهای حوزهی خود شناخته میشود.
3-پایتون (Python)
برای تازهکارهای در حوزهی زبان برنامه نویسی بلاکچین، پایتون یکی از انتخابهای عالی محسوب میشود. البته بسیاری معتقدند زبان پایتون حتی از سی پلاس پلاس هم مناسبتر و بهتر است. بهعنوان یک توسعهدهنده مبتدی، میتوانید از پایتون برای ایجاد نمونههای اولیه بدون نیاز به کدهای طولانی استفاده کنید
تنها یک مشکل به پایتون، این زبان برنامه نویسی بلاکچین وارد بوده که آن هم مفسری بودن این زبان است. این موضوع مشکلاتی برای عملیات رمزنگاری پیچیده در بلاک چین ایجاد میکند.
4-وایپر (Vyper)
زبان برنامه نویسی وایپر یکی تازه نفسها در زمینهی توسعه بلاک چین به حساب میآید که از پایتون ۳ مشتق شده است. با اینکه Vyper تمام ویژگیهای پایتون را ندارد، بهعنوان جایگزینی برای Solidity ساخته میشود. از این زبان برنامه نویسی بلاکچین معمولاً مانند Solidity برای ماشین مجازی اتریوم (EVM) استفاده میشود. با این حال، Vyper ساختارهای کنترلی متفاوتی نسبت به Solidity دارد و همچنین مسائل امنیتی را به طور متفاوتی مدیریت میکند.
اگر یک زبان توسعه بلاک چین برای نوشتن قراردادهای هوشمند می خواهید، وایپر را نیز در لیست برترینهای زبان برنامه نویسی بلاکچین قرار دهید.
5-جاوا (Java)
جاوا از نظر محبوبیت و مزایا، رقابت سختی را با C++ ایجاد کرده است که در فناوری بلاک چین نیز این رقابت دیده میشود.
برنامههای جاوا را میتوان بر روی پلتفرمهای مختلف اجرا کرد چرا که از ویژگی عملکرد WORA به معنای یک بار بنویس، در هر جایی اجرا کن (Write once, run anywhere) برخوردار است. از طرفی، این برنامهها به معماری
خاص سیستم وابسته نیستند؛ زیرا از JVM جهانی (ماشین مجازی جاوا) برای اجرا استفاده میکنند. همین ویژگی کافیست تا توسعهدهندگان، جاوا را یک زبان برنامه نویسی بلاکچین بینظیر بدانند.
6-گولنگ (Golang)
گو یا گولنگ یکی دیگر از زبانهای برنامهنویسی است که بهراحتی میتوان از آن برای توسعه بلاک چین استفاده کرد. GO توسط تیم گوگل توسعه داده شده است و در درجه اول برای ساخت سیستمهای غیرمتمرکز کاربرد دارد. علت اصلی استفادهی توسعهدهندگان از GO سادگی و سهولت مقیاسپذیری آن است.
از آنجاییکه زبان برنامه نویسی Go به صورت ایستا تایپ شده و یک زبان برنامه نویسی کامپایل شده است، برای برنامه نویسی بلاک چین عالی است.
سایر زبانهای برنامهنویسی بلاکچین:
(C#)
(Java Script)
(Simplicity)
(Rholang)
(PHP)
(Ruby)
(Rust)
(Erlang)
(CX)
#blockchain
#web3
@code_crafters
Forwarded from پایتون فارسی(PyCore)
Media is too big
VIEW IN TELEGRAM
Forwarded from پایتون فارسی(PyCore)
Media is too big
VIEW IN TELEGRAM
الگوریتم و فلوچارت -فصل دوم : فلوچارت-سجاد ریاحی
#part2
@persians_python
@persians_python
@persians_python
#part2
@persians_python
@persians_python
@persians_python
Forwarded from CodeCrafters (mahyar)
سلام🥸همونطور که از پست قبلی متوجه شدیم با زبان های بسیاری میتونیم بلاکچین رو طراحی کنیم و خب تو این پست قراره بلاکچینی رو برای زنجیره تامینی با استفاده از پایتون پیاده کنیم
زنجیر تامین یکی دیگه از کاربرد های بلاکچین در کنار ارز دیجیتیال و قرار داد های هوشمند و... هست.
بلاکچینی که قراره طراحی کنیم برای پیگیری محصولات غذایی از مزرعه تا فروشگاه برای اطمینان از کیفیت و اصالت کالا هستش
اولین چیزی که نیاز داریم یه کلاس تراکنش هست که یه سری مشخصات رو مثل فرستنده , گیرنده , محصول و مقدار اون محصول رو دریافت کنیم
حالا که تراکنشها رو تعریف کردیم، باید یک کلاس برای بلاکها ایجاد کنیم. هر بلاک در زنجیره شامل چند ویژگی اصلی که به ترتیب عبارتند از:
شماره بلاک در زنجیره (index)
هش بلاک قبلی در زنجیره (previous_hash)
زمان ایجاد بلاک (timestamp)
لیست تراکنشهای درون بلاک (transactions)
عددی که برای ماینینگ استفاده میشه (nonce)
هش بلاک (hash):که با استفاده از تراکنشها و ویژگیهای دیگر بلاک ساخته میشه
حالا که بلاکها و تراکنشها رو تعریف کردیم، باید یک کلاس برای بلاکچین خودمون ایجاد کنیم که شامل ویژگیهایی مثل لیستی از بلاکها، تراکنشهای معلق و سایر عملیات مانند اضافه کردن تراکنش، ماین کردن بلاک و بررسی اعتبار زنجیره باشه. درواقع نیاز به یه کلاس داریم که بیاد و بلاکچینمون رو مدیریت کنه
ادامه توضیحات کلس BlockChain و نحوه ساخت یه بلاک با تراکنش هاش تو پست بعدی🥸
#blockchain
زنجیر تامین یکی دیگه از کاربرد های بلاکچین در کنار ارز دیجیتیال و قرار داد های هوشمند و... هست.
بلاکچینی که قراره طراحی کنیم برای پیگیری محصولات غذایی از مزرعه تا فروشگاه برای اطمینان از کیفیت و اصالت کالا هستش
اولین چیزی که نیاز داریم یه کلاس تراکنش هست که یه سری مشخصات رو مثل فرستنده , گیرنده , محصول و مقدار اون محصول رو دریافت کنیم
import hashlib
import time
class Transaction:
def __init__(self, sender, recipient, product, quantity):
self.sender = sender
self.recipient = recipient
self.product = product
self.quantity = quantity
def __str__(self):
return f"Transaction(sender: {self.sender}, recipient: {self.recipient}, product: {self.product}, quantity: {self.quantity})"
حالا که تراکنشها رو تعریف کردیم، باید یک کلاس برای بلاکها ایجاد کنیم. هر بلاک در زنجیره شامل چند ویژگی اصلی که به ترتیب عبارتند از:
شماره بلاک در زنجیره (index)
هش بلاک قبلی در زنجیره (previous_hash)
زمان ایجاد بلاک (timestamp)
لیست تراکنشهای درون بلاک (transactions)
عددی که برای ماینینگ استفاده میشه (nonce)
هش بلاک (hash):که با استفاده از تراکنشها و ویژگیهای دیگر بلاک ساخته میشه
class Block:
def __init__(self, index, previous_hash, timestamp, transactions, nonce=0):
self.index = index
self.previous_hash = previous_hash
self.timestamp = timestamp
self.transactions = transactions
self.nonce = nonce
self.hash = self.calculate_hash()
def calculate_hash(self):
transactions_string = ""
for tx in self.transactions:
transactions_string += str(tx)
block_string = f"{self.index}{self.previous_hash}{self.timestamp}{transactions_string}{self.nonce}"
return hashlib.sha256(block_string.encode()).hexdigest()
def __str__(self):
return f"Block<index: {self.index}, hash: {self.hash}>"
حالا که بلاکها و تراکنشها رو تعریف کردیم، باید یک کلاس برای بلاکچین خودمون ایجاد کنیم که شامل ویژگیهایی مثل لیستی از بلاکها، تراکنشهای معلق و سایر عملیات مانند اضافه کردن تراکنش، ماین کردن بلاک و بررسی اعتبار زنجیره باشه. درواقع نیاز به یه کلاس داریم که بیاد و بلاکچینمون رو مدیریت کنه
class Blockchain:
difficulty = 4 # میزان سختی برای ماینینگ بلاک
def __init__(self):
self.chain = [self.create_genesis_block()]
self.pending_transactions = []
def create_genesis_block(self):
# genesis block ایجاد بلاک اول با متود
return Block(0, "0", time.time(), [])
def get_latest_block(self):
#A: دریافت آخرین بلاک در زنجیره
return self.chain[-1]
def add_transaction(self, transaction):
#B: اضافه کردن تراکنش به لیست تراکنشهای معلق یا در تایید انتظار
self.pending_transactions.append(transaction)
def mine_pending_transactions(self):
#C: ماین کردن تراکنشهای معلق و اضافه کردن بلاک به زنجیره
block = Block(len(self.chain), self.get_latest_block().hash, time.time(), self.pending_transactions)
self.mine_block(block)
self.chain.append(block)
self.pending_transactions = []
def mine_block(self, block):
#D: Proof of Work ماین کردن یک بلاک با استفاده از الگوریتم
while block.hash[:self.difficulty] != "0" * self.difficulty:
block.nonce += 1
block.hash = block.calculate_hash()
print(f"Block mined: {block.hash}")
def is_chain_valid(self):
#E: بررسی اعتبار کل زنجیره با مقایسه هشها و هشهای محاسبه شده
for i in range(1, len(self.chain)):
current_block = self.chain[i]
previous_block = self.chain[i - 1]
if current_block.hash != current_block.calculate_hash():
return False
if current_block.previous_hash != previous_block.hash:
return False
return True
ادامه توضیحات کلس BlockChain و نحوه ساخت یه بلاک با تراکنش هاش تو پست بعدی🥸
#blockchain
👍2