Ethereum/Go-ethereum

  • 2022-01-17

این تعهد متعلق به هیچ شعبه ای در این مخزن نیست و ممکن است متعلق به یک چنگال در خارج از مخزن باشد.

نام در حال استفاده

یک برچسب در حال حاضر با نام شاخه ارائه شده وجود دارد. بسیاری از دستورات GIT نام برچسب و شاخه را می پذیرند ، بنابراین ایجاد این شاخه ممکن است باعث رفتار غیر منتظره شود. آیا مطمئن هستید که می خواهید این شاخه را ایجاد کنید؟

  • محلی
  • مکاشه

با استفاده از URL وب از Git یا Checkout با SVN استفاده کنید.

با CLI رسمی ما سریع کار کنید. بیشتر بدانید.

ورود به سیستم لازم

لطفاً برای استفاده از برنامه های کد وارد سیستم شوید.

راه اندازی دسک تاپ GitHub

اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.

راه اندازی دسک تاپ GitHub

اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.

راه اندازی Xcode

اگر هیچ اتفاقی نمی افتد ، Xcode را بارگیری کنید و دوباره امتحان کنید.

راه اندازی کد ویژوال استودیو

فضای کد شما یک بار آماده خواهد شد.

مشکلی برای تهیه فضای کدگذاری شما وجود داشت ، لطفاً دوباره امتحان کنید.

آخرین تعهد

آمار git

فایل ها

بارگیری آخرین اطلاعات متعهد انجام نشد.

readme. md

اجرای لایه رسمی اجرای Golang از پروتکل اتریوم.

ساختهای خودکار برای نسخه های پایدار و شعبه کارشناسی ارشد ناپایدار در دسترس است. بایگانی باینری در https://geth. ethereum. org/downloads/ منتشر می شود.

منبع

برای پیش نیازها و دستورالعمل های دقیق ساخت ، لطفاً دستورالعمل های نصب را بخوانید.

ساختمان GETH به یک GO (نسخه 1. 18 یا بالاتر) و یک کامپایلر C نیاز دارد. می توانید آنها را با استفاده از مدیر بسته مورد علاقه خود نصب کنید. پس از نصب وابستگی ها ، اجرا کنید

یا برای ساختن مجموعه کامل برنامه ها:

پروژه Go-ethereum با چندین بسته بندی/اجرایی موجود در فهرست CMD ارائه می شود.

فرمان شرح
گت مشتری اصلی Ethereum CLI ما. این نقطه ورود به شبکه Ethereum (شبکه اصلی ، آزمایش یا خصوصی) است که قادر به اجرای به عنوان یک گره کامل (پیش فرض) ، گره بایگانی (حفظ همه حالت تاریخی) یا یک گره سبک (بازیابی داده ها به صورت زنده) است. از طریق نقاط پایانی JSON RPC که در بالای HTTP ، WebSocket و/یا IPC حمل و نقل قرار دارد ، می تواند توسط سایر فرآیندها به عنوان دروازه ای به شبکه اتریوم استفاده شود. Get h-Help و صفحه CLI برای گزینه های خط فرمان.
شکاف ابزار امضای مستقل ، که می تواند به عنوان یک امضا کننده باطن برای GETH استفاده شود.
گنگ 2 برنامه های کاربردی برای تعامل با گره های موجود در لایه شبکه ، بدون اجرای یک blockchain کامل.
عبادت ژنراتور کد منبع برای تبدیل تعاریف قرارداد اتریوم به بسته های GO از نوع ایمن با استفاده از زمان آسان ، کامپایل. در صورت موجود بودن بایت کد قرارداد نیز بر اساس قرارداد ساده اتریوم ABIS با قابلیت های گسترده عمل می کند. با این حال ، همچنین پرونده های منبع استحکام را می پذیرد ، و توسعه را بسیار ساده تر می کند. لطفاً برای جزئیات بیشتر به صفحه DAPPS بومی ما مراجعه کنید.
چکمه نسخه حذف شده از اجرای مشتری Ethereum ما که فقط در پروتکل کشف گره شبکه شرکت می کند ، اما هیچ یک از پروتکل های کاربردی سطح بالاتر را اجرا نمی کند. می توان از آن به عنوان یک گره بوت استرپ سبک برای کمک به یافتن همسالان در شبکه های خصوصی استفاده کرد.
EVM نسخه ابزار توسعه دهنده EVM (دستگاه مجازی Ethereum) که قادر به اجرای قطعه های bytecode در یک محیط قابل تنظیم و حالت اجرای است. هدف آن اجازه دادن به اشکال زدایی جدا شده و ریز دانه از opcodes EVM (به عنوان مثال اجرای EVM-کد 60FF60FF-DEBUG) است.
RLPdump ابزار ابزار توسعه دهنده برای تبدیل RLP باینری (پیشوند طول بازگشتی) (رمزگذاری داده های مورد استفاده توسط پروتکل اتریوم هر دو شبکه و همچنین اجماع عاقلانه) به بازنمایی سلسله مراتبی کاربر پسند (به عنوان مثال RLPDUM P-EX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX-HEX).
توله سگ یک جادوگر CLI که به ایجاد یک شبکه جدید اتریوم کمک می کند.

