<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا کهن</title>
        <link>https://virgool.io/feed/@alirezakohan</link>
        <description>back-end engineer</description>
        <language>fa</language>
        <pubDate>2026-06-16 08:57:47</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/710935/avatar/avatar.png?height=120&amp;width=120</url>
            <title>علیرضا کهن</title>
            <link>https://virgool.io/@alirezakohan</link>
        </image>

                    <item>
                <title>یه موقع هایی دستم به کیبورد نمیره!! (روزمره طوری)</title>
                <link>https://virgool.io/@alirezakohan/%DB%8C%D9%87-%D9%85%D9%88%D9%82%D8%B9-%D9%87%D8%A7%DB%8C%DB%8C-%D8%AF%D8%B3%D8%AA%D9%85-%D8%A8%D9%87-%DA%A9%DB%8C%D8%A8%D9%88%D8%B1%D8%AF-%D9%86%D9%85%DB%8C%D8%B1%D9%87-%D8%B1%D9%88%D8%B2%D9%85%D8%B1%D9%87-%D8%B7%D9%88%D8%B1%DB%8C-v0omundjaanr</link>
                <description>بعضی وقتا دستم به کیبورد نمیره! یعنی حاضرم ساعت ها تویه خونه قدم بزنم، در یخچال و بارها باز و بست کنم، درحالی که میدونم چیزی که میخوام توش نیست، یا اینکه ساعت ها با گوشیم ویدیو ببینم ولی دستم را روی کیبورد نذارم.من کلا آدمیم که قبل از شروع به کاری دوست دارم قبلش تمام وسایل اون کار رو داشته باشم. شاید آدم حرفه ای تویه اون کار نباشم ولی دوست دارم وسیله هام همه حرفه ای باشن!. مثلا یه زمانی دوست داشتم کمپ کنم ولی اول از همه میگفتم خب منکه تویوتا ندارم😄!! بعد فکر میکردم که اگه حتی تویوتا هم بخرم یک ماه طول میکشه تا تجهیزش کنم. سر همین افکار کلا کمپینگ و بیخیال میشدم. ولی انقدرها هم که من موضوع را برای خودم سخت میکردم، سخت نبود.کمپینگ خوب را با یک سری تجهیزات ضرروری و معمولی هم میشه برقرار کرد. ولی این نکته را هم بگم که اخیرا بهتر شدم و با ۲۰۶ رفتم یه کمپینگ با کیفیت و دیدم که حتما نباید تویوتا بخرم! در واقع لوازم واقعی کمپینگ خود طبیعته که وجود داره. درختان، چوب، اکسیژن، کوه و ... که مفت و مجانی در اختیارمونه. همه ی اینارو گفتم که بگم یکی از دلایلی که بعضی وقتا دستم رو کیبورد نرفته همین تجهیزات بوده، مثلا یادمه یه زمانی از لپتاپم خسته شده بودم، یه حس تکراری بهم میداد که نمیتونستم باهاش کد بزنم. یعنی احساس میکردم که اگه یه لپ تاپ جدید با کاتفیگ خفن بگیرم کد تمیزتری مینویسم. ولی خداییش اوایلش این تاثیر را گذاشت (این اصل به SOLID اضافه بشه لطفا😃 - خداروشکر عمو باب اینو نمیبینه!!) - در صورتی که اصل داستان تویه ذهن منه و عملا لپ تاپ با کانفیگ بهتر یک فاکتور میتونه باشه برای بهتر کد زدن برای بهتر پروژه انجام دادن ولی نه همه چیز.خیلی وقتا ددلاین پروژه دارم ولی از اتاقم میام بیرون و ساعت ها با مامانم حرف میزنم. ذهنم تویه اون شرایط میخواد حرف بزنه ولی هیچ دستوری مبنی بر رفتن دست من روی کیبورد نمیده. جالب اینجاست میشینم ساعت ها راجب راه های موفقیت حرف میزنم و در واقع راه موفقیت تویه اتاقمه و در اون لحظه حاضر نیستم دستم روی کیبورد بره.یکی دیگه از دلایلی که دستم رو کیبورد نمیره، ایده آل گرایی و بیش از اندازه فکر کردنه. یعنی انقدر میشینم روی موضوعی فکر میکنم و پلن میچینم که تایم عمل کردن به اون پلن ها رو از دست میدم. فکر کردن خیلی خوبه ولی به اندازه!! به اندازه ای که به شما یه مسیر راه بده. شما تویه مسیر هم فرصت فکر کردن دارید. موضوع پایان نامه من راجب بلاکچین بود. زمانی که استاد راهنما را انتخاب کردم با چند جلسه معاشرت فرمودند: &quot; ۲ تا آدم ایده آل گرا و وسواسی خوردیم به پست هم، خدا به خیر کنه&quot;. از زمانی که ایشون این جمله را گفتن تا زمانی که من دفاع کردم ۳ سال و نیم گذشت!! خیلی وقتا بخاطر اینکه حجم مقاله ها زیاد بود از باز کردن لپ تاپ ترس داشتم. از این موضوع یاد گرفتم که کارهای بزرگ را به کارهای کوچیک تقسیم کنم و انجام بدم.در کل میخواستم بگم که هر کاری و باید تو زمانش انجام داد، ذهن خیلی تلاش میکنه که اونکاری که باید ما انجام بدیم و انجام نده! بعد از ۲۹ سال و اندی این موضوع را فهمیدم که هر کاری تویه زمان خودش ارزشمنده و به مرور زمان از ارزش میافته. تو این مرحله میخواستم راجب راه کارهایی که خودم میکنم تا ذهنم را گول بزنم که بتونم برم سمت کیبورد را بگم، ولی گفتم از کامنتای شما استفاده کنم و به همه بگین که از چه روش هایی استفاده میکنید که این مقاومت را بشکنید.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Sun, 31 Mar 2024 12:56:28 +0330</pubDate>
            </item>
                    <item>
                <title>سویئچ بین نسخه های مختلف php در macOs</title>
                <link>https://virgool.io/@alirezakohan/%D8%B3%D9%88%DB%8C%D8%A6%DA%86-%D8%A8%DB%8C%D9%86-%D9%86%D8%B3%D8%AE%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%AA%D9%84%D9%81-php-%D8%AF%D8%B1-macos-y7ryn8svvxnw</link>
                <description>برای اینکه بتوانید چند نسخه از php را در لپ تاپ مک خود داشته باشید و بین نسخه های متفاوت جابجایی انجام دهید کافیست کارهای زیر را به ترتیب انجام دهید.برای نصب نسخه های مختلف php نیاز است که xcode و پکیج منیجر Homebrew را روی لپ تاپ داشته باشید. اگر ندارید که به صورت زیر میتوانید نصب کنید.xcode-select --install/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;بوسیله کامند زیر میتوانید نسخه brew خود را ببینید.$ brew --version Homebrew 2.2.5سپس با دستور زیر میتوانید یک ریپازیتوری برای پکیج هاتون درست کنید.brew tap exolnet/homebrew-deprecatedحالا میتوانید هر نسخه از php را که خواستید نصب کنید و استفاده کنید.brew install php@5.6brew install php@7.0brew install php@7.1brew install php@7.2brew install php@7.3brew install php@7.4و اکنون با دستورات زیر میتوانید بین نسخه های مختلف php سویئچ کنید...# Switch from 7.4 to 5.6 brew unlink php@7.4brew link php@5.6 --force</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Sun, 23 Apr 2023 12:32:43 +0330</pubDate>
            </item>
                    <item>
                <title>۲ دیدگاه متفاوت در اصل Open / Close</title>
                <link>https://virgool.io/@alirezakohan/%DB%B2-%D8%AF%DB%8C%D8%AF%DA%AF%D8%A7%D9%87-%D9%85%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AF%D8%B1-%D8%A7%D8%B5%D9%84-open-close-kqghe3y5kwmf</link>
                <description> در این مقاله میخواهیم ۲ دیدگاه متفاوت از Robert C Martin و Bertrand Meyer در خصوص اصل Open / Close را بررسی کنیم. 1- Reducing the amount of change(Robert C Martin)2- Backward compatibility (Bertrand Meyer)در ابتدا مختصری راجب اصل Open / Close صحبت کنیم. این اصل میگه:&lt;&lt; ما باید بتوانیم رفتار یک کلاس را تغییر دهیم بدون اینکه سورس کد خود آن کلاس را تغییر بدهیم. &gt;&gt;حالا به بررسی این ۲ دیدگاه بپردازیم. Robert C MArtin میفرمایند که ما باید Opne / Close را رعایت کنیم برای اینکه اون مقدار کدی که باید تغییر کند را کم کنیم.  فرض کنید در شکل بالا ما کلاسی داریم به اسم Strategy که قرار است برای مثال داده ای را به عنوان ورودی دریافت کند و روی این داده عملیاتی را انجام دهد و خروجی های متفاوت به ما بدهد. مثلا یکبار قرار است به صورت json، یکبار به صورت yml خروجی دهد. اگر قرار باشد به صورت xml هم خروجی داشته باشیم باید بیاییم کلاس Strategy را تغییر دهیم، یعنی یک متد به نام xml به کلاس Strategy اضافه کنیم. یعنی برای ایجاد رفتار جدید ما مجبور به دستکاری کلاس Strategy هستیم. این کار اصل Open / Close را نقض میکند. اگر این اصل رعایت نشود یک تغییر موجی ایجاد میشود یعنی ما برای اضافه کردن یک behavior باید کلاس های مختلف را تغییر دهیم و این تغییر به صورت موج در سورس کد و کلاس های ما تاثیر میگذارد.دیدگاه دوم بیان میکند که برای مثال اگر ما نسخه ی جدیدی از packageمون را ارایه میدهیم نباید تغییرات جدید باعث break شدن سایر کدهامون بشه. فرض کنید یک پکیج برای payment نوشتید. در نسخه اول همه چیز به درستی کار میکند. اما به محض تغییرات جدید در نسخه دوم دیگر پکیج ما بصورت صحیح کار نمیکند و اصطلاحا break change کرده و تمام کسانی که از نسخه اول اپلیکیشن یا پکیج ما استفاده کردن با مشکل مواجه شده اند. یک نمونه دیگه Rest Api ها هستن. اگر با Rest Apiها کار کرده باشین دیدین که عملیات Version گذاری انجام میشود. این نوع پیاده سازی بر اساس دیدگاه دوم از Bertrand Meyer است. کسانی که دارند از Version1 استفاده میکنند را نمیتوانیم force کنیم که حتما نسخه اپلیکیشن را به روزرسانی کنند. پس باید Version1 به درستی کار خود را انجام دهد.اما نکته مهمی که وجود دارد این است که موارد استفاده این دیدگاه ها کجاست؟!به صورت کلی میتوان گفت دیدگاه اول  (Robert C Martin) در نرم افزارهای Open Source کاربرد دارد. مثلا یک پکیجی برای laeravel توسعه داده شده و در اختیار Client قرار داده شده است. این نرم افزار باید قابلیت اضافه کردن یا تغییر رفتار (Behavior) بدون اینکه سورس کد یا کلاس های اون پکیج تغییر کند را داشته باشد. از دیدگاه دوم از Bertrand Meyer بیشتر در نرم افزارهای سازمانی استفاده میشود که به صورت تیمی روی نرم افزار کار میشود. در واقع کد من در جاهای مختلف توسط سایر اعضای تیم استفاده میشود. پس نباید تغییر به صورتی باشد که بقیه قسمت های برنامه تحت تاثیر قرار بگیرند و در عملکرد آن ها اختلال بوجود آورد.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Fri, 04 Nov 2022 15:15:40 +0330</pubDate>
            </item>
                    <item>
                <title>چگونه در شرکت دانش بنیان امریه بگیریم؟</title>
                <link>https://virgool.io/@alirezakohan/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AF%D8%B1-%D8%B4%D8%B1%DA%A9%D8%AA-%D8%AF%D8%A7%D9%86%D8%B4-%D8%A8%D9%86%DB%8C%D8%A7%D9%86-%D8%A7%D9%85%D8%B1%DB%8C%D9%87-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-sthej2eiuatj</link>
                <description>در این مقاله میخوام تجربه ی خودمو در خصوص گرفتن امریه در شرکت دانش بنیان باهاتون به اشتراک بگذارم.در ابتدا میخواهم در خصوص مزیت های امریه صحبت کنم. به نظر من ارزش امریه سربازی به کاری است که شما در آن سازمان انجام میدهید. البته باید این مورد را هم ذکر کرد که اهداف افراد مختلف از گرفتن امریه متفاوت است. بر فرض مثال یکسری افراد فقط برای اینکه لباس نظامی به تن نکنند و با موهای بلند و لباس های راحت ۲ سال خدمت را بگذرانند به دنبال گرفتن امریه هستند. اما به شخصه هدف من از گرفتن امریه به روز نگه داشتن دانش، یادگیری، اتلاف نکردن زمان در ۲ سال و ... بود. من به شخصه با رفتن سربازی در محیط پادگان  مخالف بودم و هر کاری برای گرفتن امریه انجام دادم،  از مشاوره های پزشکی برای معافیت تا گرفتن امریه! قبل از اینکه داستان امریه گرفتن در شرکت دانش بنیان را شروع کنم باید بگم که من در یکی از ارگان های دولتی امریه ام مورد پذیرش قرار گرفت اما از آنجایی هدف من از گرفتن امریه کسب دانش بیشتر، به روز بودن بود و موارد دیگر بود آن ارگان را جای مناسبی برای خودم و اهدافم ندیدم و به همین دلیل از رفتن به آن سازمان دولتی منصرف شدم و تصمیم گرفتم در یک شرکت دانش بنیان امریه بگیرم. من در همین زمان با یکی از دوستان و همکاران قدیم که سالهاست از دوستی و همکاری ما میگذرد در این باره صحبت کردم و منو به یک شرکت دانش بنیان معرفی کرد. شرکت دارای سطح بالایی بود و دقیقا همان چیزی بود که من میخواستم. در نهایت در مصاحبه شرکت کردم و قبول شدم.خب بریم سر اصل مطلب برای اینکه شما در یک شرکت دانش بنیان بتوانید امریه بگیرید باید حداقل ۶ ماه در آن شرکت کار کنید ( به شرط رد شدن بیمه) و حداقل ۸۰ امتیاز کسب کنید. این ۸۰ امتیاز شامل موارد مختلفی از جمله کارکرد ماهانه( هر ماه ۷ امتیاز)، میزان فروش شرکت، تاهل و ... میباشد. تا جایی که در خاطرم هست در سال ۱۴۰۰ سه یا چهار دوره امریه شرکت دانش بنیان برگزار میشد و متقاضیان میتوانستند در آن شرکت کنند.اما نکته ی حایز اهمیت این است که آوردن حداقل امتیاز ۸۰ به منزله قبولی ۱۰۰٪ شما نمیباشد زیرا هر دوره ظرفیت مخصوص به خود را دارد. نکته بعدی که میخواستم خدمتتون بگم این است که اگر میخواهید ۱۰۰٪ درخواست امریه شما مورد پذیرش قرار بگیرد حداقل یکسال در شرکت دانش بنیان کار کنید و برایتان سابقه بیمه رد شود.نکته دیگر اینکه سعی کنید در دوره های طلایی( مثل بهمن ماه) اقدام نکنید. زیرا حجم شرکت کننده زیاد میباشد و احتمال رد شدن شما هم بیشتر میشود. ( به دلیل محدودیت ظرفیت).</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Mon, 25 Apr 2022 19:40:47 +0430</pubDate>
            </item>
                    <item>
                <title>پکیج های احراز هویت در لاراول</title>
                <link>https://virgool.io/@alirezakohan/%D9%BE%DA%A9%DB%8C%D8%AC-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2-%D9%87%D9%88%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-rtqfj6oqu8or</link>
                <description>در نسخه ۸ به بعد لاراول تعداد پکیج های مورد استفاده در بحث احراز هویت تنوع بیشتری پیدا کرده است. هر کدام از پکیج هایی که در این مقاله معرفی میکنیم فیچرهای متنوعی دارند که با توجه به نیازتون میتوانید آنها را انتخاب و استفاده کنید.میتوان گفت پکیج Laravel Breeze ساده ترین پکیج احراز هویت لاراول است. این پکیج معمولا مورد استفاده کسانی است که لاراول را به تازگی شروع کرده اند و شامل فیچر های پایه از قبیل لاگین، رجیستر، پسورد ریست، تاییدیه ایمیل و تایید رمز عبور میباشد. این پکیج بر اساس blade است و از Tailwind Css برای استایل دهی آن استفاده شده است.-پکیج Laravel Jetstream کاملترین پکیج احراز هویت لاراول است. این پکیج شامل فیچرهایی از قبیل پنل، Laravel Sanctum ( احراز هویت بوسیله ی api ) و ... میباشد. لازم به ذکر است این پکیج تمام امکانات پایه جهت احراز هویت از قبیل لاگین، رجیستر و ... را نیز شامل میشود. این پکیج معمولا برای پروژه های بزرگ که نیاز به سیستم های احراز هویت بزرگ دارند استفاده میشوند.نکته: Laravel Jetstream فقط با Livewire و Inertia کار میکند.نکته: Laravel Jetstream دارای کامپوننت های آماده برای فرانت میباشد که میتوانید برای طراحی صفحات از آن استفاده کنید.پکیج Laravel Fortify شامل همان امکانات Laravel Jetstream میباشد با این تفاوت که قالب ها و کامپوننت های فرانت را ندارد و صرفا امکانات backend پکیج Laravel Jetstream را در اختیار ما قرار میدهد.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Sun, 13 Mar 2022 15:02:19 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی شبیه ساز بلاکچین (بیت کوین)!</title>
                <link>https://virgool.io/@alirezakohan/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%B4%D8%A8%DB%8C%D9%87-%D8%B3%D8%A7%D8%B2-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-ud9ymwlb25pm</link>
                <description>سلام دوستان:من یه سره میرم سر اصل داستان!!برای نوشتن پایان نامه ام در زمینه سیستم های مبتنی بر بلاکچین نیاز داشتم شبیه سازی و پیدا کنم که آزمایشات را بر روی آن انجام دهم و سپس بررسی و ارزیابی های لازم از نتایج آزمایشات را داشته باشم. از این که موضوع پایان نامه من چی هست و اینکه میخواستم چکار کنم بگذریم... شاید در مقالات بعدی راجبش صحبت کردم!اگر میخواهی تا حد زیادی متوجه عملکرد شبکه های مبتنی بر بلاکچین بخصوص بیت کوین بشی کافی این شبیه ساز که با جاوا اسکریپت نوشته شده است را کلون بگیری و ازش روی مرورگر خودت استفاده کنی.گیت هاب:   https://github.com/simewu/blockchain-simulator هدف من از معرفی این شبیه ساز این است که با داغ شدن موضوع ارزهای دیجیتال متخصصان غیر متخصصی در این حوزه مثل قارچ  سبز شده اند که حتی نمیدانند ارزهای دیجیتال یا بهتر بگم سیستم های مبتنی بر بلاکچین چگونه کار میکنند. این شبیه ساز میتونه برای این دوستان کمک باشه که تا حدی با این سیستم ها آشنا بشوند. البته این شبیه ساز بسیار برای دانشجویانی که موضوع پایان نامه ی آنها بلاکچین است هم می تواند مفید باشد.از مزیت های این شبیه ساز اینکه شما میتوانید به صورت گرافیکی توپولوژی و نحوه اتصال نود ها را تنظیم و مشاهده کنید. نمایی از شبیه سازشاخص های متنوعی در این شبیه ساز وجود دارد که امکان تنظیم کردن آن ها وجود دارد. برای مثالdifficulty-levelPower (H/s)Latency (ms)Downlink (MBps)Uplink (MBps)In peersOut peersBlock heightTotal blocksStale blocksMax fork lengthBlock Sizeنحوه کار با شبیه ساز آسونه و کار چندانی نداره برای همین توضیحی راجبش نمیدم. میتونید فایل README.md را هم مطالعه کنید.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Tue, 20 Jul 2021 18:03:18 +0430</pubDate>
            </item>
                    <item>
                <title>دو بار خرج کردن در بلاکچین (بیت کوین)</title>
                <link>https://virgool.io/@alirezakohan/%D8%AF%D9%88-%D8%A8%D8%A7%D8%B1-%D8%AE%D8%B1%D8%AC-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%B1-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-apsh15yjldau</link>
                <description>در این بخش به مشکلاتی از قبیل حمله 51% و دوبار خرج کردن در شبکه بلاکچین می پردازیم.حمله 51% یعنی 51 %قدرت استخراج شبکه دست یک گروه خاص باشد. قاعدتا در بیشتر موارد این گروه می توانند بلوک بیشتر ی را نسبت به دیگران استخراج کنند. این گروه همچنین میتوانند شخصی را بلاک و از شبکه خارج کنند. فرض کنید شخص A میخواهد به شخص B پولی را منتقل کند. با توجه به اینکه تراکنش ها قبل از ثبت در بلاک‌های زنجیره بلاکچین در حافظه استخر (mempool) ذخیره میشوند، گروه 51 %تصمیم میگیرد که تراکنش شخص A از حافظه استخرحذف شود و در بلاک ثبت نشود. در نتیجه تراکنش برای شخص A انجام نمیگیرد. در اینجا مشکل دوبار خرج کردن (double-spending) بوجود می آید. در نظر بگیرید گروه 51%کالایی را با بیت کوین خریداری کرده است و در بلاک بعد ی نیز این پول را برای بار دوم خرج می کند. برای بار اول پول را خرج کرده و کالا را نیز در یافت کرده است و با توجه به اینکه این گروه قدرت بالای استخراج را در اختیاردارد بلاک قدیمی را غیرمعتبر می کند و بلاک جدید را جایگزین می کند و در نهایت یک پول را دو بار خرج کرده است.دوبار خرج کردن (double-spending) در بلاکچینشکل زیر را در نظر بگیرید. فرض کنید 70 %شبکه در دست گروهی باشد و مابقی شبکه بین ماینرهای دیگرتقسیم شده است. با توجه به اینکه 70 % درصد شبکه دست گروه خاصی می باشد در نتیجه می توانند بلاک‌های بیشتری را در یک زمان معین نسبت به 30 %شبکه تولید کنند در نتیجه حتی اگر بلاک های غیرمعتبر نیز تولید کنند شبکه بلاکچین در نهایت زنجیره طولانی تر را می پذیرد.قدرت استخراج در شبکه بلاکچین بیت کوین</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Sun, 28 Mar 2021 23:45:31 +0430</pubDate>
            </item>
                    <item>
                <title>واژه ‏ها و اصطلاحات فني و تخصصی بلاکچین</title>
                <link>https://virgool.io/@alirezakohan/%D9%88%D8%A7%DA%98%D9%87-%D9%87%D8%A7-%D9%88-%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%D9%81%D9%86%D9%8A-%D9%88-%D8%AA%D8%AE%D8%B5%D8%B5%DB%8C-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-pfwvvxdzrrsm</link>
                <description>                                                                        Bitcoin:اولین بلاکچین ایجاد شده که در سال 2009 اولین بلوک آن استخراج شد و امکان تراکنشهای مالی بدون واسطه را   فراهم آورد. ارز دیجیتال زنجیره نیز به همین نام است.                                                                        Block:مجموعه ای از تراکنشهای ارسال شده در هر شبکه که پس از تایید توسط استخراج کنندگان به زنجیره اضافه   میشوند.                                                                  Blockchain:دفتر کل توزیع شده که تاریخچه تمام تراکنش های انجام شده را در خود نگهداری میکند.                                                             Blockchain Bloating:افزایش حجم غیرمتعارف بلاکچین به علت نگهداری بیش از اندازه اطلاعات.                                                                     Consensus:تایید یک بلوک توسط اکثریت اعضای یک بلاکچین.                                                              Consortium Blockchain:شبکه ای متشکل از چند بلاکچین خصوصی.                                                                  Cryptocurrency:ارزهای دیجیتالی که متعلق به کشور خاصی نبوده و مرز جغرافیایی نمیشناسند.                                                                   Cryptography:رمزنگاری استفاده از تکنیک‌های  ریاضی، برای برقراری امنیت   اطلاعات است.   دراصل رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است، به صورتی که تنها شخصی که از   کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمز شده باشد   و شخصی که از یکی یا هر دوی آن‌ها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا   کند.                                                                       etherume:یک بلاکچین عمومی متن باز که قابلیت اجرای قرادادهای هوشمند و برنامه های کاربردی توزیع شده را دارد.                                                                    Genesis Block:اولین بلاک تایید شده در شبکه بلاکچین.                                                                Gossiping PROTOCOL:پروتکل Gossip یا پروتکل شایعه به منظور ارتباط بین ماشین هایی که در کلاستر های مختلف در حال سرویس دهی هستند بکار می رود به جهت اینکه سرویس دهنده ها   آخرین وضعیت خود را به دیگران اطلاع دهند و همچنین از آخرین وضعیت دیگر سرور ها با خبر باشند تا بتوانند اطلاعات خود را با یکدیگر سازگار کنند.                                                                 Hash Function:تابع درهم سازی یک تابع ریاضی یک طرفه که حجم نامشخصی از داده را به یک عدد طبیعی تبدیل کند.                                                                       Litecoin:لایت کوین یکی از قدیمی‌ترین کوین‌های موجود در بازار کریپتوکارنسی‌ها است. لایت کوین را باهدف تکمیل بیت کوین و حل برخی از مشکلات مانند مدت‌زمان تراکنش‌ها، هزینه‌ها و استخرهای متمرکز ماینینگ طراحی کرد.                                                                      Mempool:تراکنش ها قبل از ثبت در زنجیره بلاک ها در این حافظه نگهداری می شوند.                                                                     Merkle Tree:نوعی ساختار داده که خلاصه اطلاعات یک داده بزرگتر را در خود جای داده است و برای تشخیص محتویات آن به کار میرود.                                                                      Miners:یا استخراج کنندگان، که وظیفه تایید تراکنشهای ارسال شده در زنجیره را بر عهده داشته و در ازای هر تایید از طرف شبکه پاداش دریافت میکنند.                                                                   Mining Pools:گروهی از افراد که با کمک یکدیگر به استخراج پرداخته و در صورت بردن جایزه آن را بین خود تقسیم میکنند.                                                               Private Blockchain:زنجیره خصوصی که فقط افراد مشخصی (مثلا کارمندان یک شرکت) امکان اتصال به آن را دارند.                                                                  Proof of Stake:الگوریتمی که اعتبار سنجی بلوکها را به سهام داران بیشتر شبکه واگذار میکند. منطق به وجود آمدن این روش   تمایل کمتر کسانی که سهام بیشتری دارند در صدمه زدن به شبکه است.                                                                   Proof of Work:الگوریتم اثبات کار که به منظور تایید تراکنش های درست و جلوگیری از حملات DoS در بیتکوین و برخی   بلاکچینها مورد استفاده است.                                                                Public Blockchain:بلاکچینی عمومی که هر فردی امکان اتصال آن به آن را دارد.                                                                        Ripple:ریپل هم   یک پلتفرم است و هم یک ارز دیجیتال، این فناوری بیشتر به دلیل شبکه‌ی پرداخت دیجیتال‌اش شناخته‌شده   است اما دارای کریپتوکارنسی مختص به خود نیز هست.                                                                 Smart Contracts:قراردادهای هوشمند کدهایی هستند که در لایه منطق داده اجرا میشوند، می توانند دیگر قراردادها را بخوانند و   تصمیم بگیرند. تبادل اتر داشته باشند و قرارادادهای دیگر را نیز اجرایی سازند.                                                                      Timestamp:مجموعه ای از کاراکترها یا داده های کدگذاری شده که مشخص میکند یک اتفاق در چه زمانی به وقوع پیوسته است.                                                                      Transaction:درخواست ارسال شده از هر نود در زنجیره که با توجه به هر زنجیره اطلاعات مختلفی از قبیل آدرس فرستنده، گیرنده و ... را در بر دارد.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Wed, 24 Mar 2021 17:08:24 +0430</pubDate>
            </item>
                    <item>
                <title>بیت کوین و قورت بده!</title>
                <link>https://virgool.io/@alirezakohan/%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-%D9%88-%D9%82%D9%88%D8%B1%D8%AA-%D8%A8%D8%AF%D9%87-s76fqgkmimjl</link>
                <description>همانطور که میدانیم امروزه معاملات و تبادل پول بوسیله شخص سوم که همان بانک ها می باشند صورت میگیرد. به عنوان مثال وب سایت آمازون بر ای فروش یک محصول پس از تاییدیه پرداخت توسط بانک مبنی بر پرداخت وجه توسط مشتری، جنس خود را برای سفارش دهنده ارسال میکند. در حقیقت مشتری پول را از طریق درگاه بانکی ارسال میکند و بعد از واریز پول، شرکت آمازون از بانک تاییدیه پرداخت میگیرد و در نهایت جنس را برای مشتری ارسال میکند. در حقیقت در این معامله بانک شخص سوم است. اما در روش پرداخت با ارز دیجیتال مبتنی بر بلاکچین همچین اتفاقی نمی افتد و فروشنده و خریدار به صورت مستقیم و بدون واسط با همدیگر در ارتباط هستند. در حقیقت می توان گفت که نسخه ی کامل فرد به فرد از پول الکترونیکی، ارسال مستقیم پرداختهای آنلاین از یک شخص به شخص دیگر را بدون نیاز به گذر از موسسه مالی مقدور می‌سازد. همانطور که میدانید پشتوانه پول دلار یا طلا است و پشتوانه ارزهای دیجیتال به عنوان مثال بیت کوین استخراج کردن، الگوریتم و اعتماد است. حال اگر در سیستم سنتی پرداخت که نهادهای مالی به عنوان سوم شخص و رگولاتور عمل می‌کنند گذر کنیم و بخواهیم یک سیستم پرداخت فرد به فرد را داشته باشیم سوالاتی از قبیل اصل بودن سکه و غیرقابل ویرایش بودن معاملات در این حوزه شکل میگیرد. برای پاسخگویی به این سوالات دو موضوع مطرح است:هش (Hash)امضای دیجیتال (Digital signatures)تمامی بلوک های زنجیره بلاکچین توسط هش با همدیگر در ارتباط می باشند و کسی که قصد تغییر اطلاعات در قسمت خاصی از ساختار بلاکچین را داشته باشد باید قدرت ماین کردن و تغییر هش سایر بلاک های شبکه را داشته باشد تا بتواند واقعیتی را در شبکه تغییر دهد که در شبکه های بزرگ این کار تقریبا غیر ممکن است. در تعریف ساده ی امضای دیجیتال میتوان گفت یک پیام با کلید خصوصی امضا میشود. حال با استفاده از کلید عمومی میتوانیم متوجه شویم که امضا واقعا از سمت یک شخص که کلید خصوصی را در اختیار دارد ارسال شده است و معتبر است.این شبکه تا زمانیکه نودهای درستکار قدرت پردازش بیشتری از شبکه، نسبت به هر گروه مهاجمی، را در اختیار داشته باشد قابل اعتماد است. ارزهای رمزنگاری شده در یک شبکه باز مالی فعالیت میکنند، که مفهوم جدیدی از اعتماد را ایجاد کرده اند و با الگوریتم های اجماع کار می کنند و مرز های جغرافیایی را نمی شناسند. همچنین تاریخچه تراکنش های انجام شده قابل تغییر نیست. به این ارزها پول قابل برنامه ریزی (Programmable Money) نیز گفته می شود. این ارزها قابل جعل شدن نیستند و به منظور حفظ ارزش خود در طولانی مدت، مقدار محدود و مشخصی دارند. این ارزها در بستر بلاکچین فعالیت میکنند و متعلق به هیچ کشور یا دولت خاصی نیستند.ساتوشی ناکاماتو در مقاله منتشر شده خود در سال 2008 اظهار داشت تکنولوژی بلاکچین یک جایگزین مناسب برای از بین بردن واسطه ها است. بلاکچین در واقع یک دفتر کل توزیع شده(Distributed Ledger) است که با ذخیره سازی تاریخچه تراکنش های انجام شده، امکان تکذیب هر عملیات انجام شده ای را از بین می برد. اولین بلاک ارسالی در شبکه، بلوک پیدایش(Genesis block) نام دارد. دیگر بلوکهای ارسالی در شبکه به ترتیب به یکدیگر متصل شده و تشکیل یک زنجیره میدهند.هر بلوک ارسالی دارای یک سرتیتر(Header) می باشد که در آن هش نوشته میشود. تمام داده های ارسالی در شبکه رمزنگاری میشود. در هر زنجیره اطلاعات نوشته شده در بلوکها و سرتیتر آنها با توجه به هدف ایجاد آن بلاکچین متغیر است. هنگامی که یک بلوک توسط اکثریت شبکه پذیرفته میشود، مهر زمان(Timestamp) آن لحظه بر روی بلوک ثبت میشود. برای حفظ ترتیب بلوکها در زنجیره، و تثبیت وجود اطلاعات هر بلوک در زمانی خاص، در هش هر بلوک برچسب زمان بلوک قبلی نیز نوشته میشود. با انجام این کار نودها یک مقدار پول را نمیتوانند دو بار خرج (Double Spending)کنند.دیگر اعضای مهم هر بلاکچین ماینر(Miner) یا استخراج کنندگان هستند که وظیفه تایید تراکنشهای ارسال شده در زنجیره را بر عهده داشته و در ازای هر تایید از طرف شبکه پاداش دریافت میکنند. هر تراکنش ارسال شده در شبکه علاوه بر هش خود بلاک، هش بلاک قبلی و یک نانس که توسط استخراج کننده محاسبه میشود را در بر دارد. در واقع وظیفه ماینرها پیدا کردن عدد برای نانس(Nonce) است که با آن تعداد معینی بیت صفر در سمت چپ مقدار هش شده بلوک به وجود بیاید. تعداد بیتهای صفر لازم، سختی شبکه(Difficulty) نامیده شده. ماینرها باید به روش brute force به این مقدار دست یابند که کاری بسیار زمانبر و هزینه بر است.با افزایش ماینرهای شبکه، افرادی به استخراج گروهی پرداخته و استخر استخراج(Mining Pool) تشکیل داده­اند. اولین نودی که بتواند به هش درست دست یابد آن را به همه دیگر نودها پخش کرده و دیگران آن را بررسی و در صورت صحیح بودن به زنجیره خود اضافه میکنند. این کار اجماع نامیده میشود. استخراج کننده هر بلوک از خود شبکه بیتکوین پاداشی دریافت میکند. یعنی به ازای هر استخراج انجام شده در شبکه تعداد معینی سکه(Coin) به شبکه اضافه میشود. به این ترتیب انگیزه لازم برای افراد جهت مشارکت در شبکه و تایید تراکنشهای دیگران به وجود می آید. تعداد سکه های پاداش به منظور تثبیت تعداد سکه ها و حفظ ارزش هر سکه، به مرور زمان کاهش می یابد.به طور خلاصه شبکه بیتکوین به صورت زیر فعالیت میکند:تراکنش جدید به تمام نودها پخش میشود.هر نود تعدادی تراکنش را در حافظه mempool خود جمع آوری کرده و تشکیل یک بلوک میدهد.هر نود برای پیدا کردن نانس و حل سختی شبکه تلاش میکند.زمانیکه نودی به هش درست رسید آن را در شبکه همه پخشی میکند.نودها در صورتیکه تراکنشهای آن پیشتر تایید نشده باشد، آن بلوک را میپذیرند.نودها بلوک تایید شده را به زنجیره موجود اضافه می کنند و در سیستم خود نشان میدهند.در شبکه بلاکچین همیشه طولانی ترین زنجیره به عنوان زنجیره اصلی در نظر گرفته میشود. در حالتی که دو نود به نسخه های متفاوتی از بلوک بعدی دست یابند نودها اولین پاسخ دریافتی را به عنوان زنجیره در نظر گرفته ولی دیگری را نیز ذخیره نگه میدارند، پس از تایید بلوک بعدی زنجیره طولانی تر را تمام شبکه به عنوان زنجیره درست در نظر میگیرند. برای تایید یک تراکنش لازم نیست تمام نودها آن را دریافت کنند، با تایید تراکنش توسط اکثریت شبکه آن تراکنش تایید میشود. همچنین ممکن است نودی بلوکی را دریافت نکرده باشد که با دریافت بلوک بعد از آن، تمام بلوکهای جا مانده را نیز به نسخه موجود در سیستم خود اضافه میکند.درخت مرکل یک روش نگهداری خلاصه اطلاعات خیلی بزرگ در مقیاس کوچک است. در این ساختار نگهداری داده، اطلاعات هر برگ، پس از هش شدن با برگ کناری تلفیق شده و به سطح بالاتر ارسال می شوند تا به ریشه درخت مرکل(Merkle Root) برسیم. از این روش برای اطلاع از تغییرات در معاملات سیستم های ذخیره سازی بزرگ میتوان استفاده کرد. هر تغییر هرچند کوچک در یک برگ در ریشه درخت نمود پیدا میکند. و به این ترتیب با پیمودن برگ تا ریشه میتوان داده دستکاری شده را یافت.نگهداری خلاصه ای از حجم زیادی از اطلاعات توسط درخت مرکلدر سیستم های بلاکچین به منظور حفظ اطلاعات شخصی افراد، اعتبارسنجی فرستنده و عدم انکار تراکنش توسط فرستنده بر خلاف سیستم های قدیمی تر که اطلاعات خصوصی افراد را ذخیره میکنند از رمزنگاری تمام تراکنش ها استفاده می شود. تمام افراد شبکه میتوانند انتقال پول از نودی به نود دیگر را مشاهده کنند، ولی چون از کلید خصوصی دیگران مطلع نیستند، نمیتوانند تراکنشها را به افراد واقعی ارتباط دهند.برای استخراج بلوکها در بلاکچینهای مختلف از الگوریتم های متفاوتی استفاده می شود. در بلاکچین بیتکوین الگوریتم اثبات کار(PoW) استفاده می شود، در این روش تمامی نودها باید به محاسبه هش بپردازند، که از لحاظ زمانی و انرژی بسیار هزینه بر است. به منظور ذخیره انرژی در مدل فوق، الگوریتم اثبات سهام(PoS) پیشنهاد شد که در این مدل افرادی با دارایی های بیشتر به تصدیق تراکنش ها بپردازند. زیرا افراد با دارایی های بیشتر، تمایل کمتری برای حمله به شبکه را دارند.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Sun, 21 Mar 2021 14:05:07 +0330</pubDate>
            </item>
                    <item>
                <title>مفاهیم و کاربردهای شبکه های بلاکچین</title>
                <link>https://virgool.io/@alirezakohan/%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-jla3qnb4zuc1</link>
                <description>در این مقاله به توضیح مفاهیم کلی شبکه های بلاکچین و کاربردهای آنها پرداخته شده است. بلاکچین از امیدوار کننده ترین فناوری های دهه گذشته است که پتانسیل حل چندین مسئله در اکوسیستم های توزیع شده و همتا به همتا را دارد. بلاکچین یک محیط قابل اعتماد برای انجام تراکنش ها بدون تکیه به هر نوع واسطه را فراهم می کند.مشکلات موجود در ارزهای فیات (ارز های مربوط به کشورها مثل دلار و یورو و ...)، تاخیرات ناشی از انتقال، حق الزحمه بالای انتقال دهندگان و دیگر محدودیت ها، عامل به وجود آورنده اولین زنجیره بلوکی به نام بیتکوین و ارزهای رمزنگاری شده است. بیتکوین، که نمونه موفق یک شبکه غیرمتمرکز است.یک بلاکچین یک لیست در حال رشد از سوابق است که بلوک نامیده می شود و با استفاده از رمزنگاری مرتبط می شوند.هر بلوک حاوی یک هش رمزنگاری از بلوک قبلی، یک نشانگر زمانی(Timestamp) و داده های تراکنش است. بلاکچین این روزها بسیار زیاد است و دلیل اصلی آن این است که ستون فقرات ارز رمز مشهور جهان یعنی بیت کوین می باشد. بسیاری از دولت ها و بانک های پیشرو تصمیم گرفته اند بسیاری از معاملات متعارف خود را بر اساس مفهوم بلاکچین انجام دهند. کاربردها و پتانسیل های این چارچوب بسیار زیاد است که باعث می شود نحوه انجام معاملات در حوزه های مختلف تغییر کند.ساختار زنجیره بلاکچینبلاکچین شبکه­ ای متشکل از نودهاست که اطلاعات تمام تراکنش های انجام شده روی بلاک های زنجیره ذخیره می شود. چهار ویژگی اصلی آن عبارتند از غیر متمرکز بودن(Decentralization)، پایداری شبکه(Persistency)، ناشناس بودن(Anonymity) و امکان حسابرسی(Auditability). با توجه به نوع و میزان دسترسی نودها انواع مختلف شبکه بلاکچین در سه دسته بلاکچین عمومی(Public)، بلاکچین کنسرسیوم(Consortium) و بلاکچین خصوصی(Private) تعریف می شود. در بلاکچین عمومی تمام نود ها قابلیت خواندن و شرکت در اجماع(Consensus) برای تولید یک بلاک را دارند. در این نوع شبکه قابلیت دستکاری و تغییر داده ها تقریبا غیر ممکن است. دیگر انواع بلاکچین جهت رسیدن به اهدافی چون کارایی بالاتر و محدود کردن قابلیت خواندن و تغییر داده ها با تعیین انواع دسترسی تعریف می شوند. با توجه به غیر متمرکز بودن شبکه، همیشه از بلاکچین به عنوان شبکه ای امن یاد می شود که حتی در صورت بروز خطا در بخشی از آن، اکثریت درست شبکه به تصحیح آن می پردازد. در سیستم های توزیع شده و یا غیرمتمرکز برای رسیدن به یک توافق جمعی از الگوریتم های اجماع استفاده میشود.بارزترین خصیصه رویکرد مبتی بر بلاکچین ایجاد روابط بین افراد، بدون نیاز به یک عامل مرکزی مورد تایید طرفین است. از کاربردهای کلی بلاکچین میتوان به موارد زیر اشاره کرد:رمز ارزها (Cryptocurrency)بهداشت و درمانبیمهاتومبیلدولت هابرقراری ارتباط امن در دستگاه های موجود در اینترنت اشیا (Internet of Things)پیگیری چرخه حیات (Life Cycle) تولید یک محصولارائه گواهینامه برای اشخاص و یا سازمان ها به صورت شفاف و قابل مشاهده برای دیگرانشبکه های مدیریت انرژیرای گیری مبنی بر بلاکچینحل مشکلات کپی رایت و حق نشر محصولات در فضای مجازی (Virtual Products)ذخیره سازی اطلاعات و داده ها [12]در مقاله های بعدی بیشتر وارد جزییاتی مانند الگوریتم های اجماع، نحوه کارکرد و مفاهیم می شویم.</description>
                <category>علیرضا کهن</category>
                <author>علیرضا کهن</author>
                <pubDate>Fri, 12 Mar 2021 12:38:29 +0330</pubDate>
            </item>
            </channel>
</rss>