ده اثر تولیدی (Generative) از هندسهی ایرانی/گرهچینی، همراهِ قرارداد هوشمندِ تستشده، متادیتای استاندارد و متنِ آمادهی فروش.
نمایش سریع (نمونهی ۴۸۰px — نسخهی ۱۰۲۴×۱۰۲۴ در output/):
| ۱ | ۲ | ۳ | ۴ | ۵ |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| ۶ | ۷ | ۸ | ۹ | ۱۰ |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
صفحهی محصول: fyosamu.github.io
| مسیر | چیست |
|---|---|
output/1.png … 10.png |
خودِ آثار — ۱۰۲۴×۱۰۲۴، آمادهی آپلود |
metadata/1.json … 10.json |
متادیتای استاندارد ERC-721 (OpenSea-compatible) |
metadata/contract.json |
متادیتای سطح مجموعه (برای contractURI) |
collection.json |
آمار ترکیتها + نادر بودن هر صفت |
generate.py |
مولدِ آثار — با همان SEED دقیقاً همین خروجی را میسازد |
_contact_sheet.png |
برگهی نمایشیِ هر ۱۰ اثر در کنار هم |
preview/1.jpg … 10.jpg |
نمونهی سبک (۴۸۰px) برای نمایش سریع در همین صفحه |
contract/ |
قرارداد Solidity + کامپایل + ۲۸ تست عملکردی |
هر توکن از این صفتها تشکیل شده است (تعیینشده با بذر/seed — تکرارپذیر):
تولید مجدد (دقیقاً همان خروجی):
cd nft-collection
python generate.py
GIRIH.EXE / GIRIHMAX_SUPPLY)Ownable) میتواند فروش را باز/بسته کند، قیمت را عوض کند، متادیتا را جابهجا کند و برداشت کندwithdraw(to) کل مبلغ قرارداد را به آدرسِ دلخواه (مثلاً آدرس Trust Wallet شما) میفرستدcd nft-collection/contract
npm install
npm run compile # COMPILE OK با solc 0.8.24
node scripts/test.js # ===== 28 passed, 0 failed =====
تستها اینها را پوشش میدهند: بستهبودنِ فروش، کنترل دسترسیِ غیرمالک، کمپرداختی، کوانتیتای نامعتبر، سقفِ ۱۰ تا، tokenURI، امتیاز ۵٪، موجودیِ دقیقِ قرارداد، و واریزِ کامل به کیف پول.
این تستها یک باگ واقعی را هم پیدا و رفع کردند:
ERC721URIStorageخودش پایهی URI را جلوی شناسه میگذارد؛ ذخیرهیbase + idباعث میشد آدرس دوبار تکرار شود.
contract/artifacts/ شامل GirihExe.abi.json و GirihExe.bytecode.txt است — همان چیزی که برای Remix یا هر اسکریپت استقرار لازم دارید.
⚠️ هرگز عبارت بازیابی (Seed) یا کلید خصوصی را به هیچکس — از جمله من — ندهید. امضای تراکنش فقط و فقط باید در کیف پول خودتان انجام شود.
هر ۱۰ تصویر + ۱۰ فایل metadata + contract.json را روی IPFS پین کنید.
گزینههای رایگان/ارزان: Pinata، Filebase، NFT.Storage، web3.storage.
دو نتیجه لازم دارید:
TOKENS_CID — پوشهای که 1.png … 10.json داخلش است → برای setBaseURI("ipfs://TOKENS_CID/")CONTRACT_CID — فایل contract.json → برای contractURIنکته: فایلهای متادیتا به
imageاشاره دارند و الان مقدار placeholder دارند (ipfs://REPLACE_CID/1.png). بعد از آپلودِ تصاویر، با یک جایگزینی سراسری CID را بگذارید.
روش A — Remix (سادهترین، بدون خط فرمان):
GirihExe.sol را در کنار node_modules/@openzeppelin/contracts کپی کنید (یا همان فایل را با دقت در Remix باز کنید).0.8.24 را انتخاب کنید → Compile.mintPrice_ = قیمت هر توکن به Wei (مثلاً 50000000000000000 برای ۰٫۰۵ ETH)baseURI_ = ipfs://TOKENS_CID/ (یا بعداً از طریق setBaseURI )روش B — اسکریپت:
cd nft-collection/contract
# کلید خصوصی را فقط در همین ترمینالِ محلی وارد کنید؛ آن را برایم نفرستید
$env:RPC_URL = "https://bsc-dataseed.binance.org"
$env:PRIVATE_KEY = "0x..."
node scripts/deploy.js
شبکه پیشنهادی: بهخاطر هزینهی کم، BNB Chain یا Polygon یا Base. (قرارداد EVM است و روی همهی اینها کار میکند.)
setBaseURI("ipfs://TOKENS_CID/")
setRoyalty(آدرس شما, 500) # 5% — پیشفرض هم همین است
setSaleActive(true)
کد منبع را در Etherscan/BscScan/Polygonscan با همان solc 0.8.24 و
@openzeppelin/contracts 5.6.1 و Optimizer=200 تأیید کنید تا خریدارها بتوانند کد را بخوانند
(اینها برای اعتمادسازیِ فروش خیلی مهم است).
| مرحله | وضعیت |
|---|---|
| ساخت ۱۰ اثر | ✅ انجام شد |
| متادیتای ۱۰ توکن + مجموعه | ✅ انجام شد |
| قرارداد هوشمند | ✅ نوشته شد |
| کامپایل | ✅ COMPILE OK (solc 0.8.24) |
| تست عملکردی | ✅ 28 passed / 0 failed |
| آپلود IPFS | ⬜ نیاز به حساب شما (Pinata/…) |
| استقرار | ⬜ نیاز به امضای کیف پول شما |
| اتصال به بازارچه | ⬜ نیاز به ورود شما (کیف پول) |