مرور همه پرچم‌های خط فرمان ممکن در اینجا خارج از محدوده است (لطفاً به صفحه ویکی CLI ما مراجعه کنید)، اما ما چند ترکیب پارامتر رایج را برشمرده‌ایم تا شما را به سرعت در مورد نحوه اجرای نمونه geth خود آگاه کنیم.

  • CPU با 2+ هسته
  • 4 گیگابایت رم
  • 1 ترابایت فضای ذخیره سازی رایگان برای همگام سازی Mainnet
  • سرویس اینترنت دانلود 8 مگابایت بر ثانیه
  • CPU سریع با 4 هسته +
  • رم 16 گیگابایت +
  • SSD با کارایی بالا با حداقل 1 ترابایت فضای خالی
  • سرویس اینترنت دانلود 25+ مگابایت بر ثانیه

گره کامل در شبکه اصلی اتریوم

تا کنون رایج ترین سناریو این است که مردم بخواهند به سادگی با شبکه اتریوم تعامل داشته باشند: ایجاد حساب. انتقال وجه؛استقرار و تعامل با قراردادها. برای این مورد خاص، کاربر به داده های تاریخی چند ساله اهمیتی نمی دهد، بنابراین می توانیم به سرعت با وضعیت فعلی شبکه همگام سازی کنیم. برای انجام این کار:

این دستور خواهد شد:

  • Geth را در حالت همگام‌سازی فوری شروع کنید (پیش‌فرض، می‌توان آن را با پرچم --syncmode تغییر داد)، که باعث می‌شود در ازای اجتناب از پردازش کل تاریخچه شبکه اتریوم، که CPU بسیار فشرده است، داده‌های بیشتری دانلود کند.
  • کنسول جاوا اسکریپت تعاملی داخلی را راه اندازی کنید، (از طریق فرمان فرعی کنسول دنباله دار) که از طریق آن می توانید با استفاده از روش های web3 تعامل داشته باشید (توجه داشته باشید: نسخه web3 همراه با geth بسیار قدیمی است و با اسناد رسمی به روز نیست) و همچنینAPI های مدیریت خود geth. این ابزار اختیاری است و اگر آن را کنار بگذارید، همیشه می‌توانید با geth attach آن را به یک نمونه geth در حال اجرا متصل کنید.

یک گره کامل در شبکه آزمایشی Görli

در حال گذار به سمت توسعه‌دهندگان، اگر می‌خواهید با ایجاد قراردادهای اتریوم بازی کنید، تقریباً مطمئناً دوست دارید این کار را بدون نیاز به پول واقعی انجام دهید تا زمانی که کل سیستم را به دست بگیرید. به عبارت دیگر، به جای اتصال به شبکه اصلی، می خواهید با گره خود به شبکه آزمایشی بپیوندید که کاملاً معادل شبکه اصلی است اما فقط با play-Ether.

فرمان فرعی کنسول همان معنای بالا را دارد و در تست نت نیز به همان اندازه مفید است.

با این حال، مشخص کردن پرچم --goerli، نمونه geth شما را کمی مجدداً پیکربندی می کند:

  • به جای اتصال به شبکه اصلی اتریوم، مشتری به شبکه آزمایشی Görli متصل می شود که از بوت نودهای مختلف P2P، شناسه های شبکه مختلف و حالت های پیدایش استفاده می کند.
  • به جای استفاده از فهرست داده های پیش فرض (~برای مثال /. ethereum در لینوکس)، geth خود را یک سطح عمیق‌تر در یک زیرپوشه goerli لانه می‌کند (~/. ethereum/goerli در لینوکس). توجه داشته باشید، در OSX و لینوکس این همچنین به این معنی است که اتصال به یک گره آزمایشی در حال اجرا نیاز به استفاده از یک نقطه پایانی سفارشی دارد زیرا geth attach سعی می‌کند به‌طور پیش‌فرض به یک نقطه پایانی گره تولید متصل شود، به عنوان مثال، geth attach /goerli/geth. ipc . کاربران ویندوز تحت تأثیر این موضوع قرار نمی گیرند.

