<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های HIGHer</title>
        <link>https://virgool.io/feed/@HIGH0101</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 13:53:44</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2538906/avatar/cvkrzb.png?height=120&amp;width=120</url>
            <title>HIGHer</title>
            <link>https://virgool.io/@HIGH0101</link>
        </image>

                    <item>
                <title>نصب کتابخانه پایتون pqcrypto در ویندوز و لینوکس</title>
                <link>https://virgool.io/@HIGH0101/%D9%86%D8%B5%D8%A8-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-pqcrypto-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D9%88-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-wybcnvos0bw1</link>
                <description>1- در ابتدا با استفاده از pip کتابخانه مورد نظر را در کامپیوتر خود نصب می کنیمpip install pqcryptoبا انجام این کار کتابخانه pqcrypto  روی سیستم ما نصب می شود اما به دلیل اینکه الگوریتم های رمزنگاری موجود در این کتابخانه با زبان c نوشته شده است مانند شکل زیر نمی توان بعد از نصب با pip آن ها را import  کرد و نیاز به کامپایل فایل compile.py دارد.برای حل این مشکل کافی است که به آدرس گیت هاب این کتابخانه رفته و فایل های آن را در سیستم خود clone  یا فایل zip ان را دانلود کنیم. سپس در فایل دانلود شده  فایل compile  را با دستورات زیر اجرا می کنیم تا فایل های زبانc  الگوریتم های رمزنگاری در دایرکتوری _kem و_sign  ایجاد شود.git clone https://github.com/kpdemetriou/pqcrypto.git
cd pqcrypto
sudo python3 compile.py* اگر در هنگام کامپایل در صورتی که با خطای نصب نبودن کتابخانه cffi مواجه شده اید، باید با استفاده از pip3 کتابخانه cffi را مانند دستور زیر نصب کنید و دوباره کامپایل کنید.sudo pip3 install cffiبعد از کامپایل کردن فایل های c در دایرکتوری pycrypto/_kem و  pycrypto/_sign ایجاد می شود. حال کافی است این دو را با دایرکتوری kem_ و sign_ که هنگام نصب کتابخانه با pip در مسیر زیر ایجاد می شود جایگزین کنیم./Home/.local/lib/python3.11/site-packages/pqcryptoبرای نصب این کتابخانه در ویندوز نیز روال کار مشابه با لینوکس است.  بعد از دانلود کتابخانه از گیت هاب در مسیر فایل دانلود شده دستور زیر را می زنیم تا اقدام به کامپایل فایل های c کند.cd pqcrypto
python compile.py سپس محتویات پوشه  pycrypto/_kem و  pycrypto/_sign را باید که مسیر کتابخانه های پایتون که در ویندوز معمولا در ادرس زیر است کپی می کنیم.C:\Users\...\AppData\Local\Programs\Python\Python3.10\Lib\site-packages\pqcryptoهمچنین برای نصب این کتابخانه در آنکوندا می توان از طریق ترمینال انکوندا یعنی Anaconda prompt  فایل compile را اجرا کرد. سپس فایل های  kem_ و sign_  را در محل کتابخانه های آناکوندا در ویندوز در مسیر  زیر قرار دارد.C:\Users\...\anaconda3\Lib\site-packages\pqcrypto</description>
                <category>HIGHer</category>
                <author>HIGHer</author>
                <pubDate>Tue, 17 Oct 2023 02:49:22 +0330</pubDate>
            </item>
                    <item>
                <title>تنظیمات Full Screen صفحه نمایش در VirtualBox</title>
                <link>https://virgool.io/@HIGH0101/%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%D8%AD%D8%A7%D9%84%D8%AA-full-screen-%D8%B5%D9%81%D8%AD%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-virtualbox-%D8%AF%D8%B1-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-tsr49831gpmd</link>
                <description>شاید برای شما پیش آمده باشد که نیاز داشته باشید اندازه صفحه نمایش سیستم عامل اوبونتو شما در virtualBox در حالت full screen قرار نداشته باشد یا اصطلاحا با اندازه مانیتور شما فیت نباشد. در این آموزش قصد دارم نحوه تنظیم کردن اندازه صفحه نمایش را به صورت Full screen توضیح بدم به طوری که اندازه سایز صفحه در ویرچوال باکس کاملا با اندازه مانیتورهای مختلف شما منطبق شود و فیت باقی بماند.بعد از نصب Ubuntu و اطمینان از اتصال به اینترنت روی ماشین دستورات زیر را در ترمینال وارد می کنیم.sudo apt-get update 
