{"id":26384595,"url":"https://github.com/mlibre/goodchain","last_synced_at":"2025-10-15T02:08:49.512Z","repository":{"id":143889603,"uuid":"450599301","full_name":"mlibre/GoodChain","owner":"mlibre","description":"A decentralized blockchain. Written in Node.js","archived":false,"fork":false,"pushed_at":"2024-06-03T14:21:12.000Z","size":465,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-12T19:36:50.735Z","etag":null,"topics":["blockchain","blockchain-platform","blockchain-technology","consensus","distributed-ledger","git","leveldb","nodejs","permissioned-blockchain","permissionless","private-blockchain","proof-of-stake","proof-of-work","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlibre.png","metadata":{"files":{"readme":"readme-fa.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-21T18:28:18.000Z","updated_at":"2024-06-23T08:09:45.000Z","dependencies_parsed_at":"2024-01-12T15:19:12.471Z","dependency_job_id":"1178e4a6-33cd-4d4f-93a0-8c013ac08f36","html_url":"https://github.com/mlibre/GoodChain","commit_stats":{"total_commits":293,"total_committers":1,"mean_commits":293.0,"dds":0.0,"last_synced_commit":"7bec7e88cbf7563535e0ebf4c9540aa29c1d60ce"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibre%2FGoodChain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibre%2FGoodChain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibre%2FGoodChain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibre%2FGoodChain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlibre","download_url":"https://codeload.github.com/mlibre/GoodChain/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243991798,"owners_count":20380054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","blockchain-platform","blockchain-technology","consensus","distributed-ledger","git","leveldb","nodejs","permissioned-blockchain","permissionless","private-blockchain","proof-of-stake","proof-of-work","typescript"],"created_at":"2025-03-17T07:29:47.092Z","updated_at":"2025-10-15T02:08:44.472Z","avatar_url":"https://github.com/mlibre.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoodChain\n\nبه **GoodChain** خوش آمدید، یک پلتفرم بلاکچین که برای کاربران مبتدی و حرفه‌ای طراحی شده است و به دنبال سادگی و انعطاف‌پذیری است. با استفاده از `TypeScript` و `LevelDB`، **GoodChain** محیطی قابل تنظیم برای آزمایش الگوریتم‌های اجماع ارائه می‌دهد که شامل گزینه پیش‌فرض **اثبات کار ساده (PoW)** است.\n\n**GoodChain** یک دفتر کل توزیع‌شده است که امکان انجام تراکنش‌های امن و غیرقابل بازگشت را در یک شبکه همتا به همتای توزیع‌شده از نودها فراهم می‌کند و از یکپارچگی داده‌ها اطمینان حاصل می‌کند.\n\n## ویژگی‌های کلیدی 🚀\n\n- **اجماع پلاگینی**: با الگوریتم‌های اجماع خود آزمایش کنید یا از پیاده‌سازی پیش‌فرض PoW استفاده کنید\n- **API RESTful**: به راحتی سیستم‌های خارجی را با API کاربرپسند `GoodChain` یکپارچه کنید\n- **مدیریت کیف پول**: به‌طور کارآمد کیف پول‌های دیجیتال را مدیریت کنید، موجودی‌ها را ردیابی کنید و تراکنش‌ها را انجام دهید\n- **کشف و همگام‌سازی نودها**: نودهای دیگر در شبکه را کشف و با آنها همگام شوید تا یک حالت ثابت در سراسر بلاکچین حفظ شود\n- **استخر تراکنش‌ها**: تراکنش‌های در انتظار را با استخر تراکنش‌های داخلی مدیریت کنید\n- **اعتبارسنجی زنجیره**: از یکپارچگی بلاکچین با اعتبارسنجی بلاک‌ها و تراکنش‌ها اطمینان حاصل کنید\n- **EKVS**: `پایگاه داده‌های کلید-مقدار پایدار قابل تعبیه` پایگاه داده‌هایی هستند که می‌توانند در برنامه شما تعبیه شوند. این بدان معنی است که `نیاز به سرور جداگانه` یا فرایند برای مدیریت پایگاه داده نیست. `LevelDB` یک مثال محبوب از `EKVS` است. `GoodChain` از کتابخانه `Level`، یک رابط `Node.js` برای `LevelDB` استفاده می‌کند.\n\n## شروع به کار 🛠️\n\nبرای شروع ماجراجویی خود با `GoodChain`، مخزن را کلون کنید و وابستگی‌ها را نصب کنید:\n\n```bash\n# مخزن را کلون کنید\ngit clone https://github.com/mlibre/GoodChain.git\ncd GoodChain\n\n# نصب وابستگی‌های جهانی\nsudo npm install -g nodemon tsx typescript eslint vitest\n\n# نصب وابستگی‌های پروژه\nnpm install\n\n# کلیدهای ماینر خود را برای اولین بار تولید کنید\ntsx src/test/generateKeys.ts\n\n# اولین بلاک را استخراج کنید\ntsx src/test/init.ts\n\n# می‌توانید فایل‌های Node.js را مستقیماً اجرا کنید\nnode dist/test/init.js\n\n# نود GoodChain را اجرا کنید\nnpm run dev\n```\n\n## REST API\n\n### اجرای REST API 🌐\n\nسرور `RESTful API` را شروع کنید:\n\n```bash\nnpm run dev\n# یا\nnpm start -- --host \"http://localhost:3000\" --nodes \"http://localhost:3001\" --dbPath \"./assets/db/\" --minerKeysFile \"./assets/keys/miner.json\" --name \"GoodChain\"\n```\n\n### اجرای چندین نود REST 🌟\n\nچندین نود در شبکه GoodChain اجرا کنید! هر نود هویت منحصر به فرد خود را دارد و به شبکه غیرمتمرکز کمک می‌کند. برای مثال:\n\n```bash\n# نود 1\nnpm run 3000\n\n# نود 2\nnpm run 3001\n\n# نود 3\nnpm run 3002\n```\n\nهر نود داده‌های بلاکچین، کیف پول‌ها و فهرست نودهای خود را دارد، اما می‌توانند با یکدیگر ارتباط برقرار کنند و هماهنگ شوند تا یک حالت ثابت را حفظ کنند.\n\n### نقاط انتهایی RESTful API 🛣️\n\n`GoodChain` مجموعه‌ای غنی از نقاط انتهایی **HTTP API** را برای تعاملات بلاکچین شما فراهم می‌کند. کشف کنید، آزمایش کنید و برنامه‌های شگفت‌انگیز بسازید!\n\n| نقطه انتهایی          | متد  | توضیحات                                                                               |\n| --------------------- | ---- | ------------------------------------------------------------------------------------- |\n| `/block`              | GET  | اطلاعات مربوط به یک بلاک خاص یا آخرین بلاک در صورت عدم ارائه پارامتر را بازیابی می‌کند |\n| `/block`              | POST | یک بلاک جدید به بلاکچین اضافه می‌کند                                                   |\n| `/block/broadcast`    | GET  | آخرین بلاک را به همه نودهای شبکه پخش می‌کند                                            |\n| `/chain`              | GET  | کل بلاکچین را بازیابی می‌کند                                                           |\n| `/chain/update`       | POST | بلاکچین محلی را با بازیابی بلاک‌ها از نودهای دیگر به‌روزرسانی می‌کند                     |\n| `/mine`               | GET  | یک بلاک جدید استخراج می‌کند و به بلاکچین اضافه می‌کند                                   |\n| `/node`               | GET  | اطلاعات مربوط به همه نودهای شبکه را بازیابی می‌کند                                     |\n| `/node`               | POST | یک نود جدید به شبکه اضافه می‌کند                                                       |\n| `/node/update`        | POST | دانش نود محلی از شبکه را با بازیابی داده‌ها از نودهای دیگر به‌روزرسانی می‌کند            |\n| `/node/broadcast`     | GET  | نود محلی را به همه نودهای دیگر در شبکه معرفی می‌کند                                    |\n| `/transaction`        | GET  | تراکنش‌های در انتظار را بازیابی می‌کند                                                  |\n| `/transaction`        | POST | یک تراکنش جدید به استخر تراکنش‌ها اضافه می‌کند                                          |\n| `/transaction/update` | GET  | استخر تراکنش‌های محلی را با بازیابی تراکنش‌ها از نودهای دیگر به‌روزرسانی می‌کند           |\n| `/transaction/sign`   | POST | یک تراکنش را با یک کلید خصوصی امضا می‌کند                                              |\n| `/wallet`             | GET  | اطلاعات مربوط به کیف پول‌های بلاکچین را بازیابی می‌کند                                  |\n\n## تست پروژه 🧪\n\nبرای اطمینان از قابلیت اطمینان و درستی پروژه `GoodChain`، می‌توانید تست‌ها را اجرا کنید.\n\n### اجرای تمامی تست‌ها\n\nکل مجموعه تست‌ها را با استفاده از `vitest` اجرا کنید:\n\n```bash\nnpm run test\n# یا\nvitest run\n```\n\n### اجرای تست‌ها با رابط کاربری\n\nبرای تجربه تست تعاملی، از رابط کاربری `vitest` استفاده کنید:\n\n```bash\nnpm run test-ui\n# یا\nvitest --ui\n```\n\n### اجرای تست‌های خاص\n\nبرای اجرای یک فایل تست خاص، به عنوان مثال، تست‌های بلاکچین:\n\n```bash\nnpm run test src/test/blockchain.test.ts\n```\n\n## پشتیبانی و منابع 🤝\n\nبرای شروع سریع با درخواست‌های API، مجموعه **Bruno** را در پوشه `assets` بررسی کنید. برای کمک بیشتر، می‌توانید از صفحه [مسائل GitHub](https://github.com/mlibre/GoodChain/issues) ما بازدید کنید.\n\n## مجوز 📜\n\nاین پروژه تحت مجوز عمومی همگانی گنو منتشر شده است.\n\n## تاریخچه نسخه‌ها\n\n### نسخه 1\n\nاولین نسخه `GoodChain` یک پیاده‌سازی ساده بلاکچین بود که برای یادگیری فناوری بلاکچین استفاده می‌شد. از فایل‌های `json` برای ذخیره داده‌های بلاکچین استفاده می‌کرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/1.0.5) بررسی کنید.\n\n### نسخه 2\n\nنسخه دوم `GoodChain` با استفاده از `Node.js` و `Express.js` ساخته شد و از `git` برای ذخیره داده‌های بلاکچین استفاده می‌کرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/2.0.2) بررسی کنید.\n\n### نسخه 3 (آخرین نسخه)\n\nنسخه سوم `GoodChain` با استفاده از `TypeScript`، `Express.js` و `LevelDB` ساخته شده است.\n\n## کمک مالی 💖\n\nاگر `GoodChain` را مفید یافتید و مایل به حمایت از توسعه آن هستید، می‌توانید ETH را به آدرس زیر اهدا کنید:\n\n\u003e 0xc9b64496986E7b6D4A68fDF69eF132A35e91838e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlibre%2Fgoodchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlibre%2Fgoodchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlibre%2Fgoodchain/lists"}