توجه: اگرچه برخی اقدامات حفاظتی داخلی از عبور تراکنش ها بین شبکه اصلی و شبکه آزمایشی جلوگیری می کند، همیشه باید از حساب های جداگانه برای بازی و پول واقعی استفاده کنید. اگر به صورت دستی حساب‌ها را جابه‌جا نکنید، geth به‌طور پیش‌فرض به درستی دو شبکه را جدا می‌کند و هیچ حسابی را بین آنها در دسترس قرار نمی‌دهد.

گره کامل در شبکه آزمایشی Rinkeby

Go Ethereum همچنین از اتصال به شبکه آزمایشی مبتنی بر اثبات صلاحیت قدیمی به نام Rinkeby پشتیبانی می کند که توسط اعضای انجمن اداره می شود.

گره کامل در شبکه آزمایشی Ropsten

علاوه بر Görli و Rinkeby ، Geth همچنین از Testnet Ropsten باستانی پشتیبانی می کند. شبکه تست Ropsten بر اساس الگوریتم اجماع اثبات کار Ethash است. به همین ترتیب ، از سربار اضافی خاصی برخوردار است و به دلیل مشکل/امنیت کم شبکه ، مستعد ابتلا به حملات سازماندهی مجدد است.

توجه: تنظیمات قدیمی GETH پایگاه داده Ropsten را در زیر مجموعه TestNet ذخیره می کند.

به عنوان جایگزینی برای انتقال پرچم های بیشمار به باینری Geth ، می توانید یک فایل پیکربندی را از طریق عبور دهید:

برای به دست آوردن ایده ای در مورد اینکه چگونه پرونده باید به نظر برسد ، می توانید از زیر مجموعه dumpconfig برای صادر کردن پیکربندی موجود خود استفاده کنید:

توجه: این فقط با Geth V1. 6. 0 و بالاتر کار می کند.

شروع سریع Docker

یکی از سریعترین راهها برای به کار بردن اتریوم و کار در دستگاه شما ، استفاده از Docker است:

این کار GETH را در حالت Snap-Sync با کمک هزینه DB 1 گیگابایت شروع می کند ، همانطور که دستور فوق انجام می دهد. همچنین برای ذخیره blockchain شما و همچنین نقشه درگاه های پیش فرض ، یک حجم مداوم در فهرست خانه شما ایجاد می کند. همچنین یک برچسب Alpine برای نسخه باریک تصویر در دسترس است.

اگر می خواهید به RPC از سایر ظروف و/یا میزبان ها دسترسی پیدا کنید ، فراموش نکنی د-http. addr 0. 0. 0. 0. به طور پیش فرض ، GETH به رابط محلی متصل می شود و نقاط پایانی RPC از خارج در دسترس نیست.

از نظر برنامه ای گره های GETH

به عنوان یک توسعه دهنده ، زودتر از این که می خواهید از طریق برنامه های خود با GETH و شبکه اتریوم تعامل برقرار کنید و از طریق کنسول به صورت دستی نباشید. برای کمک به این امر ، GETH پشتیبانی داخلی برای API های مبتنی بر JSON-RPC (API های استاندارد و API های خاص GETH) دارد. اینها را می توان از طریق HTTP ، WebSockets و IPC (سوکت های UNIX در سیستم عامل های مبتنی بر یونیکس و لوله های نامگذاری شده در ویندوز) در معرض دید.

رابط IPC به طور پیش فرض فعال می شود و تمام API های پشتیبانی شده توسط GETH را در معرض دید قرار می دهد ، در حالی که رابط های HTTP و WS باید به صورت دستی فعال شوند و فقط به دلایل امنیتی زیر مجموعه ای از API ها را در معرض دید قرار می دهند. این موارد را می توان روشن یا خاموش کرد و همانطور که انتظار دارید پیکربندی شود.

