https://github.com/mlibre/goodchain
A decentralized blockchain. Written in Node.js
https://github.com/mlibre/goodchain
blockchain blockchain-platform blockchain-technology consensus distributed-ledger git leveldb nodejs permissioned-blockchain permissionless private-blockchain proof-of-stake proof-of-work typescript
Last synced: 3 days ago
JSON representation
A decentralized blockchain. Written in Node.js
- Host: GitHub
- URL: https://github.com/mlibre/goodchain
- Owner: mlibre
- Created: 2022-01-21T18:28:18.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-03T14:21:12.000Z (over 1 year ago)
- Last Synced: 2025-03-12T19:36:50.735Z (7 months ago)
- Topics: blockchain, blockchain-platform, blockchain-technology, consensus, distributed-ledger, git, leveldb, nodejs, permissioned-blockchain, permissionless, private-blockchain, proof-of-stake, proof-of-work, typescript
- Language: TypeScript
- Homepage:
- Size: 454 KB
- Stars: 6
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: readme-fa.md
Awesome Lists containing this project
README
# GoodChain
به **GoodChain** خوش آمدید، یک پلتفرم بلاکچین که برای کاربران مبتدی و حرفهای طراحی شده است و به دنبال سادگی و انعطافپذیری است. با استفاده از `TypeScript` و `LevelDB`، **GoodChain** محیطی قابل تنظیم برای آزمایش الگوریتمهای اجماع ارائه میدهد که شامل گزینه پیشفرض **اثبات کار ساده (PoW)** است.
**GoodChain** یک دفتر کل توزیعشده است که امکان انجام تراکنشهای امن و غیرقابل بازگشت را در یک شبکه همتا به همتای توزیعشده از نودها فراهم میکند و از یکپارچگی دادهها اطمینان حاصل میکند.
## ویژگیهای کلیدی 🚀
- **اجماع پلاگینی**: با الگوریتمهای اجماع خود آزمایش کنید یا از پیادهسازی پیشفرض PoW استفاده کنید
- **API RESTful**: به راحتی سیستمهای خارجی را با API کاربرپسند `GoodChain` یکپارچه کنید
- **مدیریت کیف پول**: بهطور کارآمد کیف پولهای دیجیتال را مدیریت کنید، موجودیها را ردیابی کنید و تراکنشها را انجام دهید
- **کشف و همگامسازی نودها**: نودهای دیگر در شبکه را کشف و با آنها همگام شوید تا یک حالت ثابت در سراسر بلاکچین حفظ شود
- **استخر تراکنشها**: تراکنشهای در انتظار را با استخر تراکنشهای داخلی مدیریت کنید
- **اعتبارسنجی زنجیره**: از یکپارچگی بلاکچین با اعتبارسنجی بلاکها و تراکنشها اطمینان حاصل کنید
- **EKVS**: `پایگاه دادههای کلید-مقدار پایدار قابل تعبیه` پایگاه دادههایی هستند که میتوانند در برنامه شما تعبیه شوند. این بدان معنی است که `نیاز به سرور جداگانه` یا فرایند برای مدیریت پایگاه داده نیست. `LevelDB` یک مثال محبوب از `EKVS` است. `GoodChain` از کتابخانه `Level`، یک رابط `Node.js` برای `LevelDB` استفاده میکند.## شروع به کار 🛠️
برای شروع ماجراجویی خود با `GoodChain`، مخزن را کلون کنید و وابستگیها را نصب کنید:
```bash
# مخزن را کلون کنید
git clone https://github.com/mlibre/GoodChain.git
cd GoodChain# نصب وابستگیهای جهانی
sudo npm install -g nodemon tsx typescript eslint vitest# نصب وابستگیهای پروژه
npm install# کلیدهای ماینر خود را برای اولین بار تولید کنید
tsx src/test/generateKeys.ts# اولین بلاک را استخراج کنید
tsx src/test/init.ts# میتوانید فایلهای Node.js را مستقیماً اجرا کنید
node dist/test/init.js# نود GoodChain را اجرا کنید
npm run dev
```## REST API
### اجرای REST 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 🌟
چندین نود در شبکه GoodChain اجرا کنید! هر نود هویت منحصر به فرد خود را دارد و به شبکه غیرمتمرکز کمک میکند. برای مثال:
```bash
# نود 1
npm run 3000# نود 2
npm run 3001# نود 3
npm run 3002
```هر نود دادههای بلاکچین، کیف پولها و فهرست نودهای خود را دارد، اما میتوانند با یکدیگر ارتباط برقرار کنند و هماهنگ شوند تا یک حالت ثابت را حفظ کنند.
### نقاط انتهایی 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` بررسی کنید. برای کمک بیشتر، میتوانید از صفحه [مسائل GitHub](https://github.com/mlibre/GoodChain/issues) ما بازدید کنید.
## مجوز 📜
این پروژه تحت مجوز عمومی همگانی گنو منتشر شده است.
## تاریخچه نسخهها
### نسخه 1
اولین نسخه `GoodChain` یک پیادهسازی ساده بلاکچین بود که برای یادگیری فناوری بلاکچین استفاده میشد. از فایلهای `json` برای ذخیره دادههای بلاکچین استفاده میکرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/1.0.5) بررسی کنید.
### نسخه 2
نسخه دوم `GoodChain` با استفاده از `Node.js` و `Express.js` ساخته شد و از `git` برای ذخیره دادههای بلاکچین استفاده میکرد. کد را در [انتشارها](https://github.com/mlibre/GoodChain/releases/tag/2.0.2) بررسی کنید.
### نسخه 3 (آخرین نسخه)
نسخه سوم `GoodChain` با استفاده از `TypeScript`، `Express.js` و `LevelDB` ساخته شده است.
## کمک مالی 💖
اگر `GoodChain` را مفید یافتید و مایل به حمایت از توسعه آن هستید، میتوانید ETH را به آدرس زیر اهدا کنید:
> 0xc9b64496986E7b6D4A68fDF69eF132A35e91838e