sudo apt-get install build-essential gcc make perl dkmsسپس از منوی  Device در گوشه سمت چپ بالای ماشین گزینه Insert Guest Additions CD image را مانند شکل می زنیم تا یک آیکن سی دی در نوار سمت چپ اوبونتو ظاهر شود.سپس در ترمینال دستور زیر را وارد میکنیم تا آدرس فایل VBox مورد نظر مانند شکل نشان داده شود.findmntدر شکل بالا simulator نام کامپیوتر شماست که در حال کار روی آن هستیم. حال آدرس بالا را کپی می کنیم و در ادامه آن فایل VBoxLinuxAdditions.run قرار می دهیم و مانند دستور زیر آن را در ترمینال وارد می کنیم تا تنظیمات مربوط به اندازه های مختلف صفحه نمایش روی ماشین شما نصب شود و سپس سیستم را reboot l می کنیم.نکته: مقدار VBox_GAs_7.0.8 بسته به ورژن virtualbox  شما متغیر خواهد بود.sudo /media/&#039;computer name&#039;/VBox_GAs_7.0.8/VBoxLinuxAdditions.run
sudo rebootبعد از انجام مراحل بالا و reboot شدن ماشین می توانیم اندازه های مختلف صفحه نمایش را بر اساس رزلوشن های مختلف مثل شکل زیر به دلخواه از منوی view انتخاب کنیم. این تنظیمات به صورت دائمی روی ماشین شما اعمال می شود و بعد از خاموش و روشن شدن ماشین تنظیمات به حال اولیه بر نمی گردد.نکته: بعد از انجام تنظیمات مربوط به ابعاد صفحه، تنظیمات مربوط به کپی کردن بین میزبان و ماشین مجازی نیز فعال خواهد شد. برای این کار کافی از تنظیمات ماشین (Setting) مانند شکل زیر حالت bidirectional  را فعال کنید.
</description>
                <category>HIGHer</category>
                <author>HIGHer</author>
                <pubDate>Tue, 10 Oct 2023 21:21:07 +0330</pubDate>
            </item>
                    <item>
                <title>استقرار و کار با یک قرارداد هوشمند روی شبکه خصوصی اتریوم</title>
                <link>https://virgool.io/@HIGH0101/%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1-%D9%88-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF-%D9%87%D8%A7%DB%8C-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%B1%D9%88%DB%8C-%D8%B4%D8%A8%DA%A9%D9%87-%D8%AE%D8%B5%D9%88%D8%B5%DB%8C-%D8%A7%D8%AA%D8%B1%DB%8C%D9%88%D9%85-vs9ht1buc7hf</link>
                <description>در این مقاله می خوام در مورد مراحل قرار دادن و کار با یک قرارداد هوشمند روی یک شبکه خصوصی (محلی) اتریوم که از قبل راه اندازی شده را توضیح بدهم. برای این کار اول از همه لازم است بدانیم یک شبکه خصوصی یا شخصی اتریوم چیست و چگونه راه اندازی می شود تا بتوانیم قرارداد هوشمند نوشته شده را روی این شبکه خصوصی یا شبیه سازی شده قرار دهیم و سپس با آن تعامل داشته باشیم. مراحل کار:1- راه اندازی شبکه خصوصی اتریوم: در ابتدا باید یک شبکه اتریوم را به صورت خصوصی راه اندازی کنیم. نحوه ایجاد یک شبکه خصوصی (محلی) اتریوم را می توانید در اینجا مشاهده کنید.2- نصب پیش نیازها: بعد از ایجاد شبکه اتریوم  نیاز به نصب موارد زیر در سیستم خود داریم:NodeJSNPMTraffuleSolidity compilerبرای نصب آخرین نسخه NodeJS در ubuntu  ابتدا دستورات زیر را انجام می دهیم.sudo apt install python3 curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bashسپس ترمینال را ببندید و دوباره باز کنید و با دستور زیر از دانلود NVM مطمئن شوید. nvm --versionحال می توانیم با استفاده از دستور زیر NodeJS را نصب کنیم تا جدید ترین نسخه nvm نصب شود. زیرا جدیدترین نسخه آن با نصب truffle به مشکل نمی خورد. nvm install --lts