گزینه های API JSON-RPC مبتنی بر HTTP:

  • -HTTP سرور HTTP-RPC را فعال کنید
  • -http. addr رابط گوش دادن سرور HTTP-RPC (پیش فرض: localhost)
  • -http. port HTTP-RPC درگاه گوش دادن سرور (پیش فرض: 8545)
  • -HTTP. API API ارائه شده از طریق رابط HTTP-RPC (پیش فرض: ETH ، NET ، WEB3)
  • -http. corsdomain کاما لیست جدا شده دامنه هایی که از آنها می توانند درخواست های مبدأ متقاطع را بپذیرند (مرورگر اجباری)
  • -WS سرور WS-RPC را فعال کنید
  • -ws. addr ws-rpc رابط گوش دادن سرور (پیش فرض: localhost)
  • -Ws. port WS-RPC درگاه گوش دادن سرور (پیش فرض: 8546)
  • -ws. api api ارائه شده از طریق رابط WS-RPC (پیش فرض: ETH ، NET ، Web3)
  • -ws. origins مبدا که درخواست های WebSocket را بپذیرد
  • -SIPCDISABLE سرور IPC-RPC را غیرفعال کنید
  • -API PRODESIPCAPI از طریق رابط IPC-RPC (پیش فرض: مدیر ، اشکال زد
  • -نام پرونده ipcpath برای سوکت/لوله IPC در DataDir (مسیرهای صریح از آن فرار می کنند)

برای اتصال از طریق HTTP ، WS یا IPC به یک گره GETH که با پرچم های فوق تنظیم شده است ، باید از قابلیت های محیط برنامه نویسی خود (کتابخانه ها ، ابزارها و غیره) استفاده کنید و باید در تمام حمل و نقل JSON-RPC صحبت کنید. می توانید از همان اتصال برای درخواست های متعدد استفاده مجدد کنید!

توجه: لطفاً پیامدهای امنیتی باز کردن حمل و نقل مبتنی بر HTTP/WS را قبل از انجام این کار درک کنید!هکرها در اینترنت به طور فعال در تلاشند تا گره های اتریوم را با API های در معرض واژگون کنند!علاوه بر این ، همه زبانه های مرورگر می توانند به سرورهای وب در حال اجرا در محلی دسترسی پیدا کنند ، بنابراین صفحات وب مخرب می توانند سعی کنند API های محلی را در دسترس قرار دهند!

بهره برداری از یک شبکه خصوصی

حفظ شبکه خصوصی خود بیشتر درگیر است زیرا بسیاری از تنظیمات که در شبکه های رسمی اعطا می شوند ، باید به صورت دستی تنظیم شوند.

تعریف دولت پیدایش خصوصی

اول ، شما باید وضعیت پیدایش شبکه های خود را ایجاد کنید ، که همه گره ها باید از آنها آگاه باشند و با آنها موافقت کنند. این شامل یک پرونده JSON کوچک است (به عنوان مثال آن را Genesis. Json بنامید):

زمینه های فوق باید برای اکثر اهداف خوب باشد ، اگرچه توصیه می کنیم NONCE را به مقداری تصادفی تغییر دهید تا از گره های از راه دور ناشناخته جلوگیری کنید که بتوانند به شما متصل شوند. اگر می خواهید برخی از حساب ها را برای آزمایش آسان تر از قبل از آن استفاده کنید ، حساب ها را ایجاد کرده و قسمت Alloc را با آدرس آنها جمع کنید.

با استفاده از وضعیت پیدایش در پرونده JSON فوق ، باید قبل از شروع آن ، هر گره GETH را با آن آغاز کنید تا اطمینان حاصل شود که تمام پارامترهای blockchain به درستی تنظیم شده اند:

ایجاد نقطه rendezvous

با تمام گره هایی که می خواهید به حالت اولیه در حالت دلخواه اجرا کنید ، باید یک گره Bootstrap را شروع کنید که دیگران می توانند از آن استفاده کنند تا یکدیگر را در شبکه و/یا از طریق اینترنت پیدا کنند. روش تمیز پیکربندی و اجرای یک bootnode اختصاصی است:

با استفاده از BootNode Online ، URL Enode را نشان می دهد که گره های دیگر می توانند برای اتصال به آن و تبادل اطلاعات همسالان از آن استفاده کنند. حتماً اطلاعات آدرس IP نمایش داده شده (احتمالاً [::]) را با IP بیرونی در دسترس خود جایگزین کنید تا URL Enode واقعی را بدست آورید.

توجه: شما همچنین می توانید از یک گره GETH تمام عیار به عنوان یک bootnode استفاده کنید ، اما این روش کمتری توصیه می شود.

شروع گره های عضو خود

با استفاده از bootnode عملیاتی و خارج از کشور (می توانید Telnet را امتحان کنید تا اطمینان حاصل شود که در واقع قابل دسترسی است) ، هر گره بعدی GETH را شروع کنید تا از طریق پرچ م-BootNodes به BootNode اشاره شود. همچنین احتمالاً مطلوب خواهد بود که فهرست داده های شبکه خصوصی خود را از هم جدا کنید ، بنابراین یک پرچم سفارش ی-Datadir را نیز مشخص کنید.

توجه: از آنجا که شبکه شما کاملاً از شبکه های اصلی و تست قطع خواهد شد ، برای پردازش معاملات و ایجاد بلوک های جدید برای شما نیز باید یک معدنچی را پیکربندی کنید.

اداره یک معدنچی خصوصی

استخراج در شبکه عمومی اتریوم یک کار پیچیده است زیرا تنها با استفاده از GPU امکان پذیر است و به یک نمونه OpenCL یا CUDA که به عنوان مثال Ethminer فعال شده است ، امکان پذیر است. برای کسب اطلاعات در مورد چنین مجموعه ای ، لطفاً با Subreddit و مخزن Ethminer با Ethermining مشورت کنید.

با این حال ، در یک تنظیم شبکه خصوصی ، یک نمونه معدنکار CPU برای اهداف عملی بیش از حد کافی است زیرا می تواند بدون نیاز به منابع سنگین ، یک جریان پایدار از بلوک ها را ایجاد کند (در نظر بگیرید که روی یک موضوع واحد اجرا کنید ، نیازی به چندین مورد نیست. یا)برای شروع یک نمونه GETH برای معدن ، آن را با تمام پرچم های معمول خود اجرا کنید ، که توسط:

که بلوک ها و معاملات معدن را در یک موضوع CPU واحد شروع می کند و کلیه دادرسی ها را به حساب مشخص شده توس ط-miner. etherbase اعتبار می دهد. شما می توانید معدن را با تغییر پیش فرض محدوده گاز پیش فرض همگرا به ( -miner. targetgaslimit) تنظیم کنید و معاملات قیمت در ( -miner. gasprice) پذیرفته می شود.

با تشکر از شما برای کمک به کمک به کد منبع!ما از هر کسی در اینترنت استقبال می کنیم و حتی از کوچکترین اصلاحات نیز سپاسگزاریم!

اگر می خواهید در Go-Ethereum مشارکت کنید ، لطفاً چنگال ، اصلاح ، تعهد و ارسال درخواست کشش را برای نگهدارنده ها برای بررسی و ادغام در پایه کد اصلی ارسال کنید. اگر می خواهید تغییرات پیچیده تری را ارائه دهید ، لطفاً ابتدا با Core Devs در سرور Discord ما بررسی کنید تا اطمینان حاصل کنید که این تغییرات مطابق با فلسفه عمومی پروژه است و/یا بازخورد اولیه دریافت کنید که می تواند هم تلاش شما را انجام دهدسبک تر و همچنین روشهای بررسی و ادغام ما سریع و ساده.

لطفاً اطمینان حاصل کنید که مشارکتهای شما به دستورالعمل های برنامه نویسی ما پایبند است:

  • کد باید به دستورالعمل های رسمی قالب بندی GO رعایت کند (یعنی از GOFMT استفاده می کند).
  • کد باید با رعایت دستورالعمل های رسمی تفسیر GO ثبت شود.
  • درخواست های کشویی باید بر اساس آن بر اساس و در برابر شعبه استاد باز شوند.
  • پیام های تعهد باید با بسته (های) اصلاح شده پیشوند شوند.
    • به عنوان مثال."ETH ، RPC: پیکربندی های ردیابی را اختیاری کنید"

    لطفاً برای اطلاعات بیشتر در مورد پیکربندی محیط ، مدیریت وابستگی به پروژه و روشهای آزمایش ، به راهنمای توسعه دهندگان مراجعه کنید.

    کتابخانه Go-Ethereum (یعنی کلیه کد خارج از فهرست CMD) تحت مجوز عمومی عمومی GNU کمتر V3. 0 مجوز دارد ، همچنین در پرونده Coping. lesser در مخزن ما گنجانده شده است.

    باینری های Go-ethereum (یعنی کلیه کد های موجود در فهرست CMD) تحت مجوز عمومی عمومی GNU v3. 0 مجاز هستند ، همچنین در مخزن ما در پرونده کپی قرار دارد.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.