-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
94 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,117 +1,154 @@ | ||
# GoodChain | ||
|
||
به **GoodChain** خوش آمدید، یک پلتفرم بلاکچین طراحی شده برای مبتدیان و افراد با تجربه که به دنبال سادگی و انعطاف پذیری هستند. ساخته شده با `TypeScript` و `LevelDB(به زودی)`, GoodChain یک محیط قابل تنظیم برای آزمایش الگوریتمهای اجماع فراهم میکند، از جمله گزینه پیش فرض **اثبات کار (PoW)**. | ||
به **GoodChain** خوش آمدید، یک پلتفرم بلاکچین که برای کاربران مبتدی و حرفهای طراحی شده است و به دنبال سادگی و انعطافپذیری است. با استفاده از `TypeScript` و `LevelDB`، **GoodChain** محیطی قابل تنظیم برای آزمایش الگوریتمهای اجماع ارائه میدهد که شامل گزینه پیشفرض **اثبات کار ساده (PoW)** است. | ||
|
||
ا **GoodChain** یک دفتر کل توزیع شده است که معاملات امن و غیرقابل بازگشت را در یک شبکه همتا به همتا از گرهها امکانپذیر میسازد و اطمینان از یکپارچگی دادهها را فراهم میکند. | ||
**GoodChain** یک دفتر کل توزیعشده است که امکان انجام تراکنشهای امن و غیرقابل بازگشت را در یک شبکه همتا به همتای توزیعشده از نودها فراهم میکند و از یکپارچگی دادهها اطمینان حاصل میکند. | ||
|
||
## ویژگیهای کلیدی 🚀 | ||
|
||
- **اجماع پلاگینی**: با الگوریتمهای اجماع خودتان سرگرم شوید یا از پیادهسازی پیش فرض PoW استفاده کنید | ||
- ا **API RESTful**: سیستمهای خارجی را با API کاربر پسند GoodChain به راحتی یکپارچه کنید | ||
- **مدیریت کیف پول**: مدیریت کیف پولهای دیجیتال | ||
- **کشف و همگام سازی گرهها**: کشف و همگامسازی با سایر گرهها در شبکه برای حفظ وضعیت یکنواخت بلاکچین | ||
- **استخر معاملات**: مدیریت استخر تراکنش ها | ||
- **اعتبارسنجی زنجیرهای**: بررسی یکپارچگی بلاکچین با اعتبارسنجی بلوکها و معاملات | ||
- **اجماع پلاگینی**: با الگوریتمهای اجماع خود آزمایش کنید یا از پیادهسازی پیشفرض PoW استفاده کنید | ||
- **API RESTful**: به راحتی سیستمهای خارجی را با API کاربرپسند `GoodChain` یکپارچه کنید | ||
- **مدیریت کیف پول**: بهطور کارآمد کیف پولهای دیجیتال را مدیریت کنید، موجودیها را ردیابی کنید و تراکنشها را انجام دهید | ||
- **کشف و همگامسازی نودها**: نودهای دیگر در شبکه را کشف و با آنها همگام شوید تا یک حالت ثابت در سراسر بلاکچین حفظ شود | ||
- **استخر تراکنشها**: تراکنشهای در انتظار را با استخر تراکنشهای داخلی مدیریت کنید | ||
- **اعتبارسنجی زنجیره**: از یکپارچگی بلاکچین با اعتبارسنجی بلاکها و تراکنشها اطمینان حاصل کنید | ||
- **EKVS**: `پایگاه دادههای کلید-مقدار پایدار قابل تعبیه` پایگاه دادههایی هستند که میتوانند در برنامه شما تعبیه شوند. این بدان معنی است که `نیاز به سرور جداگانه` یا فرایند برای مدیریت پایگاه داده نیست. `LevelDB` یک مثال محبوب از `EKVS` است. `GoodChain` از کتابخانه `Level`، یک رابط `Node.js` برای `LevelDB` استفاده میکند. | ||
|
||
## شروع به کار 🛠️ | ||
|
||
برای آغاز ماجراجویی خود در `GoodChain`، به سادگی مخزن را کلون کنید و وابستگیها را نصب کنید: | ||
برای شروع ماجراجویی خود با `GoodChain`، مخزن را کلون کنید و وابستگیها را نصب کنید: | ||
|
||
```bash | ||
# مخزن را کلون کنید | ||
git clone https://github.com/mlibre/GoodChain.git | ||
cd GoodChain | ||
|
||
# نصب TypeScript، tsx، nodemon و Eslint | ||
# نصب وابستگیهای جهانی | ||
sudo npm install -g nodemon tsx typescript eslint vitest | ||
|
||
sudo npm install -g nodemon tsx typescript eslint | ||
# نصب وابستگیها | ||
# نصب وابستگیهای پروژه | ||
npm install | ||
|
||
# تولید کلیدهای ماینر خود برای اولین بار | ||
# کلیدهای ماینر خود را برای اولین بار تولید کنید | ||
tsx src/test/generateKeys.ts | ||
|
||
# ماین اولین بلوک | ||
# اولین بلاک را استخراج کنید | ||
tsx src/test/init.ts | ||
|
||
# شما همچنین میتوانید فایلهای Nodejs را مستقیماً اجرا کنید | ||
# میتوانید فایلهای Node.js را مستقیماً اجرا کنید | ||
node dist/test/init.js | ||
|
||
# اجرای گره GoodChain | ||
# نود GoodChain را اجرا کنید | ||
npm run dev | ||
``` | ||
|
||
## API REST | ||
## REST API | ||
|
||
### اجرای API REST 🌐 | ||
### اجرای REST API 🌐 | ||
|
||
سرور `RESTful API` را راهاندازی کنید: | ||
سرور `RESTful API` را شروع کنید: | ||
|
||
```bash | ||
npm run dev | ||
# یا | ||
npm start -- --host "http://localhost:3000" --nodes "http://localhost:3001" --dbPath "./assets/db/" --minerKeysFile "./assets/keys/miner.json" --name "GoodChain" | ||
``` | ||
|
||
### اجرای چندین گره REST 🌟 | ||
### اجرای چندین نود REST 🌟 | ||
|
||
با اجرای چندین گره در شبکه GoodChain سرگرم شوید! هر گره دارای هویت منحصربهفرد خود خواهد بود و به جادوی غیرمتمرکز کمک خواهد کرد. به عنوان مثال: | ||
چندین نود در شبکه GoodChain اجرا کنید! هر نود هویت منحصر به فرد خود را دارد و به شبکه غیرمتمرکز کمک میکند. برای مثال: | ||
|
||
```bash | ||
# گره 1 | ||
# نود 1 | ||
npm run 3000 | ||
|
||
# گره 2 | ||
# نود 2 | ||
npm run 3001 | ||
|
||
# گره 3 | ||
# نود 3 | ||
npm run 3002 | ||
``` | ||
|
||
هر گره دادههای بلاکچین، کیف پولها و لیست گرههای خود را خواهد داشت، اما آنها میتوانند با یکدیگر ارتباط برقرار کنند و همگام شوند تا وضعیت یکنواختی را حفظ کنند. | ||
|
||
### نقاط پایانی API REST 🛣️ | ||
|
||
`GoodChain` یک گنجینه از نقاط پایانی **http API** را برای تعاملات بلاکچینی شما فراهم میکند. کاوش کنید، آزمایش کنید و از ساخت برنامههای شگفتانگیز لذت ببرید! | ||
|
||
| نقطه پایانی | روش | توضیحات | | ||
| --------------------- | ---- | ------------------------------------------------------------------------------ | | ||
| `/block` | GET | اطلاعات یک بلوک خاص یا آخرین بلوک را در صورت عدم ارائه پارامترها بازیابی میکند | | ||
| `/block` | POST | یک بلوک جدید به بلاکچین اضافه میکند | | ||
| `/block/broadcast` | GET | آخرین بلوک را به تمام گرههای شبکه منتشر میکند | | ||
| `/chain` | GET | کل بلاکچین را بازیابی میکند | | ||
| `/chain/update` | POST | بلاکچین محلی را با بازیابی بلوکها از گرههای دیگر بهروزرسانی میکند | | ||
| `/mine` | GET | یک بلوک جدید را ماین کرده و به بلاکچین اضافه میکند | | ||
| `/node` | GET | اطلاعات همه گرههای شبکه را بازیابی میکند | | ||
| `/node` | POST | یک گره جدید به شبکه اضافه میکند | | ||
| `/node/update` | POST | اطلاعات محلی گره را با بازیابی دادهها از گرههای دیگر بهروزرسانی میکند | | ||
| `/node/broadcast` | GET | گره محلی را به تمام گرههای شبکه معرفی میکند | | ||
| `/transaction` | GET | معاملات در حال انتظار را بازیابی میکند | | ||
| `/transaction` | POST | یک معامله جدید به استخر معاملات اضافه میکند | | ||
| `/transaction/update` | GET | استخر معاملات محلی را با بازیابی معاملات از گرههای دیگر بهروزرسانی میکند | | ||
| `/transaction/sign` | POST | یک معامله را با یک کلید خصوصی امضا میکند | | ||
| `/wallet` | GET | اطلاعات کیف پولهای موجود در بلاکچین را بازیابی میکند | | ||
هر نود دادههای بلاکچین، کیف پولها و فهرست نودهای خود را دارد، اما میتوانند با یکدیگر ارتباط برقرار کنند و هماهنگ شوند تا یک حالت ثابت را حفظ کنند. | ||
|
||
### نقاط انتهایی RESTful API 🛣️ | ||
|
||
`GoodChain` مجموعهای غنی از نقاط انتهایی **HTTP API** را برای تعاملات بلاکچین شما فراهم میکند. کشف کنید، آزمایش کنید و برنامههای شگفتانگیز بسازید! | ||
|
||
| نقطه انتهایی | متد | توضیحات | | ||
| --------------------- | ---- | ------------------------------------------------------------------------------------- | | ||
| `/block` | GET | اطلاعات مربوط به یک بلاک خاص یا آخرین بلاک در صورت عدم ارائه پارامتر را بازیابی میکند | | ||
| `/block` | POST | یک بلاک جدید به بلاکچین اضافه میکند | | ||
| `/block/broadcast` | GET | آخرین بلاک را به همه نودهای شبکه پخش میکند | | ||
| `/chain` | GET | کل بلاکچین را بازیابی میکند | | ||
| `/chain/update` | POST | بلاکچین محلی را با بازیابی بلاکها از نودهای دیگر بهروزرسانی میکند | | ||
| `/mine` | GET | یک بلاک جدید استخراج میکند و به بلاکچین اضافه میکند | | ||
| `/node` | GET | اطلاعات مربوط به همه نودهای شبکه را بازیابی میکند | | ||
| `/node` | POST | یک نود جدید به شبکه اضافه میکند | | ||
| `/node/update` | POST | دانش نود محلی از شبکه را با بازیابی دادهها از نودهای دیگر بهروزرسانی میکند | | ||
| `/node/broadcast` | GET | نود محلی را به همه نودهای دیگر در شبکه معرفی میکند | | ||
| `/transaction` | GET | تراکنشهای در انتظار را بازیابی میکند | | ||
| `/transaction` | POST | یک تراکنش جدید به استخر تراکنشها اضافه میکند | | ||
| `/transaction/update` | GET | استخر تراکنشهای محلی را با بازیابی تراکنشها از نودهای دیگر بهروزرسانی میکند | | ||
| `/transaction/sign` | POST | یک تراکنش را با یک کلید خصوصی امضا میکند | | ||
| `/wallet` | GET | اطلاعات مربوط به کیف پولهای بلاکچین را بازیابی میکند | | ||
|
||
## تست پروژه 🧪 | ||
|
||
برای اطمینان از قابلیت اطمینان و درستی پروژه `GoodChain`، میتوانید تستها را اجرا کنید. | ||
|
||
### اجرای تمامی تستها | ||
|
||
کل مجموعه تستها را با استفاده از `vitest` اجرا کنید: | ||
|
||
```bash | ||
npm run test | ||
# یا | ||
vitest run | ||
``` | ||
|
||
### اجرای تستها با رابط کاربری | ||
|
||
برای تجربه تست تعاملی، از رابط کاربری `vitest` استفاده کنید: | ||
|
||
```bash | ||
npm run test-ui | ||
# یا | ||
vitest --ui | ||
``` | ||
|
||
### اجرای تستهای خاص | ||
|
||
برای اجرای یک فایل تست خاص، به عنوان مثال، تستهای بلاکچین: | ||
|
||
```bash | ||
npm run test src/test/blockchain.test.ts | ||
``` | ||
|
||
## پشتیبانی و منابع 🤝 | ||
|
||
برای شروع سریع با درخواستهای API، مجموعه **Bruno** را در پوشه `assets` بررسی کنید. | ||
برای شروع سریع با درخواستهای API، مجموعه **Bruno** را در پوشه `assets` بررسی کنید. برای کمک بیشتر، میتوانید از صفحه [مسائل GitHub](https://github.com/mlibre/GoodChain/issues) ما بازدید کنید. | ||
|
||
## مجوز 📜 | ||
|
||
این پروژه تحت مجوز عمومی همگانی GNU مجوز داده شده است | ||
این پروژه تحت مجوز عمومی همگانی گنو منتشر شده است. | ||
|
||
## تاریخچه نسخهها | ||
|
||
### نسخه 1 | ||
|
||
## نسخه 1 | ||
اولین نسخه `GoodChain` یک پیادهسازی ساده بلاکچین بود که برای یادگیری فناوری بلاکچین استفاده میشد. از فایلهای `json` برای ذخیره دادههای بلاکچین استفاده میکرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/1.0.5) بررسی کنید. | ||
|
||
اولین نسخه `GoodChain` یک پیادهسازی ساده بلاکچین بود که برای یادگیری فناوری بلاکچین استفاده میشد. به سادگی از فایلهای `json` برای ذخیره دادههای بلاکچین استفاده میکرد. میتوانید [نسخهها](https://github.com/mlibre/GoodChain/releases/tag/1.0.5) را برای مشاهده کد بررسی کنید. | ||
### نسخه 2 | ||
|
||
## نسخه 2 (آخرین نسخه) | ||
نسخه دوم `GoodChain` با استفاده از `Node.js` و `Express.js` ساخته شد و از `git` برای ذخیره دادههای بلاکچین استفاده میکرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/2.0.2) بررسی کنید. | ||
|
||
نسخه دوم `GoodChain` جانشین نسخه اول است. با استفاده از `Node.js` و `Express.js` ساخته شده و از `git` برای ذخیره دادههای بلاکچین استفاده میکند. | ||
### نسخه 3 (آخرین نسخه) | ||
|
||
## نسخه 3 (در حال پیشرفت) | ||
نسخه سوم `GoodChain` با استفاده از `TypeScript`، `Express.js` و `LevelDB` ساخته شده است. | ||
|
||
نسخه سوم `GoodChain` جانشین نسخه دوم است. با استفاده از `TypeScript`، `Express.js` و `TypeORM` ساخته شده است. | ||
## کمک مالی 💖 | ||
|
||
## اهدای 💖 | ||
اگر `GoodChain` را مفید یافتید و مایل به حمایت از توسعه آن هستید، میتوانید ETH را به آدرس زیر اهدا کنید: | ||
|
||
ETH: | ||
> 0xc9b64496986E7b6D4A68fDF69eF132A35e91838e |