sudo apt install make g++
sudo apt install npmو با استفاده از دو دستور زیر از نسخه و نصب شدن NodeJS و NPM مطمئن شویم.node -v
npm -vسپس با دستور زیر نصب Truffle انجام می شود.npm install -g truffle حال می توانیم کامپایلر زبان solidity را با استفاده از دستور زیر نصب کنیم. sudo npm install -g solcنصب  کامپایلر solidity  و مشاهده ورژن truffle3- آغاز یا مقدار دهی اولیه Truffle:  بعد از نصب Truffleبرای اینکه بتوانیم قرارداد را روی بلاکچین بگذاریم باید آن را راه اندازی اولیه (initiate) کنیم. با دستورات زیر می توانیم یک دایرکتوری به نام truffle را ایجاد  و آن را initiate کنیم.mkdir truffle
cd truffle
truffle initاین دستور فایل ها و دایرکتوری های ضروری برای پروژه Truffle ایجاد می کند که در تصویر زیر نشان داده شده:راه اندازی اولیه Truffle 3- تنظیمات شبکه برای Truffle:  برای اینکه Truffle اطلاعاتی در مورد قرارداد و اتصال آن به شبکه ما داشته باشد، باید فایل truffle-config.js که در مسیر دایرکتوری truffle  را براساس شبکه خودمان پیکره بندی کنیم. برای این کار باید ابتدا در مسیر دایرکتوری migrations (تصویر بالا) یک فایل به  نام &quot;2_deploy_contracts.js&quot; ایجاد می کنیم و دستورات زیر  را در آن قرار می دهیم و آن را ذخیره می کنیم. var HelloWorld = artifacts.require(&amp;quot./HelloWorld.sol&amp;quot);
module.exports = function(deployer) {
   deployer.deploy(HelloWorld);
}; برای اجرای truffle در شبکه خود، باید فایل “truffle_config.js” را در دایرکتوری “truffle” ویرایش کنیم. این فایل را باز و ورودی های زیر را مانند شکل زیر وارد می کنیم. قسمت from را باید آدرس گره ای که در ابتدای راه اندازی گره ایجاد کردیم قرار دهیم , قسمت مربوط به پورت در development باید همان پورت authtpc ایجاد شده برای گره باشد؟.4- ایجاد قرارداد هوشمند: در مرحله سوم قرارداد هوشمند خود را ایجاد می کنیم. ما در این جا برای تست عملیات یک قرارداد ساده ی نمایش &quot;!Hello World&quot; را ایجاد می کنیم. برای این کار یک فایل متنی به نام HelloWorld.sol ایجاد می کنیم و کد های زیر را در آن کپی و با پسوند sol ذخیره می کنیم:// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
contract HelloWorld {
    function sayHelloWorld() public pure returns (string memory) {
        return &amp;quotHello World!&amp;quot
    }
}بعد ایجاد این فایل، آن را در دایرکتوری contracts در Truffle قرار می دهیم.  بعد از ایجاد فایل حال باید آن را کامپایل کنیم. برای این کار در ترمینال  در مسیر پوشه contracts دستور زیر را وارد می کنیم.truffle compileبعد از اجرای این دستور فولدری به نام build در محل پروژه Truffle شما ایجاد می شود که حاوی قراردادهای کامپایل شده با پسوند json خواهد بود.* نکته: توجه داشته باشید که کد قرارداد شما باید با Truffle همخوانی داشته باشد در غیر این صورت با خطا زیر مواجه خواهید شد.کامپایل کردن  کد مربوط به قرارداد ادامه دارد ...</description>
                <category>HIGHer</category>
                <author>HIGHer</author>
                <pubDate>Tue, 23 May 2023 22:49:35 +0330</pubDate>
            </item>
                    <item>
                <title>راه اندازی شبکه خصوصی(محلی) اتریوم در VirtualBox</title>
                <link>https://virgool.io/@HIGH0101/%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%B4%D8%A8%DA%A9%D9%87-%D8%AE%D8%B5%D9%88%D8%B5%DB%8C-%D8%A7%D8%AA%D8%B1%DB%8C%D9%88%D9%85-%D8%AF%D8%B1-virtualbox-lirtf3vhyumf</link>
                <description>شاید برای شما پیش آمده باشد که بخواهید شبکه بلاکچین اتریوم را به صورت شخصی و محلی روی کامپیوتر (متفاوت از شبکه testnet و mainnet) خود شبیه سازی کنید تا بتوانید نحوه کار و فرایند ها در آن را بهتر درک کنید. در اینترنت منابع انگلیسی متعددی در مورد راه اندازی یک شبکه خصوصی اتریوم روی یک سیستم وجود دارد اما تعدادی از از آنها قدیمی هستند و به دلیل تغییرات و بروزرسانی های اتریوم در هنگام پیاده سازی دچار مشکل می شوند. در اینجا سعی کردم راه اندازی این شبکه اتریوم خصوصی را جامع تر، به صورت گام به گام و به زبان فارسی آموزش بدهم.همان طور که می دانیم شبکه اتریوم شامل گره هایی (node) است که به صورت همتا به همتا (peer-2-peer) با یک دیگر مانند شکل بالا در ارتباط هستند. این راهنما، راه اندازی شبکه اتریوم شامل 3 گره را با استفاده از Go Ethereum (Geth)  و به صورت خصوصی  روی سیستم شخصی خود (local) شبیه سازی می کند. هنگامی که شبکه بلاکچین اتریوم به شبکه اصلی متصل نباشند و به صورت محلی و مستقل کار کنند به این شبکه، یک شبکه خصوصی می گوییم. باید توجه داشت در اینجا خصوصی فقط به معنای جدا شده یا شخصی است، نه محافظت شده یا امن. این شبکه ی کاملاً محلی و خصوصی را می توان به عنوان پشتوانه ای برای توسعه دهندگان و کسانی که روی مسائل مربوط به شبکه/بلاک چین کار می کنند مفید دانست. به منظور شبیه سازی و درک راحت تر نحوه کار این شبکه خصوصی، ما در این جا تمام گره ها را روی یک ماشین مجازی (VM) در VitualBox و با سیستم عامل Ubuntu راه اندازی می کنیم. اما شما می توانید این کار را روی چند ماشین مجازی یا به صورت فیزیکی در یک شبکه واقعی محلی (LAN) پیاده سازی کنید. پیش نیاز ها:نصب و راه اندازی Ubuntu روی VitualBox  با استفاده از راهنمای اینجاانجام تنظیمات شبکه VirtualBox و اتصال به اینترنتسپس دستورات زیر را به ترتیب برای نصب go-ethereum (Geth) وارد می کنیم:sudo apt-get update
