<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mehran Kazeminia</title>
        <link>https://virgool.io/feed/@info.kazeminia</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-07 09:47:25</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/66466/avatar/pspnXz.png?height=120&amp;width=120</url>
            <title>Mehran Kazeminia</title>
            <link>https://virgool.io/@info.kazeminia</link>
        </image>

                    <item>
                <title>یک «بلاکچین هوشمند» با سالیدیتی بسازید، و ببینید چگونه از«دوبار خرج کردن» جلوگیری می کند. - «بخش سوم: اضافه کردن فانکشن های جدید و تکمیل قرارداد»</title>
                <link>https://virgool.io/@info.kazeminia/%DB%8C%DA%A9-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%A8%D8%A7-%D8%B3%D8%A7%D9%84%DB%8C%D8%AF%DB%8C%D8%AA%DB%8C-%D8%A8%D8%B3%D8%A7%D8%B2%DB%8C%D8%AF-%D9%88-%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D8%AF-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2%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%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-%D8%A8%D8%AE%D8%B4-%D8%B3%D9%88%D9%85-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%A7%D9%86%DA%A9%D8%B4%D9%86-%D9%87%D8%A7%DB%8C-%D8%AC%D8%AF%DB%8C%D8%AF-%D9%88-%D8%AA%DA%A9%D9%85%DB%8C%D9%84-%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF-cx1wrwzlarkj</link>
                <description>Build a &quot;Smart Blockchain&quot; with SolidityUnderstanding &quot;Smart Blockchain&quot; by codingگام سوم - اضافه کردن فانکشن های جدید و تکمیل قراردادبرای تکمیل قرارداد، پنج فانکشن جدید به قرارداد مرحله دوم اضافه می کنیم. نام قرارداد ما در مرحله سوم SmartCreator103.sol است. توجه کنید که اطلاعات همه تراکنش ها، بالانس همه حساب ها و اطلاعات مهم دیگری در این قرارداد ذخیره می شوند. پس به همین دلیل سه تا از فانکشن های جدید از نوع view هستند و عملکرد آنها صرفا برگرداندن اطلاعات ذخیره شده در قرارداد است. ضمنا دو فانکشن دیگر نیز امکان فروش توکن ها براساس اتر را فراهم می کنند. در ادامه شرح مختصری از عملکرد این پنج فانکشن جدید را مطالعه کنید. شما می توانید همه کدهای این مقاله را از اینجا دانلود نمایید.همانطورکه قبلا ملاحظه کردید؛ آدرس هایی که حداقل یکبار آکا توکن برای آنها ارسال شده است، به عنوان عضو شناخته می شوند و اطلاعات کامل حسابشان ( بالانس و ...) برای همیشه ذخیره شده و آپدیت می شود. حالا اگر یکی از اعضا، فانکشن myAccountInformation را کال کند، بدون پرداخت هزینه gas می تواند، بالانس حساب خودش، زمان عضو شدن خودش، زمان آخرین ارسال توکن توسط خودش و .... را دریافت کند.اما فانکشن systemInformation را هر آدرس شبکه اتریوم می تواند کال کند. این فانکشن اطلاعات کلی از وضعیت توکن ها را بر می گرداند. یعنی به ترتیب؛ نام و سمبل توکن ها، تعداد کل توکن ها، قیمت فروش توکن براساس اتر(Wei)، موجودی آدرس قرارداد بر اساس اتر، تعداد کل اعضاء و حتی تعداد کل تراکنش های انجام شده را بر می گرداند.فانکشن lastBlock را نیز هرآدرس شبکه اتریوم می تواند کال کند. این فانکشن اطلاعات آخرین تراکنش انجام شده را بر می گرداند.فانکشن buyTokens از نوع payable است. هر آدرسی می تواند این فانکشن را اجرا کند و با پرداخت اتر، تعدادی آکا توکن خریداری کند. البته همانطور که می دانید از ابتدا همه آکا توکن ها درحساب owner هستند و آدرس قرارداد، توکنی ندارد. این فانکشن پس از کنترل های لازم برای این تراکنش، ابتدا اتر را از مشتری دریافت می کند و به آدرس قرارداد واریز می نماید و سپس آکا توکن ها را از آدرس owner به آدرس مشتری ترانسفر می کند.اما فانکشن payToOwner فقط می تواند توسط owner اجرا شود. اگر با فروش آکا توکن ها، مقداری اتر در آدرس قرارداد جمع شود، owner می تواند این فانکشن را اجرا کند. با اجرای این فانکشن، همه اترهای جمع شده در آدرس قرارداد، به آدرس owner انتقال می یابد.تست قرارداد SmartCreator103.solشما می توانید دقیقا مانند مراحل قبلی، فایل SmartCreator103.sol را نیز روی شبکه تست Rinkeby دیپلوی کنید و این پنج فانکشن جدید را هم تست کنید. فقط هنگام تست فانکشن buyTokens توجه داشته باشید که در کدهای این قرارداد به عنوان پیش فرض، قیمت هر آکا توکن برابر 1e12 wei در نظر گرفته شده است. از طرف دیگر در این قرارداد مقدار decimals برابر صفر است و هیچ کسری برای آکا توکن تعریف نشده است. پس مبلغ پرداختی براساس wei حتما باید مضرب 1e12 باشد. در غیر اینصورت فانکشن buyTokens اجرا نمی شود.خلاصه و جمع بندی:فایل SmartCreator101.sol یک قرارداد هوشمند است که مطابق استاندارد ERC20 توکن تولید می کند.فایل SmartCreator102.sol یک قرارداد هوشمند دیگر است که علاوه بر تولید توکن های ERC20 ، تمام مشخصات تراکنش ها و مشخصات حساب اعضا را ذخیره می کند. ضمن این که این قرارداد می تواند راستی آزمایی تراکنش توکن های خودش را انجام دهد، و اجازه دوبار خرج کردن را به هیچکس نمی دهد. به عبارت دیگر این قرارداد برای راستی آزمایی تراکنش ها، احتیاجی به خدمات ماینرهای شبکه اتریوم ندارد. منطق ریاضی کدهای این قرارداد، بسیار محکمتر از منطق انواع مکانیسم های اجماع است و دفتر کل این قرارداد هوشمند، کاملا قابل اطمینان می باشد.فایل SmartCreator102x.sol همان قرارداد قبلی است ولی با این تفاوت که هنگام تراکنش سوم، مبلغ تراکنش را دوبار به گیرنده ارسال می کند. این کار صرفا برای شبیه سازی دوبار خرج کردن، انجام شد. البته دیدیم که بلافاصله در تراکنش چهارم، قرارداد توانست خطا یا تقلب انجام شده را شناسایی کند و بالانس همه حساب ها را به وضعیت صحیح تغییر دهد.فایل SmartCreator103.sol نسخه نهایی این قرارداد هوشمند است. این قرارداد، پنج فانکشن بیشتر از قرارداد مرحله دوم دارد و با این فانکشن ها، امکانات جدیدی به قرارداد اضافه شده است.همه فایل های مقاله را می توانید از اینجا دانلود کنید و تست های بیشتری را انجام دهید.کلام آخرمحدودیت های قراردادهای هوشمند اتریوم بسیار زیاد هستند و معمولا برای کاربردهای دیگری استفاده می شوند. ولی با این حال ما توانستیم قرارداد هوشمندی را روی این شبکه دیپلوی کنیم که بتواند تراکنش های نامعتبر را شناسایی کند. البته امیدواریم که بلاکچین های آینده از همان ابتدا برای استفاده از قراردادهای BPSC ( قراردادهای هوشمند سازنده بلاک) برنامه ریزی شوند و این نوع قراردادهای هوشمند بتوانند جایگزین بسیار ارزانی برای روش های فعلی باشند. ما قبلا در مقاله دیگری پیشنهاد «بلاکچین هوشمند» را برای بلاکچین های آینده بررسی کرده ایم.متاسفانه درحال حاضر ماهیانه دهها میلیون دلار هزینه برق مصرفی ماینرها و سازندگان بلاک است و بخش بزرگی از این هزینه سرسام آور، مربوط به کنترل دوبار خرج کردن رمزارزها و توکن ها با استفاده از مکانیسم های اجماع است. از طرفی مشکلات محیط زیستی روش های فعلی، قابل چشم پوشی نیست. به همه این دلایل ما فکر می کنیم که «بلاکچین هوشمند» می تواند گام مهمی برای توسعه پایدار تکنولوژی بلاکچین باشد. اگر به موضوع علاقه مند شدید، می توانید مقاله های قبلی ما را نیز مطالعه کنید. ضمنا اگر سوالی دارید و یا در این مقاله ابهام و خطایی دیدید، لطفا به ما اطلاع دهید.Somayyeh GholamiMehran KazeminiaCambridge Bitcoin Electricity Consumption Index</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Thu, 08 Oct 2020 12:58:40 +0330</pubDate>
            </item>
                    <item>
                <title>یک «بلاکچین هوشمند» با سالیدیتی بسازید، و ببینید چگونه از«دوبار خرج کردن» جلوگیری می کند. - «بخش دوم: توسعه قرارداد هوشمند ERC20»</title>
                <link>https://virgool.io/@info.kazeminia/%DA%A9-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%A8%D8%A7-%D8%B3%D8%A7%D9%84%DB%8C%D8%AF%DB%8C%D8%AA%DB%8C-%D8%A8%D8%B3%D8%A7%D8%B2%DB%8C%D8%AF-%D9%88-%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D8%AF-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2%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%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-erc20-swfd9nytqp4g</link>
                <description>Build a &quot;Smart Blockchain&quot; with SolidityUnderstanding &quot;Smart Blockchain&quot; by codingگام دوم - توسعه قرارداد ERC20همانطورکه در بخش اول گفته شد ما می خواهیم از بدو تولد توکن ها؛ علاوه بر اطلاعات تراکنش ها، سوابق همه آدرس هایی که حداقل یکبار «آکا توکن» دریافت کرده اند را ذخیره کنیم. به این ترتیب در طول زمان می توانیم با استفاده از مشخصات تراکنش ها، بالانس همه حساب ها را محاسبه نماییم. ضمنا خواهید دید که با استفاده از همین اطلاعات ذخیره شده، راستی آزمایی تراکنش ها و حل مشکل دوبار خرج کردن هم به سادگی انجام می شود. پس در این مرحله ما به استرات ها، مپینگ ها و محاسبات جدیدی نیاز داریم. از طرفی فراموش نکنیم که همواره باید استاندارد ERC20 رعایت شود.برای انجام همه این کارها، یک روش این است که به صورت جداگانه یک قرارداد هوشمند سازنده بلاک BPSC را روی شبکه اتریوم دیپلوی نماییم و ازاین قرارداد در قرارداد موجود، استفاده کنیم. البته در این حالت دیپلوی قراردادها باید در دو مرحله انجام شود. (ابتدا مثلا باید قرارداد X دیپلوی شود و پس ازمشخص شدن آدرس آن، می توان این آدرس را در قرارداد Y ثبت کرد و نهایتا قرارداد Y را دیپلوی نمود) همچنین در این روش حتما باید موارد دیگری را نیز رعایت کنیم. اما هدف اصلی ما در این مقاله این است که درک جزئیات برای خوانندگان محترم ساده باشد. لذا برای گام دوم، ما یک قرارداد به نام SmartCreator102.sol آماده کرده ایم که برای ساحتن این فایل، همه موارد ضروری به متن قرارداد SmartCreator101.sol اضافه شده است و در حقیقت، فانکشن های فرارداد اول، در قرارداد دوم توسعه پیدا کرده اند. شما می توانید همه کدهای این مقاله را از اینجا دانلود نمایید.مهمترین دیتاهای قرارداد جدید، در مپینگ accounts و استرات trxes ذخیره می شوند. مپینگ accounts همه اطلاعات مشتریان (بالانس و ....) را ذخیره می کند. حتی اگر آدرسی برای اولین بار «آکا توکن» دریافت کند و هنوز در این مپینگ عضو نباشد، بلافاصله همه مشخصات این اکانت به مپینگ accounts اضافه می گردد و این اکانت برای همیشه عضو می شود. استرات trxes مشخصات تراکنش ها را ذخیره می کند. عملکرد مپینگ تودرتو allowances در قرارداد جدید، دقیقا مانند قرارداد قبلی است. ضمنا تعدادی پارامتر دیگر هم به قرارداد جدید اضافه شده اند تا برنامه نویسی راحت تر انجام شود.در قرارداد جدید؛ اولین مشخصاتی که در مپینگ accounts ذخیره می شود (مشتری شماره صفر)، مشخصات owner است. و اولین مشخصاتی که در استرات trxes ذخیره می شود (تراکنش شماره صفر)، مساوی شدن بالانس owner با تعداد کل توکن ها می باشد. ضمنا بقیه فانکشن های قرارداد قدیم و جدید، بسیار شباهت دارند. ولی فانکشن transfer_ استثناء است و تغییرات زیادی داشته است. اکثر وظایفی که از قرارداد جدید انتظار داریم، در همین فانکشن اتفاق می افتد. ما در ادامه عملکرد این فانکشن را دقیقا بررسی می کنیم و نگاه نزدیکتری به کدهای این فانکشن خواهیم داشت.مشخصات فانکشن transfer_ و بررسی عملکرد آن در قرارداد جدیدهمانطور که در تصویر بالا می بینید؛ تقریبا کدهای ابتدایی فانکشن transfer_ تغییری نکرده است. یعنی مشخصات فانکشن، و require های ابتدایی، مثل قرارداد اول هستند. فقط ما یک modifier جدید به نام isLocked به مشخصات این فانکشن اضافه کردیم. این modifier اجازه نمی دهد که همزمان دو آدرس متفاوت، این فانکشن را کال کنند.در تصویر بالا، ادامه کدهای فانکشن transfer_ را می بینید. این کدها مهمترین بخش قرارداد جدید هستند. البته شاید کمی گیج کننده به نظر برسند ولی نگران نباشید، زیرا این کدها فقط چند کار ساده را به ترتیب انجام می دهند. ما تصویر بالا را به چند بخش تقسیم کردیم و در ادامه برای هر کدام از این بخش ها، توضیح مختصری می دهیم.در بخش A ؛ بالانس همه اکانت های ذخیره شده در قرارداد، با هم جمع می شوند و حاصل جمع در متغییر totalChecking ذخیره می گردد. فراموش نکنید که همیشه مبنای محاسبات، استیت همان لحظه قرارداد است که با آخرین بلاک شبکه اتریوم، آپدیت شده است.بخش های C ، B و D ؛ فقط زمانی فعال می شوند که مقدار بدست آمده برای متغییر totalChecking با تعداد واقعی توکن های قرارداد، یعنی مقدار totalValue ، برابر نباشد. در این حالت ما متوجه می شویم که اشخاصی توانسته اند از غیرمتمرکز بودن شبکه استفاده کنند و یک یا چند تراکنش نامعتبر از توکن ما را، در بلاکچین اتریوم ثبت نمایند. به عبارت دیگر، اشخاصی با تقلب موفق شده اند که توکن های خود را دوبار خرج کنند. بنابراین برای اینکه بالانس همه حساب های این قرارداد تصحیح شوند، ما باید تراکنش های نامعتبر را شناسایی و حذف کنیم.در بخش B ؛ بالانس تک تک حساب های قرارداد را برابر صفر می کنیم. البته شاید این کار ترسناک به نظر برسد، ولی خوشبختانه هیچ مشکلی وجود ندارد و ما هنوز اطلاعات همه تراکنش ها را داریم.دربخش C ؛ از تراکنش شماره صفر( مربوط به owner) شروع می کنیم و تک تک تراکنش ها را به ترتیب بررسی می نماییم. بدیهی است که فقط و فقط وقتی یک تراکنش معتبر باشد، بالانس حساب های فرستنده و گیرنده، آپدیت می شوند. اصلی ترین شرط برای معتبر بودن یک تراکنش این است که بالانس فرستنده درآن لحظه، مساوی یا بیشتر از مبلغ تراکنش باشد. به این ترتیب کدهای این قسمت باعث می شوند که همه تراکنش های نامعتبری که با فریب و یا حتی اشتباه ماینرها، از طریق شبکه اتریوم در قرارداد ما ثبت شده اند، نادیده گرفته شوند. یعنی هیچوقت تراکنش های دو بار خرج کردن، نمی توانند مشکلی در محاسبات ما ایجاد کنند و همیشه بالانس حساب ها بصورت خودکار تصحیح می شوند. پس عملا نیازی به راستی آزمایی ماینرها هم وجود ندارد. البته شما می توانید تراکنش های نامعتبررا بلافاصله حذف کنید و حتی قبل از حذف کردن، موضوع را با ایونت به بیرون قرارداد اطلاع دهید تا روی بلاکچین اتریوم هم ثبت شود. ولی اگر حذف هم نکنید، هربار این تراکنش ها شناسایی شده و نادیده گرفته می شوند. به این نکته هم توجه کنید که این تراکنش های نامعتبر، به هرحال قبلا در بلاکچین اتریوم ذخیره شده اند.کدهای این قسمت، کمی پیچیده به نظر می رسند، ولی در حقیقت عملکرد ساده ای دارند. اگر چند دقیقه جزئیات کدها را بررسی کنید، متوجه می شوید که این پیچیدگی ها صرفا به منظور دستیابی به دیتای ذخیره شده در استرات ها و مپینگ ها بوجود آمده اند. ضمنا با دقت بیشتر روی کدنویسی، مطمئن خواهید شد که منطق ریاضی همین چند خط کد، بسیار محکمتر از منطق انواع مکانیسم های اجماع است و کدهای این قرارداد می تواند جایگزین بسیار بهتری برای انواع مکانیسم های اجماع (برای تراکنش رمز ارزها و توکن ها) باشد. مشکل اساسی شبکه های غیرمتمرکز، همیشه مشکل دوبار خرج کردن بوده است. اما دراین قرارداد، ازنظر ریاضی امکان این اتفاق محال است. حتی برای دبل چک کردن کدهای قرارداد، یک require دیگر در بخش E خواهیم داشت.در بخش D ؛ بالانس همه اکانت ها (که در بخش C اصلاح شده اند) با هم جمع می شوند و حاصل جمع درهمان متغییر totalChecking ذخیره می گردد. به عبارت دیگر، مقداری که در بخش A برای متغییر totalChecking محاسبه شده بود، اصلاح می شود.در بخش E ؛ فقط یک require وجود دارد. این require یکبار دیگر، برابری مقدار بدست آمده برای متغییر totalChecking را با تعداد واقعی توکن های قرارداد (totalValue) کنترل می نماید. لطفا توجه کنید که این شرط حتما محقق خواهد شد. زیرا متغییر totalChecking یکبار در بخش A محاسبه شد و اگر برابرtotalValue نبود، در بخش های C ، B و D اصلاح گردید و حالا دیگر حتما این شرط برقرار است.در ادامه برای سه بخش آخر از فانکشن transfer_ (تصویر بالا) توضیح مختصری می دهیم. این سه بخش، فقط وقتی اجرا می شوند که همه کنترل های لازم انجام شده باشند. البته همانطورکه در بخش های قبلی ملاحظه کردید، حتی درصورت وجود تراکنش های نامعتبر، بالانس همه حساب ها با دقت و از ابتدا اصلاح شده اند.در بخش F ؛ اگر گیرنده توکن ها برای اولین بار «آکا توکن» دریافت کند، تمام مشخصات گیرنده در مپینگ accounts ذخیره می شود. ضمنا بلافاصله ایونت NewAccountWasOpened اجرا می گردد.در بخش G ؛ ابتدا تعداد توکن های این ترانسفر یعنی مقدار amount ، از بالانس فرستنده کسر می گردد و سپس دقیقا به مقدار amount به بالانس گیرنده افزوده می گردد. همانطور که می دانید همیشه توصیه می شود که ابتدا بالانس فرستنده را آپدیت کنید و بعد آپدیت بالانس گیرنده را انجام دهید.بخش H ؛ بخش پایانی فانکشن transfer_ است. در این بخش تمام مشخصات تراکنش جدید، در استرات trxes ذخیره می گردد. ضمنا بلافاصله ایونت Transfer اجرا می گردد.تست قرارداد SmartCreator102.solشما به سادگی می توانید شبیه قرارداد اولیه، قرارداد جدید را نیز تست کنید. ولی لطفا توجه کنید که در حالت عادی تراکنش ها فقط به شرط معتبر بودن اجرا می شوند. به عبارت دیگر شما به سادگی نمی توانید عملکرد این قرار داد را در برخورد با یک تراکنش نامعتبر ببینید و تست کنید. پس چه باید کرد؟پیشنهاد ما این است که قبل از دیپلوی کردن قرارداد، تغییرات کوچکی در کدها ایجاد نماییم، تا بتوانیم بصورت مصنوعی پدیده دوبار خرج کردن را شبیه سازی کنیم. برای این کار، ما فایل SmartCreator102x.sol را ایجاد کرده ایم و در ادامه تغییرات ایجاد شده در این فایل را توضیح می دهیم. فراموش نکنید که این فایل صرفا برای تست است و فایل اصلی در این مرحله همان فایل SmartCreator102.sol می باشد. ضمنا برای اینکه توکن های این مرحله با توکن های مرحله اول متفاوت باشند، نام سمبل توکن های مرحله دوم را AKAx گذاشته ایم.مثلا فرض کنید که بازهم تعداد کل توکن های مرحله دوم، یک میلیون توکن «آکا ایکس» باشد و owner قرارداد نیز آکانت شماره یک است. به این ترتیب پس از دیپلوی کردن قرارداد، بالانس آکانت شماره یک، برابر یک میلیون خواهد بود. در تراکنش اول، پانصد هزار توکن از آکانت اول به آکانت دوم ارسال می کنیم. در تراکنش دوم نیز، پانصد هزار توکن دیگر از آکانت اول به آکانت سوم ارسال می گردد. حالا فرض می کنیم که در تراکنش سوم تقلب یا اشتباهی صورت می گیرد و آکانت سوم موفق می شود که تمام پانصد هزار توکن خود را دوبار خرج کند. یعنی مثلا اکانت سوم بتواند یک میلیون توکن را به آکانت چهارم ارسال کند. بنابراین پس از تراکنش سوم، بالانس آکانت ها به شکل زیر خواهد بود:Account balance number one = 0Account balance number two = 500000Account balance number three = 0Account balance number four = 1000000اما خواهید دید که این اشتباه ادامه پیدا نمی کند و قرارداد ما هنگام تراکنش چهارم بصورت خودکار، تراکنش نامعتبر را شناسایی کرده و آن را نادیده می گیرد. ضمنا همزمان بالانس همه حساب ها را تصحیح خواهد کرد. یعنی اگر مثلا در تراکنش چهارم، یکصد هزار توکن از آکانت شماره دو به آکانت شماره یک ارسال گردد، در این حالت سورپرایز خواهید شد و بالانس آکانت ها به شکل زیر تصحیح می شود:Account balance number one = 100000Account balance number two = 400000Account balance number three = 0Account balance number four = 500000البته با روش های مختلفی می توان امکان این نوع تقلب (یا اشتباه) را برای قرارداد ایجاد کرد. مثلا در فایل SmartCreator102x.sol برای اینکه تراکنش شماره سه، قابلیت دوبار خرج کردن را پیدا کند، ما فقط کدهای زیر را به فایل SmartCreator102.sol اضافه کرده ایم:ما برای تست قرارداد در مرحله دوم؛ فایل SmartCreator102x.sol را مطابق مشخصاتی که قبلا گفته شد، روی شبکه تست Rinkeby دیپلوی کردیم. سپس مطابق توضیحات بالا، چهار تراکنش انجام دادیم. اگر به تصاویر زیر توجه کنید، خواهید دید که نتایج تست های انجام شده کاملا منطبق با پیش بینی ما هستند. البته شما هم می توانید تست های بیشتری انجام دهید تا از عملکرد این قرارداد مطمئن شوید.به این ترتیب در طول زمان، همیشه یک دفتر کل مستقل و مورد اطمینان برای توکن های خودمان خواهیم داشت و دیگر نیازی به راستی آزمایی ماینرها نیست. البته همانطور که ملاحظه کردید، در این قرارداد راستی آزمایی تراکنش ها قبل از هر تراکنش انجام می شود. اما این زمانبندی در قراردادهای دیگر می تواند بر مبنای دیگری ( مثلا هر چند ثانیه) تنظیم گردد. ضمنا ما در گام سوم برای دسترسی به اطلاعات حساب ها و تراکنش ها، فانکشن های متعددی را ارائه می کنیم. ولی توجه داشته باشید که این قرارداد روی بلاکچین اتریوم دیپلوی شده است و اطلاعات تراکنش ها بصورت ایونت، در بلاکچین اتریوم ذخیره شده و قابل دسترس است. برای دیدن این اطلاعات می توانید از راهنمایی ها و تصاویر زیر استفاده کنید.پایان بخش دومSomayyeh GholamiMehran Kazeminia</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Thu, 08 Oct 2020 12:23:02 +0330</pubDate>
            </item>
                    <item>
                <title>یک «بلاکچین هوشمند» با سالیدیتی بسازید، و ببینید چگونه از«دوبار خرج کردن» جلوگیری می کند. - «بخش اول:  قرارداد هوشمند برای تولید توکن های ERC20»</title>
                <link>https://virgool.io/@info.kazeminia/%DB%8C%DA%A9-%D8%A8%D9%84%D8%A7%DA%A9%DA%86%DB%8C%D9%86-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%A8%D8%A7-%D8%B3%D8%A7%D9%84%DB%8C%D8%AF%DB%8C%D8%AA%DB%8C-%D8%A8%D8%B3%D8%A7%D8%B2%DB%8C%D8%AF-%D9%88-%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D8%AF-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2%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%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AA%D9%88%DA%A9%D9%86-%D9%87%D8%A7%DB%8C-erc20-v48fxy25sziq</link>
                <description>Build a &quot;Smart Blockchain&quot; with Solidityما «بلاکچین هوشمند» را اینطور تعریف می کنیم؛ هر بلاکچینی که از قراردادهای هوشمند برای راستی آزمایی تراکنش ها استفاده کند، یک «بلاکچین هوشمند» است. ما قبلا در چند مقاله، مزیت های «بلاکچین هوشمند» را بررسی کردیم و جزئیات این ایده را برای استفاده در بلاکچین های آینده شرح دادیم. اما سوال بعدی این است که آیا می توانیم یک قرارداد هوشمند را روی یک بلاکچین فعال (مانند اتریوم) دیپلوی کنیم؛ تا راستی آزمایی تراکنش ها را بدون نیاز به ماینرها انجام دهد؟ جواب مثبت است. ما در همین مقاله تصمیم داریم که یک قرارداد هوشمند اتریوم ایجاد کنیم؛ که می تواند از «دوبار خرج کردن» توکن های خودش جلوگیری کند.در این مقاله ابتدا روش تولید توکن با استاندارد ERC20 را توضیح می دهیم و یک قرارداد هوشمند برای تولید این نوع توکن ها می نویسیم. سپس همین قرارداد هوشمند را توسعه خواهیم داد تا بتواند از بدو تولد توکن ها، مشخصات همه حساب ها را ذخیره کند. یعنی علاوه بر تراکنش ها، مشخصات همه حساب هایی که حداقل یکبار از این نوع توکن ها دریافت کرده اند، ذخیره می شود. به این ترتیب، این قرارداد هوشمند در طول زمان می تواند با استفاده از مشخصات تراکنش ها، بالانس همه حساب ها (یعنی دفترکل مخصوص این نوع توکن) را محاسبه کند. ولی نکته مهم این است که این قرارداد روی شبکه غیر متمرکز اتریوم دیپلوی شده است و استیت قرارداد های هوشمند در این شبکه، فقط پس از اجماع همه ماینرها و ساخت یک بلاک جدید اتریوم، آپدیت می شود.در حالت کلی، تاخیر در آپدیت استیت قرارداد های هوشمند می تواند امکان دوبار خرج کردن را به کاربران بدهد. اما همه می دانیم که ماینرها و سازندگان بلاک برای ایجاد هر بلاک جدید روی شبکه اتریوم، راستی آزمایی تراکنش ها را (با مصرف برق بسیار زیاد) انجام می دهند و اجازه دوبار خرج کردن توکن ها را به هیچکس نخواهند داد. ولی ما فرض می کنیم که مثلا یک شخص متقلب توانسته است از غیرمتمرکز بودن شبکه استفاده کند و یک تراکنش نامعتبر از توکن ما را در بلاکچین اتریوم ثبت نماید و به اصطلاح، توکن خود را دوبار خرج کند. پس به این ترتیب استیت جدید قرارداد ما نیز، نامعتبر خواهد بود. اما ما از قبل کدهایی به قرارداد خودمان اضافه می کنیم که حتی در این حالت، قرارداد هوشمند ما بصورت اتومات تراکنش های نامعتبر در استیت جدید خود را شناسایی و حذف کند. یعنی عملا خواهیم دید که بالانس همه حساب های دفترکل، همیشه صحیح خواهد بود و به راستی آزمایی ماینرهای شبکه اتریوم، احتیاجی نیست.تعجب نکنید؛ راستی آزمایی همه تراکنش ها، فقط با چند خط کد نویسی با زبان سولیدیتی امکان پذیراست و ما همه جزئیات لازم را برای اولین بار در همین مقاله شرح خواهیم داد. ضمنا یک تقلب را نیز در تراکنش ها شبیه سازی می کنیم، تا با هم بتوانیم عملکرد راستی آزمایی قرارداد هوشمند خودمان را تست کنیم. در حقیقت یکبار دیگر نشان خواهیم داد که با کمال اطمینان می توان وظیفه راستی آزمایی تراکنش های توکن ها و رمزارزها را به قراردادهای هوشمند سپرد و نیازی به انواع مکانیسم های اجماع و اتلاف میلیون ها دلار هزینه برق نیست. مقاله حاضر در اکتبر سال ۲۰۲۰ توسط سمیه غلامی و مهران کاظمی نیا نوشته شده است.Understanding &quot;Smart Blockchain&quot; by codingگام اول - تولید توکن های ERC20درابتدا می خواهیم تعداد یک ملیون توکن ERC20 با نام «AKA» تولید کنیم. برای انجام این کار، یک قرارداد هوشمند مطابق استاندارد ERC20 نوشته ایم. شما می توانید همه کدهای این مقاله را از اینجا دانلود نمایید. ولی توجه نمایید که نام فایل ما دراین مرحله، SmartCreator101.sol می باشد. در ادامه جزئیات این قرارداد را با هم بررسی می کنیم.پرکاربردترین قراردادهای هوشمند شبکه اتریوم، قراردادهای تولید کننده توکن های ERC20 هستند. خوشبختانه مقالات و کتابخانه های خوبی در این زمینه منتشر شده اند. حتی استانداردهای دیگری مانند ERC223 ، ERC621 ، ERC777 ، ERC827 برای تکمیل و توسعه استاندارد ERC20 وجود دارند. اما برای اینکه درک جزئیات توسعه قرارداد، برای خوانندگان راحت تر باشد، ما از import کردن استانداردها و کتابخانه ها پرهیز کردیم. ولی درعین حال، کتابخانه ضروری SafeMath ، فانکشن های اجباری، و ایونت های استاندارد ERC20 ، همه در متن قرارداد SmartCreator101.sol گنجانده شده است.فرضیات اولیه قرارداد SmartCreator101.sol به این شرح است:آدرس شخصی که این قرارداد هوشمند را روی شبکه دیپلوی می کند، با نام owner ذخیره می کنیم. owner باید هنگام دیپلوی کردن قرارداد، نام ، سمبل و تعداد توکن ها را تعیین کند. این پارامترها همیشه ثابت خواهند ماند. ضمنا از همان ابتدا، کل توکن های تولید شده، برابر بالانس حساب owner قرار می گیرد. با این کار فقط owner برای فروش و یا واگذاری همه توکن ها، تصمیم خواهد گرفت. پارامتر decimals را برابر صفر در نظر گرفته ایم. یعنی فرض کردیم نمی توان کسری از یک توکن را ترانسفر کرد و همیشه یک عدد صحیح از توکن ها قابل خرج کردن هستند.فانکشن های قرارداد SmartCreator101.sol به این شرح است:فانکشن های totalSupply و balanceOf از نوع فانکشن های view هستند. این نوع فانکشن ها، فقط مقادیر را از روی بلاکچین می خوانند و آن مقادیر را برمی گردانند. به همین دلیل حتی هزینه gas هم ندارند. یعنی اگر کسی totalSupply را کال کند، تعداد کل توکن ها را دریافت می کند و اگر فانکشن balanceOf راهمراه یک آدرس کال کند، بالانس همان آدرس را دریافت خواهد کرد. این دو فانکشن هیچ محاسباتی انجام نمی دهند، ولی به هرحال از فانکشن های اجباری استاندارد ERC20 هستند و حتما باید به همین شکل و بدون تغییر در قرارداد باشند. به عنوان مثال اگر بخواهید تغییری در فانکشن balanceOf ایجاد کنید و قبل از مقدار بالانس، نام توکن را هم در خروجی فانکشن اضافه کنید؛ احتمالا کیف های پول ERC20 درست کار نمی کنند.فانکشن بعدی transfer است. همیشه شخص فرستنده، این فانکشن را کال می کند و همزمان آدرس گیرنده و تعداد توکن های ارسالی را مشخص می نماید. سپس این فانکشن همه کنترل های لازم را انجام می دهد و اگر مشکلی پیدا نکرد‌، بالانس فرستنده و گیرنده را آپدیت می کند و به اصطلاح، ترانسفر کامل می شود. چون فرستنده این فانکشن را کال می کند، پس ‌خودش باید هزینه gas را پرداخت کند. ضمنا چون در فانکشن های دیگر هم باید عملیات ترانسفر را به همین شکل مدل کنیم، پس بهتر دیدیم که یک فانکشن دیگر به نام transfer_ بصورت اینترنال اضافه نماییم. به این ترتیب، فقط یکبار همه کنترل ها و محاسبات مربوط به ترانسفر را تایپ می کنیم. همچنین برای کنترل Overflow (هنگام عملیات جمع برای متغییرهای uint256) نیز فانکشین دیگری به نام add اضافه کردیم. این فانکشن اینترنال و pure است. یعنی اطلاعات بلاکچین را نمی خواند و هیچ چیز هم در بلاکچین ذخیره نمی کند.سه فانکشن هنوز بررسی نشده اند. فانکشن approve وقتی کاربرد دارد که کسی بخواهد برای خرج کردن تعدادی از توکن های خودش، به شخص دیگری وکالت بدهد. برای اینکار او باید این فانکشن را کال کند و همزمان آدرس اسپاندر و تعداد توکن ها (allowance) را مشخص نماید. سپس این فانکشن، آدرس هولدر، آدرس اسپاندر و همچنین تعداد توکن ها را دریک مپینگ تو در تو، ذخیره می کند. نام فانکشن بعدی transferFrom است. این فانکشن توسط یک اسپاندرکال می شود و او همزمان باید، آدرس هولدر، آدرس recipient و تعداد توکن های ارسالی (کمتر یا مساوی allowance) را مشخص کند. البته این فانکشن نیز همه کنترل های لازم را انجام خواهد داد و اگر مشکلی وجود نداشته باشد‌، این فاکشن اجرا می شود و بالانس فرستنده (هولدر)، بالانس recipient ، و مقدار allowance را آپدیت می کند. لطفا توجه کنید که برای اجرای فانکشن approve ، هزینه gas توسط خود هولدر پرداخت می شود. اما برای اجرای فانکشن transferFrom ، هزینه gas باید توسط اجرا کننده قرارداد، یعنی اسپاندر پرداخت شود. به عبارت دیگر، با این که بالانس اسپاندر هنگام اجرای فانکشن approve ، ثابت است و تغییر نمی کند، ولی هنگام اجرای فانکشن transferFrom ، به مقدار هزینه gas کاهش می یابد. آخرین فانکشن، allowance نام دارد که یک فانکشن از نوع view می باشد. هر کس بدون پرداخت هزینه gas می تواند این فانکشن را کال کند و مقدار باقیمانده allowance را از روی بلاکچین بخواند. بدیهی است که هنگام کال کردن این فانکشن، می بایست آدرس هولدر و آدرس اسپاندر مورد نظر خود را مشخص کند.ایونت های قرارداد SmartCreator101.sol به این شرح است:نام ایونت اول، Transfer می باشد. پس از هر تراکنش موفق، این ایونت به محیط خارج قرارداد پیام می فرستد و مشخصات تراکنش در بلاکچین ذخیره می شود. پارامترهای این ایونت، آدرس فرستنده، آدرس recipient ، و تعداد توکن های ارسالی می باشند. نام ایونت دوم، Approval است. هر بار که فانکشن approve با موفقیت اجرا می شود، این ایونت نیز در بلاکچین ذخیره می گردد. ایونت دوم هم سه پارامتر دارد. پارامترهای این ایونت به ترتیب، آدرس هولدر، آدرس اسپاندر و مقدار allowance هستند.تست قرارداد SmartCreator101.solحالا وقت این است که قرارداد خودمان را تست کنیم. برای این کار، ما از شبکه تست Rinkeby و MetaMask استفاده می کنیم. پس از کامپایل کردن قرارداد در ریمکیس، به بخش دیپلوی می رویم. سپس در باکس ENVIRONMENT ، باید گزینه Injected web3 را انتخاب کنیم. البته ما در شبکه تست Rinkeby چندین اکانت داریم. مثلا با اکانت شماره یک، قرارداد را دیپلوی میکنیم و مقادیر زیر را به قرارداد پاس می دهیم:name = &quot;AKA Token&quot; ==&gt; The name of the coinssymbol = &quot;AKA&quot; ==&gt; Symbol of the coinstotalValue = 1000000 ==&gt; Total number of coinsبه این ترتیب آدرس اکانت شماره یک، owner این قرارداد خواهد بود و مطابق کدهای قرارداد، بالانس owner برابر یک میلیون آکا توکن ثبت می شود. قبل از اینکه تک تک فانکشن ها را تست کنیم، بهتر است آکا توکن را به کیف پول متامکس معرفی کنیم تا بتوانیم بالانس اکانت ها را همزمان در متامکس هم ببینیم. به اصطلاح باید آکا توکن را به کیف پول متامکس، add کنیم. برای این کار ابتدا از ریمکس، آدرس قرارداد دیپلوی شده را کپی کرده و در متامکس، این آدرس را روی باکس مخصوص پیست می کنیم. ضمنا سمبل توکن یعنی «AKA» را در باکس پائین تر تایپ می نمائیم. وقتی آکا توکن روی اکانت شماره یک add شود، متامکس بالانس این آکانت را یک میلیون آکا توکن نمایش می دهد.حالا به راحتی می توانیم عملکرد همه فانکشن های قرارداد را تست کنیم. فانکشن های آبی رنگ از نوع view هستند و هزینه gas ندارند. ولی اگر فانکشن های نارنجی رنگ را کال کنیم، هزینه gas توسط بلاکچین از ما دریافت می شود. البته فعلا قرارداد ما روی شبکه تست Rinkeby دیپلوی شده است و هزینه gas با اتر فیک پرداخت خواهد شد. در ادامه، تصاویر بعضی از تست های انجام شده را می بینید. شما هم می توانید تست های بیشتری انجام دهید تا از عملکرد این قرارداد، مطمئن شوید.پایان بخش اولSomayyeh GholamiMehran Kazeminia</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Thu, 08 Oct 2020 11:31:41 +0330</pubDate>
            </item>
                    <item>
                <title>گزارشی از چالش استدلال و انتزاع ـ سایت کَگل</title>
                <link>https://virgool.io/dataio/%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4%DB%8C-%D8%A7%D8%B2-%DA%86%D8%A7%D9%84%D8%B4-%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%88-%D8%A7%D9%86%D8%AA%D8%B2%D8%A7%D8%B9-%D9%80-%D8%B3%D8%A7%DB%8C%D8%AA-%DA%A9%D9%8E%DA%AF%D9%84-xucvk2re23e7</link>
                <description>Abstraction and Reasoning Challenge - This competition was hosted by François Cholletاین گزارش توسط سمیه غلامی و مهران کاظمی نیا تهیه شده است.Abstraction and Reasoning Challengeدرحال حاضر، تکنیک های یادگیری ماشین فقط می توانند از الگوهای که قبلا دیده اند، استفاده کنند. یعنی از ابتدا برای ماشین ها، الگوهای مشخصی تعیین می شود و سپس درمعرض داده های  مرتبط قرار می گیرند، تا بتوانند مهارت های جدیدی بیاموزند. ولی آیا درآینده ‌، ماشین ها می توانند مانند انسان ها، به سوالاتِ استدلالی که تا به حال ندیده اند، پاسخ صحیح بدهند؟ آیا ماشین ها می توانند کارهای پیچیده و انتزاعی را فقط از چند نمونه بیاموزند؟ این دقیقا موضوع مسابقه استدلال و انتزاع بود که اخیرا به پایان رسید و یکی از بحث بر انگیزترین چالش های کَگل نیز محسوب می شود. در این چالش از شرکت کنندگان خواسته شد تا یک هوش مصنوعی را در مدت سه ماه ایجاد کنند، تا بتواند سوالاتِ استدلالی را که قبلاً ندیده است، حل کند. کگل در معرفی این مسابقه نوشته است:&quot;It provides a glimpse of a future where AI could quickly learn to solve new problems on its own. The Kaggle Abstraction and Reasoning Challenge invites you to try your hand at bringing this future into the present!&quot;سوالات استدلالی این چالش، مانند آزمون های هوش برای انسان ها بود و سوالات ساده، متوسط و گاهی نسبتا سخت را شامل می شد. البته یک انسان معمولی قادر بود، همه سوالات را در یک زمان معقول، پاسخ دهد و هیچکدام از سوالات، پیچیدگی خارق العاده ای نداشت. ولی چالش این بود که همه مفاهیم استدلالی مثل؛ تغییر رنگ، تغییر سایز، تغییر در ترتیب قرار گیری و … را چگونه می توان به ماشین آموزش داد تا ماشین هم بتواند در یک آزمون هوش انسانی، که تا به حال ندیده است، موفقیت کسب کند.جایزه این مسابقه مجموعا مبلغ بیست هزار دلار بود که بین سه نفر اول (سه تیم اول) تقسیم شد. اما همانطورکه حدس زده می شد؛ حتی نتایج نفرات اول نیز، امیدوارکننده نبود. این چالش تقریبا هزار شرکت کننده داشت که الگوریتم های نیمی از آنها به هیچ کدام از سوالات پاسخ صحیح ندادند. اگر الگوریتم یک تیم اصلا کار نمی کرد، امتیاز یک می گرفت و اگر می توانست به تعداد کمی از سوالات، پاسخ صحیح بدهد، مثلا امتیاز نود و هشت صدم یا … دریافت می کرد. به هرحال فقط دوازده تیم توانستند کمتر از نود صدم امتیاز بگیرند. در ادامه جدول نهایی امتیازات مسابقه برای سی نفر اول، آورده شده است.این مسابقه یک چالش کلاس بندی نبود، یعنی جواب ها از بین چند گزینه تصویری انتخاب نمی شدند. بلکه همه جواب ها می بایست بصورت تصویر(ماتریس) ساخته می شدند. این موضوع ، مسابقه را پیچیده تر می کرد. شاید به همین دلیل، کسانی که فکر می کردند می توانند صرفا با روش های مرسوم و کلاسیک، ماشین را آموزش دهند و یا با حدس و گمان، کار را جلو ببرند، کاملا مایوس شدند. البته بعضی از شرکت کنندگان به حل نمونه هایی پرداختند که راه حل های ساده تری داشتند و به نوعی استثناء محسوب می شدند. طبیعی است که این افراد در بهترین حالت فقط تعداد کمی از نمونه ها را حل نمودند و موفقیت زیادی کسب نکردند.با این که حقیقتا نبوغ و تلاش برندگان و شرکت کنندگان این مسابقه قابل تحسین است، ولی با یک نگاه به جدول امتیازات، به نظر می رسد که هنوز با جواب نهایی فاصله داریم و تضمینی نیست که بهترین روش ها، توسط شرکت کنندگان انتخاب شده باشد. به هرحال برندگان این مسابقه با سخاوتمندی، روش خلاقانه خود را در لینک های زیر شرح داده اند و برخی از آنها کدهای کامل خود را نیز ارائه کرده اند.List of gold medal solutions shared:1st place solution by icecuber2nd place solution by Alejandro de Miquel3rd place solution by Vlad Golubev3rd place solution by Ilia5th place solution by alijs6th place solution by Zoltan8th place solution by Andy Penrose8th place solution by Maciej Sypetkowski8th place solution by Jan Bre9th place solution by Hieu Phung10th place solution by Alexander Fritzlerاگر شما به این موضوع علاقه مند شدید، می توانید روی سایت کَگل و همچنین گیت هاب فرانسوا شله ، اطلاعات بسیار زیادی را از این چالش کسب کنید. البته اگر بخواهید ابتکار خود را داشته باشید و راه حل های خود را امتحان کنید ، چند توصیه برای شما داریم ؛ برای شروع کار ابتدا مقاله ۶۴ صفحه ای آقای فرانسوا شله  در ارتباط با اندازه گیری هوش را بخوانید:On the Measure of Intelligence | François Cholletضمنا در سایت کگل می توانید به بخش Discussion و Notebooks این چالش رجوع کنید و مستقیما توصیه های میزبان، برندگان و همه شرکت کنندگان را مطالعه کنید. در انتها، توجه شما را به چند توصیه کلیدی از فرانسوا شله جلب می کنیم:How to get started?fchollet - Competition Host:If you don&#x27;t know how to get started, I would suggest the following template:Take a bunch of tasks from the training or evaluation set -- around 10.For each task, write by hand a simple program that solves it. It doesn&#x27;t matter what programming language you use -- pick what you&#x27;re comfortable with.Now, look at your programs, and ponder the following:1) Could they be expressed more naturally in a different medium (what we call a DSL, a domain-specific language)?2) What would a search process that outputs such programs look like (regardless of conditioning the search on the task data)?3) How could you simplify this search by conditioning it on the task data?4) Once you have a set of generated candidates for a solution program, how do you pick the one most likely to generalize?You will not find tutorials online on how to do any of this. The best you can do is read past literature on program synthesis, which will help with step 3). But even that may not be that useful :)This challenge is something new. You are expected to think on your own and come up with novel, creative ideas. It&#x27;s what&#x27;s fun about it!Does hard-coding rules disqualify?fchollet - Competition Host:You can hard-code rules &amp; knowledge, and you can use external dataCan we &quot;probe&quot; the leaderboard to get information about the test set?fchollet - Competition Host:Using your LB score as feedback to guess the exact contents of the test set is against the spirit of the competition. In fact, it is against the spirit of every Kaggle competition. The goal of the competition is to create an algo that will turn the demonstration pairs of a task into a program that solves the task -- not to reverse-engineer the private test set.Further, this is a waste of your time. It is extremely unlikely that you would be able to guess an exact output or an exact task. This is why we decided not to have a separate public and private leaderboard: probing is simply not going to work.That is because:1) test tasks have no exact overlap with training and eval tasks (although they look &quot;similar&quot; in the sense that they&#x27;re the same kind of puzzle, built on top of Core Knowledge systems)2) the space of all possible ARC tasks is very large, and very diverse.So you&#x27;re not going to get a hit by either trying everything found in the train and eval set, or by just randomly guessing new tasks. You would have better luck trying to guess the exact melodies of the top 100 pop songs of 2021.Is the level of difficulty similar in evaluation set and test set?fchollet - Competition Host:The difficulty level of the evaluation set and test set are about the same. Both are more difficult than the training set. That is because the training set deliberately contains elementary tasks meant to serve as Core Knowledge concept demonstration.Can we use data from both the training and evaluation sets in our solutions?fchollet - Competition Host:I would recommend only using data from the training set to develop your algorithm. Using data from both the training set and evaluation set isn&#x27;t at all against the rules, so could you do it, but it would be bad practice, since it would prevent you from accurately evaluating your algorithms.The goal of this competition is to develop an algorithm that can make sense of tasks it has never seen before. You&#x27;ll want to be able to check how well your algorithm perform before submitting it. For this purpose, you need a set of tasks that your algorithm has never seen, and further, that you have never seen. That&#x27;s the evaluation set. So don&#x27;t leak too much into information from the evaluation set into your algorithm, or you won&#x27;t be able to evaluate it.Note that the &quot;test&quot; set is a placeholder (copied from the evaluation set) for you to check that your submission is working as intended. The real test set used for the leaderboard is fully private.8th place solution by Maciej Sypetkowskiپس همه چیز آماده است.یک قهوه بنوشید و کار خود را شروع کنید.موفق باشید.سمیه غلامی و مهران کاظمی نیا</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Fri, 26 Jun 2020 21:57:04 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی کتاب فخرالدوله آنلاین</title>
                <link>https://virgool.io/farsimedia/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%AE%D8%B1%D8%A7%D9%84%D8%AF%D9%88%D9%84%D9%87-%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86-rimtiuo6rli7</link>
                <description>زندگی خانم فخرالدوله، با چهار شاه قاجار و دو پادشاه پهلوی مقارن بود. او در دوران سلطنت پدر بزرگش ( ناصرالدین شاه )، پدرش ( مظفرالدین شاه )، برادر ناتنی اش ( محمدعلی شاه ) و برادر زاده اش ( احمد شاه قاجار) زندگی کرد و از خاندان سلطنتی محسوب می شد. پس از انقراض قاجار، مخاطب رضا شاه پهلوی قرار گرفت، زیرا به نوعی نماینده و مورد احترام شاهزاده های قاجار می بود. در زمان محمدرضا شاه پهلوی، روابط او با سلطنت همچنان سازنده و با احترام متقابل پیش می رفت. پسران او ، در کابینه های مختلف حضور می یافتند و حتی پس از فوتش، پسرش دکتر علی امینی، مدتی نخست وزیر ایران شد. او با همه کانون های دیگر ِقدرت؛ از جمله روحانیون، بازار و حتی بدنه جامعه، ارتباط تنگاتنگ داشت.خانم اشرف امینی ۱۲۶۲ تا ۱۳۳۴ خورشیدیخانم فخرالدوله، انقلاب مشروطیت، کودتا، انقراض سلطنت قاجار، دو جنگ جهانی، فقر و قحطی جامعه را از نزدیک دید و تجربه کرد. ولی در تمام طول عمر مایوس و نا امید نشد و همچنان برای تربیت، رفاه و آینده خانواده اش تلاش کرد . همه ما می دانیم ارثیه بزرگی از پدر شوهرش ( جناب امین الدوله ) و همچنین از پدرش ( مظفرالدین شاه ) به او و همسرش رسیده است. ولی او مجبور بود برای حفظ همین املاک تلاش کند و حتی بجنگد. خوشبختانه در همان جامعه آشفته و مردسالار، کاملا موفق بود و به دلایلی که در کتاب خواهید خواند، تمام فعالیت های اقتصادی خانواده اش را خودش مدیریت می کرد و کمتر توانست به مشارکت و همیاری همسرش، محسن خان امین الدوله متکی باشد. او حقیقتا یک استثناء بود و یکی از موفق ترین فعالین اقتصادی روزگار خود محسوب می شد، آن هم در زمانی که زنان جامعه و حتی طبقه مرفه و اشراف، هیچ حضوری در اقتصاد و کارآفرینی نداشتند. ضمنا او یکی از پیشگامان، در امور خیریه است و نام خود را در نیکوکاری جاودانه کرده است.بیش از شصت سال از فوت او گذشته است و در تمام کتابها، اسناد و مکتوبات، او را تحسین کردند. ولی متاسفانه این تعریف و تمجیدها، معمولا ریشه در فرهنگ مردسالاری داشته است . مثلا جناب آقای مهدی بامداد در کتاب شرح حال رجال ایران، نوشته اند: « فخرالدوله زنی بود، بلکه می توان گفت مردی بود! بسیار فعال، پشتکار دار، مدیره، مدبره، خیلی مرتب و منظم، اجتماعی، عاقل، با اطلاع از اوضاع مملکتی و جریان روز … فخرالدوله در میان زنان ایران، زن فوق العاده ای بود و نبوغی داشت و نظیرش در ایران خیلی کم بود. از گفته های شاه فقید، رضا شاه پهلوی است که … «قاجاریه یک مرد و نیم داشته است و مردش فخرالدوله و نیم مردش آغا محمد خان».همانطور که می بینید، مردها عادت کردند که اگر زنی فعال، مدیر، منظم، اجتماعی، عاقل و با اطلاع از اوضاع مملکتِ باشد … در نهایت ممکن است او را به لقب “مرد” مفتخر گردانند! در صورتی که این تفکر از اساس، غلط است. مثلا وقتی از قول رضا شاه پهلوی گفته می شود: «قاجاریه یک مرد ونیم داشته است و مردش فخرالدوله و نیم مردش آغا محمد خان»، آیا خانم فخرالدوله، بعنوان یک زن و یک مادر می تواند به این تعریف و تمجید، افتخارکند !؟ یا این جمله تحقیر قاجاریه محسوب می شود؟ هنوز در بهترین حالت ، زنان صبور و با استعداد ایران، با لغات مردی، مردانه و جوانمردی ستایش می شوند و تاریخ و حتی ادبیات ما، همچنان آبشخور فرهنگ مردسالاری است و هر قسمت از تاریخ ایران، روایتی از این فرهنگ را در خود دارد.البته همیشه اینطور نیست، مثلا جناب آقای ناصر مهاجر، خانم فخرالدوله  را اینگونه معرفی می نماید: «فخرالدوله تا فمينيزم راه درازى در پيش داشت. اما او از نخستين زنان قاجار است كه از اندرونى به بيرون پا گذاشت. به خود آگاهى همت گماشت. رفته رفته به پهنه ى عمومى راه يافت. با تلاشى خستگی ناپذير پيش رفت و شايستگى خود را در اداره ى خانواده، مشاركت در جامعه ى مدنى و مديريت اقتصادى و كارآفرينى آشكار ساخت. سهم سترگ او در فرايند دگر سازى ايران، درهم شكستن معادله ى زن برابر با ضعيفه است؛ ارائه الگویی تازه از زن در گستره ى جامعه و نيز دگر ساختن مناسبات جنسيتى! از شاهزاده خانم هاى قاجار كسى را نمی شناسيم كه چون خانم فخرالدوله تصويری مثبت در جامعه بر جاى نهاده باشد و راه حركت به پيش زن ايرانى را هموار كرده باشد.» البته در این کتاب خواهیم دید، واقعیت زندگی خانم فخرالدوله، کاملا منطبق بر تعریف اخیر است.خانم فخرالدوله با موقعیت مناسبی از نظر خانوادگی و اقتصادی، به جامعه ورود کرد ولی موفقیت های او با پشتکار و مدیریت لحظه لحظه زندگی، مستمر شد. او با خرافات، که رسم زمانه بود، میانه ای نداشت. ریاکار و متزور نبود، و برای مرد و زن، قابل اعتماد به نظر می رسید. نزد فقیر و غنی اعتبار و آبرو داشت. به هیچ وجه اهل تظاهر نبود، مثلا همانطور که در وصیت نامه ایشان ملاحظه خواهید کرد، با اینکه همیشه از ثروتمند ترین افراد ایران محسوب می شد، ولی حتی طلاجات و جواهرات شخصی نداشت و در وصیت نامه، تنها انگشتر عقیق خود را به یادگار، به پسرش بخشید. سبک او و همکارانش در امور خیریه نیز، از زمان خود جلوتر بود. در همین کتاب خواهید دید، دختران یتیم را به تحصیل تشویق می کردند و به آنها آموزش زندگی می دادند و با آبروداری بستر ازدواج را برای آنها مهیا می کردند. ضمن این که بعد از ازدواج مثل یک خانواده واقعی، در کنار آنها می ماندند.شرکت کنندگان در مراسم افتتاح مدرسه امين‌الدوله با حضور خانم فخر الدولهکتاب «فخرالدوله آنلاین» روایتی از زندگی خانم اشرف امینی، دختر مظفرالدین شاه قاجار می باشد که به سبک شبکه های اجتماعی و فضای آنلاین، تنظیم شده و راوی داستان، خود خانم فخرالدوله هستند. این کتاب دارای سه بخش است و مجموعا در۳۶ پست از زبان او ارائه می شود. ضمنا عکس، اسناد و مطالب مرتبط در کنار پست ها ضمیمه شده اند. گردآوری، تنظیم، تطبیق و راستی آزمایی مطالب، با دقت و وسواس صورت گرفته است و اگر مرجع معتبری برای بخشی از زندگی خانم فخرالدوله یافت نشد، از ذکر مطالب مخدوش، صرفنظر گردید. این مجموعه به کوشش خانم سمیه غلامی و مهران کاظمی نیا روی سایت فارسی مدیا، منتشرشده است.امید داریم خوانندگان گرامی نظرات خود را راجع به مطالب کتاب، با ما در میان بگذارند. ضمنا اگر از بستگان خانم فخرالدوله هستید و یا هر نوع مطلب و خاطره خاصی از آن مرحوم دارید، می توانید در ابتدای بخش اول، در قسمت فیسبوک، پست خود را اضافه کنید تا مستقیما مطلب شما به اصل کتاب اضافه شود. به هرحال فرض ما بر این است که این کتاب، یک کتاب پویا است و هرلحظه ممکن است مطالب جدیدی از طرف خوانندگان و یا نویسندگان، به مطالب کتاب اضافه شود. خانم فخرالدوله در جوانیبخش اول کتاب:بخش اول کتاب، رویدادهای تاریخی و همچنین خاطرات خانم فخرالدوله از هنگام تولد ایشان تا مراسم ازدواج او را شامل می شود؛ خاطرات کودکی و دوران تحصیل در دارالسطنه تبریز، همچنین وقایع دوران فوت ناصرالدین شاه (پدر بزرگ او)، به هم خوردن نامزدی خانم فخرالدوله با مصدق السلطنه و بالأخره آشنایی و ازدواج با محسن خان معین الملک را در بخش اول کتاب مطالعه خواهید کرد.از راست: دکتر علی امینی، محمد امینی، احمد امینی، رضا امینی و در وسط معصومه امینی (نفیسی) که کنار خانم فخرالدوله نشسته است.بخش دوم کتاب:بخش دوم کتاب، با ترک کاخ گلستان و شروع زندگی در پارک امین الدوله، آغاز می شود، مصاحبت خانم فخرالدوله با جناب امین الدوله ( پدر شوهر ایشان ) بر دانش و همچنین رشد آگاهی اجتماعی او، بسیار موثر است. ضمنا فوت پدر( مظفرالدین شاه )، رویدادهای تاریخی و خاطرات خانم فخرالدوله از دوران پادشاهی محمد علی شاه و احمد شاه قاجار، همه در این بخش گنجانده شده است.عکسی از کهنسالی خانم فخرالدولهبخش سوم کتاب:بخش سوم کتاب، با کودتای رضا شاه آغاز می شود و با مرگ خانم فخرالدوله پایان می یابد. در همین دوران است که لایحه انقراض سلطنت قاجاریه مصوب می شود و به نوعی خانم فخرالدوله به عنوان نماینده قاجار، مخاطب رضا شاه قرار می گیرد. او بعدا شاهد فرو افتادن رضا شاه و شروع سلطنت محمدرضا شاه جوان است. ضمنا تا آخر عمر، فعالیت های اقتصادی و کارهای عام المنفعه خود را پیگیری می کند.معرفی کتاب در یوتیوب</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Fri, 26 Jun 2020 13:55:48 +0430</pubDate>
            </item>
                    <item>
                <title>می توانید بدون این که وارد تلگرام شوید، کانال های عمومی تلگرام را روی وب مشاهده کنید.</title>
                <link>https://virgool.io/farsimedia/%D9%85%DB%8C-%D8%AA%D9%88%D8%A7%D9%86%DB%8C%D8%AF-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%DB%8C%D9%86-%DA%A9%D9%87-%D9%88%D8%A7%D8%B1%D8%AF-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D8%B4%D9%88%DB%8C%D8%AF-%DA%A9%D8%A7%D9%86%D8%A7%D9%84-%D9%87%D8%A7%DB%8C-%D8%B9%D9%85%D9%88%D9%85%DB%8C-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D8%B1%D8%A7-%D8%B1%D9%88%DB%8C-%D9%88%D8%A8-%D9%85%D8%B4%D8%A7%D9%87%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D8%AF-luuejwafmf5j</link>
                <description>You can now view any public channel from the web — even if you aren‘t logged in to Telegram.The authors of the article are Somayyeh Gholami and Mehran Kazeminia.
 شما به راحتی می توانید بدون این که عضو تلگرام باشید و یا حتی وارد تلگرام شوید، محتوای کانال های عمومی تلگرام را روی وب مشاهده نمایید. کافی است که آدرس کانال دلخواه خود را داشته باشید و « اس اسلش » را قبل از نام کانال، اضافه کنید. سپس می توانید در محیط وب به مطالعه کانال مورد نظر خود بپردازید. بسیاری از کانال های عمومی تلگرام، حاوی مطالب ارزشمندی هستند. متاسفانه اکثر این مطالب وهمچنین عکس ها و ویدیوها، معمولا فقط درهمان کانال های تلگرامی منتشر می شوند و هیچ کپی یا نسخه ای از آنها، در سایت ها موجود نیست. به عبارتی این محتویات قبلا دردسترس موتورهای جستجو، مثل گوگل نبودند و در جستجوهای اینترنتی عملا دیده نمی شدند. به همین دلیل، پس از مدت کوتاهی از انتشار، شانسی برای دیده شدن مجدد هم نداشتند. ولی حالا با امکان جدید تلگرام ، تا حدودی استفاده بیشتر ازاین محتویات، ممکن شده است. برای این که اهمیت موضوع برای شما فارسی زبانان بیشترمشخص شود، توجه نمایید که: تا امروز تعداد مطالب منتشر شده درکانال های عمومی تلگرام به زبان فارسی، بیشتراز تمام محتوای تولید شده درهمه سایت های فارسی زبان است. به عبارت دیگر تا به حال بیشتر از نصف محتوای تولید شده به زبان فارسی، داخل کانال های عمومی تلگرام منتشرشده است.با توجه به اهمیت موضوع، به کاربران و مخصوصا کسانی که کانال های تلگرامی دارند ، توصیه می شود که اولا بیش از پیش کانال های خود را درمحیط وب تبلیغ کنند تا با استفاده از گوگل و …. دردسترس همه علاقه مندان قرار گیرد و ثانیا به نکات زیر حتما توجه نمایند.به عنوان مثال آدرس کانال ما در تلگرام به شرح زیراست وبا این آدرس شما می توانید از داخل تلگرام وارد کانال ما شوید :https://t.me/soli_setولی اگرشما بخواهید بدون وارد شدن به تلگرام از کانال ما در وب بازدید کنید ، می بایست حتما آدرس زیر را تایپ نمایید :https://t.me/s/soli_setیعنی باید « اس اسلش » را قبل از نام هر کانال اضافه کنید تا درمحیط وب مشاهده شود.اگر تلگرام فیلتر باشد، این آدرس در وب هم  فیلتراست و با این که احتیاجی به تلگرام ندارید ولی درابتدای کار، باید از فیلترشکن استفاده نمائید. البته به راحتی می توانید یک کپی ازهمه مطالب کانال بگیرید و بعد از این مرحله و همچنین هنگام مطالعه ، می توانید فیلترشکن را خاموش کنید و دیگر احتیاجی به فیلترشکن هم نخواهید داشت . خوشبختانه کپی گرفتن از یک کانال درمحیط وب، بسیار ساده است. مثلا اگر از گوگل کروم استفاده می کنید، فقط با گرفتن « کنترل اس» می توانید یک کپی روی هارد خود ذخیره کنید. البته در اینجا هم باید به چند نکته مهم توجه داشته باشید.اولا قبل ازاین که از روی وب کپی کانال را بگیرید، حتما باید مطالب کانال را تا جایی که لازم دارید، یکبار ببینید تا همه پست ها باز شوند. اگراین کار را نکنید، کپی فقط ازمطالب پایانی کانال گرفته می شود. ثانیا برای دسترسی به مطالب روزانه کانال ها، همیشه باید کپی شما آپدیت شود. یعنی هر روز و یا هرچند روز یکبار با فیلتر شکن، کپی مطالب کانال های مورد نظرتان را بگیرید.ثالثا توجه نمایید که متاسفانه هنوز درمحیط وب، بعضی از انواع فایل ها، توسط تلگرام ساپورت نمی شوند. البته مسلما با این روش، نوشته ها، عکس ها و ……همیشه بدون مشکل کپی می شوند ولی به هر حال ممکن است در برخی موارد، تعدادی از پست ها کامل دیده نشوند.حالا اگر مایل هستید از تمام مطالب یک کانال، روی هارد خودتان کپی داشته باشید و ضمنا از گوگل کروم استفاده می کنید؛ کافیست « کنترل اس» را بزنید و به راحتی « وب پیج کامپلیت » را در هارد خودتان سیو کنید. از این لحظه به بعد بدون فیلتر شکن می توانید روی فایل ذخیره شده  کلیک نمایید تا مطالب کانال را ببینید.Ctrl s &gt;&gt;&gt; (Webpage, Complete) &gt;&gt;&gt; Save(SoliSet — Telegram) &gt;&gt;&gt; Clickهمانطور که قبلا گفته شد، حتما قبل از سیو کردن، همه کانال را مرور کنید تا همه پست ها باز شوند، زیرا فقط پست هایی از این کانال کپی خواهند شد که قبل از کپی گرفتن، باز شده باشند.ما یک سال پیش، دریکی ازمقاله های خود با نام « ضرورت دسترسی موتورهای جستجو به محتویات کانال های عمومی تلگرام » به ماهیت وعملکرد تلگرام مخصوصا درایران پرداختیم. درآن مقاله نشان دادیم که تلگرام فقط یک پیام رسان معمولی نیست و به نوعی شبکه اجتماعی محسوب می شود. ولی ازطرفی برای تبدیل شدن به یک شبکه اجتماعی کامل، امکان دسترسی موتورهای جستجو به محتویات کانال های عمومی ضروری است. خوشبختانه شرکت تلگرام با امکانات جدید خود ، گام مهمی برای رفع نقص مورد اشاره برداشته است. اگر مایل بودید مقاله قبلی ما را نیز مطالعه کنید.The necessity of reconciliation between Telegram messenger and search enginesSomayyeh Gholami and Mehran KazeminiaWebsite: soliset.com</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Thu, 30 Jan 2020 19:31:47 +0330</pubDate>
            </item>
                    <item>
                <title>میلیاردها دلار هزینه برق مصرفی برای استخراج بیت کوین؛ از چه منبعی و چگونه تامین می شود.</title>
                <link>https://virgool.io/farsimedia/%D9%85%DB%8C%D9%84%DB%8C%D8%A7%D8%B1%D8%AF%D9%87%D8%A7-%D8%AF%D9%84%D8%A7%D8%B1-%D9%87%D8%B2%DB%8C%D9%86%D9%87-%D8%A8%D8%B1%D9%82-%D9%85%D8%B5%D8%B1%D9%81%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1%D8%A7%D8%AC-%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86%D8%9B-%D8%A7%D8%B2-%DA%86%D9%87-%D9%85%D9%86%D8%A8%D8%B9%DB%8C-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AA%D8%A7%D9%85%DB%8C%D9%86-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-oitffo9fpxpm</link>
                <description>مصرف برق برای استخراج بیت کوین، بسیار زیاد و سرسام آور است. اخیرا دانشگاه کمبریج سامانه آنلاینی را  به همین منظور  راه اندازی کرده که هر سی ثانیه آپدیت می شود. در این سایت می توانید برآورد نسبتا دقیقی از مصرف برق برای استخراج بیت کوین، در سرتاسر دنیا را ملاحظه کنید. معمولا در این سامانه میانگین مصرف برق سالیانه برای همه دستگاههای ماین درحال کار، بین پنجاه تا هفتاد ترا وات ساعت در سال اعلام می شود. این عدد بیش از مصرف برق یک کشور ده میلیونی است و مسلما در سال، میلیاردها دلار هزینه دارد. در این مقاله نشان خواهیم داد که این هزینه سرسام آور از چه منبعی و چگونه تامین می شود. نویسندگان این مقاله خانم سمیه غلامی و مهران کاظمی نیا می باشند.The authors of the article are Somayyeh Gholami and Mehran Kazeminia.Cambridge Bitcoin Electricity Consumption Index (CBECI)فرض کنید یک واحد پول جدید توسط یک نهاد مالی به مردم معرفی و فروخته شود؛ ضمنا اعلام می شود که کاربران می توانند با اطمینان کامل و بدون هیچ محدودیت و بدون هیچ کارمزدی، با این پول جدید خرید و فروش نمایند. این نهاد مالی هیچ دریافتی به عنوان کارمزد و یا ..... از کاربران نخواهد داشت و مردم می توانند بصورت ناشناس ، آسان و مجانی این پول را معامله کنند. ضمنا به دلیل استفاده از یک تکنولوژی خاص، به دقت تک تک تراکنش ها می توان صد درصد اطمینان کرد و هیچ اشتباه، تخلف و فسادی در این نهاد مالی، امکان ندارد. تنها شرط این نهاد مالی این است که علاوه بر پول های موجود، حداقل سالیانه معادل سه میلیارد دلار از پول جدید چاپ کند و این پول های جدید را برای تامین هزینه های خودش به مردم بفروشد.شرط این نهاد مالی، عملا دریافت سه میلیارد دلار سالیانه را برای خودش تضمین می کند و مسلما به هیچ دریافت دیگری، مثل کارمزد تراکنش ها و ..... احتیاجی نخواهد داشت. این نهاد مالی دقیقا به همین دلیل برای همیشه می تواند بصورت رایگان خدمات خود را ارائه نماید. البته فراموش نکنیم که تزریق پول های جدید حتما آثار تورمی دارد و بصورت غیرمستقیم همه دارندگان این نوع پول ، تقبل هزینه می کنند. به عبارت دیگر سالیانه سه میلیارد دلار از ارزش پول همه دارندگان آن کم می شود تا هزینه های این نهاد مالی تامین گردد.شبکه غیر متمرکز بیت کوین، دقیقا مانند این نهاد مالی در مثال بالا، کار می کند. یعنی بیت کوین جدید در قالب «ماینینگ بیت کوین» تولید می کند و بلافاصله این بیت کوین های جدید را در اختیار ماینرهای برنده قرار می دهد و حتی برای هر تراکنش، کارمزد ناچیزی هم از فرستنده می گیرد. البته کارمزد دریافتی از تراکنش های بیت کوین، فقط پنج درصد از هزینه ماینرها را تامین می کند و بود یا نبود آن ، تاثیر چندانی ندارد. پس اصلا نباید از کارمزد کم تراکنش های بیت کوین تعجب کرد و مثلا آن را نوعی امتیاز برای بیت کوین دانست.فراموش نکنیم که تراکنش های بیت کوین از گرانترین و پرمصرف ترین تراکنش های دنیا هستند. زیرا برای هر تراکنش بیت کوین، هزاران برابر یک تراکنش عادی ویزا کارت، برق(هزینه) مصرف می شود. همانطور که ابتدای مقاله ملاحظه کردید، متاسفانه مصرف برق سالانه ماینرها از پنجاه ترا وات ساعت هم تجاوز می کند. ما تمام این موضوعات را قبلا بصورت مفصل در مقاله دیگری بررسی کرده ایم. شما می توانید با استفاده از لینک زیر به این مقاله دسترسی پیدا کنید. لینک فارسی هم داخل همین مقاله هست:Bitcoin mining; Big little lies (Hiding Bitcoin weaknesses is not a solution)همانطور که در لینک بالا توضیح داده ایم، در طول شبانه روز، ماینرها با مصرف سرسام آور برق و در رقابت با دیگر ماینرها، تلاش می کنند تا به عنوان ماینر برنده انتخاب شوند و بتوانند پاداش، و همچنین کارمزد دریافت کنند. تقریبا هر ده دقیقه یک ماینر برنده مشخص می شود و بلافاصله رقابت جدیدی آغاز می گردد.با محاسبات ماینرها هیچ موضوع و مسئله ای حل نمی شود، هیچ خلاقیتی در کار نیست، هیچ کمکی به علم ریاضیات نمی شود و اساسا این محاسبات برای حل یک مشکل واقعی انجام نمی شود. در این محاسبات فقط انبوهی از اعداد تصادفی یک به یک، به نوع خاصی از توابع ریاضی (هش محتویات بلاک) اضافه (ترکیب) می شوند و نتیجه این ترکیب برای هر کدام از اعداد تصادفی محاسبه می گردد. ماینر برنده کسی است که زودتر از بقیه بتواند یک عدد تصادفی مناسب را پیدا کند. طبق تعریف عدد تصادفی مناسب، عددی است که در ترکیب با تابع ریاضی مذکور، نتیجه معینی را تولید کند. پیدا کردن این اعداد تصادفی شباهت زیادی با بازی جک پات دارد. ما در بازی جک پات با انداختن سکه بیشتر در دستگاه، منتظر برنده شدن می شویم و در عملیات ماینینگ با اضافه کردن دستگاه ماین و مصرف برق بیشتر، شانس برنده شدن خود را افزایش می دهیم.تقریبا هر ده دقیقه یک بلاک به زنجیره بلاک بیت کوین اضافه می شود و بلافاصله به ماینر برنده آن بلاک، پاداش بعلاوه کارمزد همه تراکنش های همان بلاک پرداخت می گردد . یعنی سالیانه حدود ۵۲۵۶۰ بلاک ثبت می شود و با توجه به این که پاداش ماینر برنده فعلا ۱۲/۵ بیت کوین است، امسال حدود ۶۵۷۰۰۰ بیت کوین جدید تولید شده است . اگر میانگین قیمت بیت کوین را برای امسال ۵۵۰۰ دلار فرض کنیم، فقط همین امسال معادل سه میلیارد و ششصد میلیون دلار به عنوان پاداش به ماینرها پرداخت شده است. البته همانطورکه قبلا گفته شد، علاوه براین، ماینرها مبلغی را نیز به عنوان کارمزد تراکنش ها دریافت کرده اند که معمولا کمتر از پنج درصد پاداش ماینر برنده است.Bitcoin mining Vs. Slot machineمصرف سرسام آور برق توسط ماینرها، فقط هزینه ندارد. بلکه مطابق تحقیقی که در اکتبر سال ۲۰۱۸ در مورد تغییرات اقلیمی جهان انجام شد؛ استخراج بیت کوین می تواند در کمتر از سه دهه، دمای هوا را بیش از 2 درجه سانتیگراد در جهان افزایش دهد.Bitcoin emissions alone could push global warming above 2°Cالبته فراموش نکنیم که بیت کوین اولین شبکه بلاکچین جهان است و تا امروز محبوب ترین رمز ارز دنیا باقی مانده است و حتی المقدور می بایست حفظ شود. خالق بیت کوین ده سال قبل، مکانیسم اثبات کار را پیشنهاد داد که ایده بسیار خوبی برای راه اندازی اولین شبکه غیر متمرکز (در حد یک پروژه آزمایشی) بود. ولی این روش برای حیات بلند مدت حتما باید اصلاح شود و وضعیت فعلی بیت کوین، نمی تواند همیشه ادامه پیدا کند. ما در مقاله های متعدد، از منظرهای مختلفی به مشکلات مکانیسم اثبات کار بیت کوین و بقیه رمز ارزها پرداخته ایم و پیشنهادات خود را نیز در همین مقالات ارائه نموده ایم. مهمترین پیشنهاد ما برای حل کامل این مشکلات، نسل جدیدی از شبکه های بلاکچین می باشد. در این روش، قراردادهای هوشمند جایگزین ماینرها و سازندگان بلاک می شوند و به همین دلیل نام آن را «بلاکچین هوشمند»گذاشته ایم. شما می توانید با مطالعه مقالات زیر با کلیات این تکنولوژی آشنا شوید:What is Smart Blockchain? - By Somayyeh Gholami - Hacker NoonSmart Blockchain; The rescue of Bitcoin and saving electricity more than 50TWh per yearThe elimination of miners and block producers by using smart contractsبلاکچین هوشمند؛ تکنولوژی جدیدی برای نسل بعدی شبکه های بلاکچین است، ضمن این که می تواند حتی مشکلات و محدودیت های رمز ارزهایی مثل بیت کوین را نیز یکجا حل کند. در این تکنولوژی، بیت کوین همچنان به هیچ نهاد مالی و بانکی وابسته نخواهد بود. همین جا پایان مقاله است و امیدواریم مطالب ارائه شده، مورد توجه شما قرار گرفته باشد.August 31, 2019Somayyeh Gholami &amp; Mehran KazeminiaWebsite: soliset.com</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Sat, 31 Aug 2019 18:35:25 +0430</pubDate>
            </item>
                    <item>
                <title>همزمان با شش سالگی تلگرام؛ تا امروز بیش از نصف محتوای تولید شده به زبان فارسی، در سرورهای این مسنجر دفن شده و بی مصرف خواهند شد.</title>
                <link>https://virgool.io/farsimedia/%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86-%D8%A8%D8%A7-%D8%B4%D8%B4-%D8%B3%D8%A7%D9%84%DA%AF%DB%8C-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85%D8%9B-%D8%AA%D8%A7-%D8%A7%D9%85%D8%B1%D9%88%D8%B2-%D8%A8%DB%8C%D8%B4-%D8%A7%D8%B2-%D9%86%D8%B5%D9%81-%D9%85%D8%AD%D8%AA%D9%88%D8%A7%DB%8C-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%B4%D8%AF%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%D9%85%D8%B3%D9%86%D8%AC%D8%B1-%D8%AF%D9%81%D9%86-%D8%B4%D8%AF%D9%87-%D9%88-%D8%A8%DB%8C-%D9%85%D8%B5%D8%B1%D9%81-%D8%AE%D9%88%D8%A7%D9%87%D9%86%D8%AF-%D8%B4%D8%AF-taueacsddlo8</link>
                <description>این مقاله کوتاه توسط خانم سمیه غلامی و مهران کاظمی نیا نوشته شده است.The authors of the article are Somayyeh Gholami and Mehran Kazeminia.وقتی مطلب و یا خبری را در تلگرام پست می کنید، و یا عکس و ویدیویی را در کانال ها و گروههای تلگرامی به اشتراک می گذارید، این محتوا یک پیام خصوصی محسوب می شود. حتی اگر میلیون ها نفر این محتوا را در تلگرام ببینند و آن  را بپسندند، باز هم شما در یک محیط مسنجر (پیام رسان) هستید و هیچ موتور جستجویی به محیط مسنجرها دسترسی ندارد. خزنده های گوگل و بقیه موتورهای جستجو اصلا محتوای شما را نخواهند دید، و آن را ذخیره نمی کنند و به هیچ کس هم پیشنهاد نخواهند کرد. البته محتوای شما برای همیشه به عنوان یک پیام خصوصی در سرورهای تلگرام ذخیره می شود، ولی به هیچ جستجوگری در گوگل پیشنهاد نخواهد شد. مثلا اگر محتوای شما کاملترین و بهترین جواب برای پرسش یک جستجوگر در گوگل باشد و میلیون ها نفر قبلا محتوای شما را تحسین کرده باشند، باز هم جستجوگر نمی تواند مطلب شما را در گوگل پیدا کند. تنها روش این است که جستجوگر بتواند وارد تلگرام شود و با دانستن آدرس کانال تلگرامی شما، به مطلب مذکور دسترسی پیدا کند. مسلما این اتفاق کاملا بعید است و به این ترتیب محتوای ارزشمند شما عملا بی مصرف می شود. محیط یک مسنجر دقیقا مانند محیط ایمیل است. یعنی یک محیط تاریک برای موتورهای جستجو می باشد. تلگرام، واتس آپ و ..... همگی مسنجر هستند و اساسا با یک شبکه اجتماعی مثل فیسبوک تفاوت دارند. برای مثال سالهاست که داخل فیسبوک یک مسنجر فعال شده است، ولی محتوای این مسنجر برخلاف قسمت های دیگر فیسبوک، برای موتورهای جستجو قابل دسترس نیست. پس نتیجه می گیریم که وقتی ما از تلگرام برای کارهای شخصی و خصوصی استفاده می کنیم، هیچ مشکلی وجود ندارد. ولی نباید فراموش کنیم که همه مطالب، تبلیغات و محتوای گروهها و حتی کانال های عمومی که میلیونها نفر عضو دارند، عملا تفاوتی با پیام های خصوصی ندارند و آنها نیز برای همیشه از امکانات موتورهای جستجو بی بهره خواهند بود. Telegram Analyticsدر آگوست سال ۲۰۱۷ یکی از مسئولین دولتی ایران، آمار تکان دهنده ای را بصورت رسمی منتشر کرد. مطابق این گزارش، صرفا تعداد مطالب منتشر شده در کانال های عمومی تلگرام به زبان فارسی، با تعداد محتوای تولید شده در کل سایت های فارسی زبان برابری می کند. به عبارت دیگر نصف محتوای تولید شده به زبان فارسی در قسمت تاریک اینترنت ، یعنی داخل کانال های تلگرام منتشر شده است. حتی حجم محتوای کانال های عمومی تلگرام از آن زمان تا امروز، افزایش بیشتری هم داشته است. محتوای کانال های تلگرام ، بسیار متنوع است. موضوعاتی مثل تحلیل های اجتماعی، فرهنگ، تاریخ، ادبیات، سینما، موسیقی، عکس، تکنولوژی و…… کانال های زیادی را به خود اختصاص داده اند . حتی معمولا شاعران، نویسندگان، معلم های مدارس ، اساتید دانشگاه ها در رشته های مختلف، کانال اختصاصی خود را دارند. قطعا بسیاری از کانال هایی که ذکر شد، توسط هیچ وب سایتی پشتیبانی نمی شوند. یعنی معمولا نسخه ای از محتوای آنها در هیچ وب سایت و یا حداقل در یک شبکه اجتماعی هم وجود ندارد. متاسفانه تمام این مطالب و همه عکسها و ویدیوهای موجود در این نوع کانال ها ، پس از انتشار برای اعضای کانال و احیانا پس از فوروارد در گروههای دیگر، عملا شانس دیگری برای دیده شدن مجدد نخواهند داشت. زیرا همانطور که گفتیم، موتورهای جستجو به این محتویات دسترسی ندارند، ضمن این که توان جستجو در داخل تلگرام نیز بسیار محدود است. امکان ایجاد کانال در تلگرام، ربات های مبتنی بر هوش مصنوعی و بقیه قابلیت های این پلتفرم، باعث شده است که تلگرام در حال حاضر، فقط یک مسنجر معمولی نباشد. بلکه عملا تلفیقی از مسنجر و نوع خاصی از شبکه اجتماعی محسوب می شود. البته همانطورکه ملاحظه کردید، تلگرام فقط وقتی یک شبکه اجتماعی کامل محسوب می شود که موتورهای جستجو به محتویات عمومی، دسترسی داشته باشند. همچنین تفکیک مناسبی بین پیام خصوصی و محتوای عمومی بوجود آید. ژانویه امسال در مقاله دیگری، بصورت کامل ماهیت و مفهوم شبکه اجتماعی تلگرام را  بررسی کردیم . ضمن اینکه در این مقاله از ضرورت دسترسی موتورهای جستجو به محتویات کانال های عمومی تلگرام نوشتیم. لینک زیر مربوط به نسخه اصلی این مقاله به زبان انگلیسی است. البته داخل مقاله، لینک فارسی نیز موجود است :The necessity of reconciliation between Telegram messenger and search enginesپس از انتشار این نوع مقالات، خوشبختانه سه ماه پیش تلگرام امکان جدیدی را در اختیار کاربران خود قرار داد تا بتوانند بدون این که وارد تلگرام شوند، فقط محتوای بعضی از کانال های عمومی را روی وب مشاهده نمایند. مسلما این موضوع گام مهمی برای رفع نقص مورد اشاره در تلگرام است. با این که هنوز این امکان برای همه کانال ها موجود نیست و در محیط وب بعضی از انواع فایل ها  در دسترس نیستند و .....  باید خوشحال بود که حداقل بخشی از محتوای فارسی زبانان، امکان زنده ماندن را پیدا کرده اند. قبلا راجع به این امکان تلگرام ، دو مقاله کوتاه فارسی نیز نوشته ایم که می توانید مطالعه کنید: اکنون می توانید بدون این که وارد تلگرام شوید ، کانال های عمومی تلگرام را روی وب مشاهده نمایید.بدون ورود به تلگرام از محتوای کانال های عمومی کپی بگیرید و .......چه باید کرد ؟اصلا نباید این نقص تلگرام را کوچک دانست. خطر جدی برای بی مصرف شدن حجم بزرگی از محتواهای ارزشمند فارسی وجود دارد و نباید اجازه داد که به سادگی در سرورهای تلگرام دفن شوند. منصفانه نیست که مطالب و پست هایی که با استقبال میلیونی روبرو می شوند ، در صفحات گوگل هیچ جایگاهی نداشته باشند. می دانیم بسیاری از تولیدکنندگان محتوا از روی نا آگاهی ، به موضوع اهمیت نمی دهند. شاید اگر از اهمیت موضوع با خبر باشند ، برای مدیریت محتواهای خود، بهتر عمل نمایند . حتی وقتی مسئولین می خواستند جایگزین برای تلگرام انتخاب کنند ، بدون توجه به اهمیت موضوع ، بازهم می خواستند یک پیام رسان را جایگزین تلگرام کنند . کاملا مشخص است که اطلاع رسانی بسیار مهم و ضروری است و باید اهمیت و ارزش اطلاعات و محتویات قابل دسترس، بارها تشریح گردد. همه باید بدانند که یک پیام رسان را برای چه موضوعاتی می توانند به کار ببرند، و محیط وب و یک شبکه اجتماعی، چه تفاوتی با پیام رسان دارد. توصیه می شود برای تولید محتوا در تلگرام و هر پیام رسان دیگری ، بصورت همزمان از شبکه های اجتماعی معتبر و یا وب سایت شخصی استفاده گردد. به عبارت دیگر ذخیره یک محتوای ارزشمند در پیام رسان، اصلا کافی نیست. ضمن این که لازم است تولید کنندگان محتوا، اطلاعات خود را راجع به رتبه بندی گوگل و همچنین استفاده مناسب از هشتک و کلمات کلیدی، بالا ببرند. برای اطلاعات بیشتر راجع به مزایا و معایب تلگرام، می توانید مقاله زیر را نیز مطالعه کنید، لینک فارسی داخل مقاله وجود دارد:Telegram, Filtering, and Iran floods (The concealment of digital records in Telegram)به هرحال فراموش نکنید که اطلاع رسانی و یادآوری موضوع مقاله به نزدیکان خود، حتما موثر خواهد بود. August 27, 2019Somayyeh GholamiMehran KazeminiaWebsite: soliset.com</description>
                <category>Mehran Kazeminia</category>
                <author>Mehran Kazeminia</author>
                <pubDate>Tue, 27 Aug 2019 21:28:55 +0430</pubDate>
            </item>
            </channel>
</rss>