sudo apt-get upgrade
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get install ethereumنصب Geth روی Ubuntuراه اندازی شبکه خصوصی اتریوم:1- ساخت دایرکتوری Nodeها: چون قصد داریم تا شبکه ی ما دارای سه Node باشد بنابراین سه دایرکتوری برای هر سه Node می سازیم که همه آنها دارای بلاک genesis و network ID یکسان خواهند بود. اگر روی VM جداگانه در حال کار هستید هریک از این دایرکتوری ها روی یک ماشین خواهد بود.mkdir Node1 Node2 Node3ساخت دایرکتوری برای سه Node2- ساخت Account: هر گره دارای یک حساب کاربری (Account) خواهد بود که اطلاعات مربوط به هرکدام شامل کلید خصوصی و آدرس اتریوم در آن قرار می گیرد. برای این کار با استفاده از دستور زیر برای هر گره یک Account می سازیم که در آن &#x27;DirectoryName&#x27; (بدون &#x27; &#x27; ) نام دایرکتوری هر گره است:geth --datadir &#039;DirectoryName&#039; account newهنگام اجرای این دستور از ما می خواهد تا یک پسورد برای حفظ امنیت فایل های ساخته شده وارد کنیم زیرا این فایل ها دارای اطلاعات محرمانه کلید خصوصی است نیاز به وارد کردن پسورد دارد. بعد از اجرای این دستور در دایرکتوری هر Node اطلاعات مربوط به Account در داخل keystore قرار می گیرد.اطلاعات مربوط به Account هر Nodeهمان طور که مشاهده می شود هر Node یک ادرس عمومی دارد که در دایرکتوری keystore مربوط به هر Node ذخیره شده است.3- ذخیره پسورد: پسوردهایی را که هنگام ایجاد حساب‌ها وارد کرده‌اید را با استفاده از دستورات زیر ذخیره کنید.echo &#039;node1Password&#039; &gt; Node1/password.txt
echo &#039;node2Password&#039; &gt; Node2/password.txt
echo &#039;node3Password&#039; &gt; Node3/password.txtدر دستورات بالا بجای &#x27;node1Password&#x27; پسورد هنگام ساخت Account را قرار دهید (همراه با &#x27; &#x27; ) تا فایل پسورد مربوط به هر Node در داخل دایرکتوری آن ایجاد شود.4- ایجاد فایل genesis: اولین بلوک در بلاکچین، بلوکی به نام genesis است که به صورت دستی ایجاد می شود و بلوک های بعدی به صورت خودکار توسط شبکه به آن متصل (زنجیر) می شوند. اتریوم برای ایجاد یک شبکه خصوصی دو مکانیزم اجماع (consensus mechanism) شامل اثبات سهم (PoS) و اثبات اعتبار (PoA) برای ارائه می دهد. در این آموزش ما بلوک genesis را براساس PoA که از الگوریتم Clique استفاده می کند می سازیم. برای این کار اطلاعات تصویر زیر را در یک فایل متنی کپی می کنیم و با اسم genesis.json مانند شکل زیر ذخیره می کنیم. شما مس توانید این فایل را از اینجا دانلود کنید.بلوک genesisدر این فایل در کادر مربعی قرمز رنگ آدرس های عمومی سه Node قرار می گیرد که در مرحله ساخت account تولید شدند و در مقابل آن مقدار balance یا موجودی اتر هر Node را می توان به دلخواه براساس مقیاس Wei مشخص کرد. در قسمتی که با خط قرمز مشخص شده است آدرس Node تایید کننده تراکنش ها(signer/miner) را به دلخواه مشخص می کنیم. توضیحات مربوط به سایر پارامترهای این فایل خارج از حوصله این مقاله است.5- اختصاص بلوک genesis به Nodeها: حال باید هر گره(Node) در شبکه با همان بلوک genesis مقداردهی اولیه شود یا اصطلااحا به آن شناسانده شود.با استفاده از دستورات زیر فایل json را برای هر Node مقدار دهی اولیه می کنیم.geth init --datadir Node1 genesis.json
geth init --datadir Node2 genesis.json
geth init --datadir Node3 genesis.jsonاختصاص  بلوک genesis به Node1 6- راه اندازی bootnode:  گام بعدی پیکربندی یک bootnode است. گره های boot به عنوان تسهیل کننده اتصال گره ها  و در واقع راه ورود و اتصال گره ها شبکه بلاکچین به یکدیگر هستند. این گره ها هیچ اطلاعاتی از وضعیت شبکه بلاکچین را نگه داری نمی کنند و می توانند هر گره ای از شبکه باشند. برای پیکره بندی آن نیاز انجام به تنظیماتی روی آن گره دارد. در این آموزش از ابزار bootnode که همراه با geth نصب شده برای پیکربندی سریع و آسان یک گره استفاده می شود. ابتدا گره bootnode به یک کلید نیاز دارد که با دستور زیر می توان آن را ایجاد کرد، این دستور یک کلید را در  فایل boot.key ذخیره می کند: bootnode -genkey boot.keyکلید bootenodeبعد از ایجاد کلید با استفاده از دستور زیر bootnode را راه اندازی می کنیم. bootnode -nodekey boot.key -addr :30305انتخاب پورت ارسال شده به addr- دلخواه است، اما شبکه های عمومی اتریوم از 30303 استفاده می کنند، بنابراین بهتر است از  انتخاب این پورت اجتناب شود. این دستور log را روی ترمینال نشان می دهد که نشان دهنده در حال اجرا بودن آن است. مقدار enode در این log برای اتصال Nodeها به یکدیگر در گام بعد بکار می رود.راه اندازی bootnode7- ایجاد شبکه p2p واتصال Nodeها: اکنون می توان سه گره را راه اندازی و به یکدیگر متصل کرد. ترمینال های جداگانه ای را برای هر گره باز می کنیم و bootnode را در ترمینال اصلی بگذارید فعال باشد. در هر ترمینال، دستورات زیر را برای هر Node اجرا می کنیم. به هر Node شماره port-- و authrpc.port--  دلخواه اما متفاوت بدهید اما نقطه اتصال آنها یعنی bootnode و شناسه شبکه (net id) ثابت است که در مرحله قبل ساخته شد و با کادر قرمز نشان داده شد. همچنین آدرس عمومی هر Node و فایل رمز عبور برای هر گره که باید ارائه شود. دستور زیر برای اتصال گره ها از طریق bootnode را نشان می دهد.geth --datadir &#039;node direcrtory&#039; --port &#039;port number&#039; --bootnodes &#039;generated bootnode&#039;  --networkid &#039;net ID&#039; --unlock &#039;node address&#039; --password &#039;password file&#039; --authrpc.port &#039;port&#039;در دستورات بالا مقادیر مناسب(داخل &#x27; &#x27;) را برای هر گره قرار می دهیم. به عنوان مثال در این آموزش برای گره اول در ترمینال جداگانه دستور زیر را وارد می کنیم:  geth --datadir Node1 --port 30306 --bootnodes enode://2418adaab03e183a9aa96d75ca56134f97090073797400e2d6599ee211a9eca474eeb1c701dc6d34c00cf881a9fe92a22c0af9b48636bc6aacc8257083e19350@127.0.0.1:0?discport=30305  --networkid 123454321 --unlock 0xa200de2eec49c000fecaa0de891dfba1f0e58e62 --password Node1/password.txt --authrpc.port 8551
 در ترمینال دوم برای گره دوم: geth --datadir Node2 --port 30307 --bootnodes enode://2418adaab03e183a9aa96d75ca56134f97090073797400e2d6599ee211a9eca474eeb1c701dc6d34c00cf881a9fe92a22c0af9b48636bc6aacc8257083e19350@127.0.0.1:0?discport=30305  --networkid 123454321 --unlock  0xc4040f83c57587580d79102f6f4a7d3247ce9d33 --password Node2/password.txt --authrpc.port 8552در ترمینال سوم برای گره سوم: geth --datadir Node3 --port 30308 --bootnodes enode://2418adaab03e183a9aa96d75ca56134f97090073797400e2d6599ee211a9eca474eeb1c701dc6d34c00cf881a9fe92a22c0af9b48636bc6aacc8257083e19350@127.0.0.1:0?discport=30305  --networkid 123454321 --unlock  0x91e9e59c5de8bee175eeb2757a3d837081c5ab17 --password Node3/password.txt --authrpc.port 8553شکل زیر اجرای دستورات بالا را برای گره اول (Node1) نشان می دهد.دستور اتصال Node1 به bootnode* نکته: در صورتی که این عملیات روی چند VM جداگانه یا در شبکه محلی LAN اجرا می کنید باید توجه داشته باشید که به جای آدرس 127.0.0.1 در کادر قرمز رنگ تصویر بالا باید آدرس IP گره ای که bootnode روی آن فعال است را بدهید.  حال بعد از اجرا دستور در Node2 و به محض اتصال آن، یک اتصال روی ترمینال Node1 مانند شکل زیر ظاهر می شود.اتصال گره دوم و نمایش تعداد 1 اتصال در ترمینال Node1و بعد اتصال Node3 (گره سوم)  تعداد اتصال به 2 تغییر می کند. این بدین معنی است که هر Node به دو Node دیگر از متصل است. اتصال سومین گره و نمایش تعداد 2 اتصال در ترمینال Node1 در شکل زیر نمایی از ترمینال اتصال تمام Nodeها همراه با ترمینال bootnode را مشاهده می کنید که نشان می دهد هر گره به دو گره دیگر متصل است.نمایش اتصال تمام Nodeها در  یک نما8- اتصال هر Node به  بلاکچین eth: برای تعامل  و کار با گره ها و انجام کارهای مختلف مانند انتقال اتر یا گرفتن  موجودی و غیره، باید هر Node را به بلاک چین موردنظر متصل شویم. برای این کار یک ترمینال را باز کنید و از دستور زیر برای اتصال به Node استفاده کنید. دستور زیر را برای هر یک از گره ها در یک ترمینال جداگانه اجرا کنید زیرا در دنیای واقعی هر یک از این Nodeها روی سیستم های متفاوتی پیاده شده است.geth attach Node1/geth.ipc
geth attach Node2/geth.ipc
geth attach Node3/geth.ipcبعد از این دستور، یک کنسول API جاوا اسکریپت را به هر یک از گره ها وصل (attach) می کند تا بتوان مشخصات شبکه را پرس و جو (query) کرد و با این شبکه خصوصی اتریوم تعامل داشت. شکل زیر اتصال Node1 به شبکه بلاک چین را از طریق این API نشان می دهد.attach9- تعامل با شبکه: حال که تمام تنظیمات و اتصالات در شبکه را انجام دادیم و  به Node مورد نظر متصل کردیم می توانیم با شبکه از طریق این API تعامل داشته باشیم.به عنوان مثال برای نشان دادن تعداد Nodeهای متصل دستور زیر را وارد می کنیم &gt; net.peerCount برای دریافت میزان موجودی یک Account(همراه با &#x27; &#x27;) (هر Node دارای یک حساب است):&gt; eth.getBalance(&#039;AccountAddress&#039;)انتقال اتر :&gt; eth.sendTransaction({from: &#039;AddressSender&#039;, to: &#039;AddressreRecipient&#039;, value: &#039;Value&#039;})در شکل زیر نتایج اجرای این دستورات در شبکه اتریوم محلی که ما شبیه سازی کرده ایم را نشان می دهد. دستورات تعاملی  account مربوط به Node1  با شبکه بلاکچین از طریق  API   همان طور که در شکل بالا مشاهده می کنید مقدار موجودی دو Node همان مقداری است که در بلوک اولیه (genesis) قرار دادیم. همچنین بعد از انجام تراکنش (انتقال اتر) تاییدیه هش آن  تراکنش را نمایش می دهد. اما برای تکمیل فرایند انتقال باید miner/signer ها این تراکنش را تایید کنند تا انتقال اتر انجام شود.  اگر به خاطر داشته باشید، ما در گام 4 (ایجاد فایل genesis) گره اول را به عنوان تاییدکننده اولیه در آن مشخص کردیم. بنابراین می توانیم قابلیت mine کردن این گره را با استفاده از دستورات زیر در همین کنسول فعال کنیم تا تراکنش های ما تایید شوند: &gt; eth.accounts    #show list of account
&gt; miner.setEtherbase(&#039;NodeAddress&#039;)
&gt; miner.start(2)فعال کردن Node1 به عنوان miner/signer  و انجام تراکنش در تصویر زیر مشاهده می کنید که ترمینال مربوط به Node1 بعد از اجرای دستور بالا تبدیل به miner شده و علاوه بر نشان دادن تعداد اتصال ها، اطلاعات مربوط به بلوک و تراکنش های انجام شده در شبکه را پایش می کند.پایش شبکه  شامل تعداد اتصالات ، بلوک ها  و تراکنش ها برای آشنایی با دستورات بیشتر در این شبکه بلاکچین می توانید از کتابخانه های Web3js و Web3py که به زبان های جاوا اسکریپت و پایتون توسعه یافته اند استفاده کنید. این کتابخانه شامل مجموعه‌ای از ماژول‌هایی است که دارای قابلیت‌هایی برای کار با اکوسیستم اتریوم هستند. سخن پایانی:در این مقاله سعی کردم تا راه اندازی یک شبکه خصوصی اتریوم را به صورت گام به گام آموزش بدهم.  امیدوارم این آموزش برای علاقه مندان این حوزه مفید باشد. در صورت مشاهده اشکال نگارشی، محتوایی یا همچنین واضح نبودن توضیحات، می توانید در قسمت نظرات به من اطلاع دهید تا اسرع وقت آن را اصلاح کنم. </description>
                <category>HIGHer</category>
                <author>HIGHer</author>
                <pubDate>Mon, 22 May 2023 15:24:50 +0330</pubDate>
            </item>
            </channel>
</rss>