לפני ERC-2981, כל שוק יישם תמלוגים בדרך שלו: OpenSea שמרה רשימה מחוץ לשרשרת, Rarible השתמשה בחוזה משלה, LooksRare הייתה עם סכמה משלה. כתוצאה מכך, יוצרי NFT איבדו עד 30% מההכנסות ממכירות משניות עקב רישום ידני. אנו מפתחים חוזים חכמים עם תקן ERC-2981 מובנה, המבטיח תמלוגים אוטומטיים בכל הפלטפורמות הפופולריות—OpenSea, Rarible, LooksRare, Blur ו-X2Y2. אנו מטפלים בכל החל מהאב-טיפוס של החוזה החכם ועד לביקורת אבטחה ופריסה ברשת הנבחרת. ERC-2981 הפך לתקן התעשייה לתמלוגים על-גבי השרשרת, ואנו עוזרים ליישם אותו עם עלויות גז מינימליות ושקיפות מקסימלית. החיסכון בעמלת השוק יכול להגיע ל-30%. לצוות שלנו יש ניסיון של 5+ שנים ב-Web3 וביצע 15+ ביקורות, מה שמאפשר לנו למצוא במהירות את הפתרון האופטימלי לכל פרויקט. בממוצע, יוצר חוסך $2,000–$5,000 בחודש על ניהול ידני.
למידע נוסף על התקן: EIP-2981
למה ERC-2981 הפך לתקן לתמלוגים על-גבי השרשרת
לפני התקן, יוצרים נאלצו להירשם בנפרד בכל שוק. ERC-2981 הופך תמלוגים לניידים: פרסו את החוזה שלכם, וכל הפלטפורמות התומכות בממשק יחילו אוטומטית את התנאים שלכם. זה חוסך מאות שעות של ניהול ידני. תמלוגים על-גבי השרשרת עם ERC-2981 מאיצים את האינטגרציה עם שווקים חדשים פי 5 בהשוואה לגישה מחוץ לשרשרת.
השוואה: תמלוגים על-גבי השרשרת לעומת מחוץ לשרשרת
| מאפיין | על-גבי השרשרת (ERC-2981) | מחוץ לשרשרת (רישום שוק) |
|---|---|---|
| מקור אמת יחיד | כן, על הבלוקצ'יין | לא, תלוי בפלטפורמה |
| ניידות בין שווקים | אוטומטי | דורש רישום ידני |
| שקיפות ובלתי-ניתנות לשינוי | מלאה | ניתן לשינוי בכל עת |
| עלויות גז נוספות | מינימליות (קריאה בלבד) | אין (מחוץ לשרשרת) |
מחוץ לשרשרת היה פופולרי, אבל יוצרים איבדו שליטה. על-גבי השרשרת עם ERC-2981 הוא תקן התעשייה שאנו ממליצים עליו לכל הלקוחות.
איך ERC-2981 עובד
התקן מוסיף פונקציה אחת לחוזה:
function royaltyInfo(
uint256 tokenId,
uint256 salePrice
) external view returns (address receiver, uint256 royaltyAmount);
כאשר מתרחשת מכירה, השוק קורא ל-function royaltyInfo( uint256 tokenId, uint256 salePrice ) external view returns (address receiver, uint256 royaltyAmount); ומקבל את כתובת הנמען וסכום התמלוגים. זה הכל. התקן הוא מינימלי בכוונה—הוא לא אוכף תשלום (האכיפה היא מחוץ לשרשרת), הוא רק מספק את הנתונים.
יישום בסיסי דרך OpenZeppelin:
import "@openzeppelin/contracts/token/common/ERC2981.sol";
contract MyNFT is ERC721, ERC2981 {
constructor() ERC721("MyNFT", "MNFT") {
_setDefaultRoyalty(msg.sender, 500); // 500 basis points = 5%
}
function setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) external onlyOwner {
_setTokenRoyalty(tokenId, receiver, feeNumerator);
}
}import "@openzeppelin/contracts/token/common/ERC2981.sol"; contract MyNFT is ERC721, ERC2981 { constructor() ERC721("MyNFT", "MNFT") { _setDefaultRoyalty(msg.sender, 500); // 500 basis points = 5% } function setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) external onlyOwner { _setTokenRoyalty(tokenId, receiver, feeNumerator); } } הוא המונה ביחס ל-function royaltyInfo(uint256 tokenId, uint256 salePrice) public view override returns (address, uint256) { uint96 rate; if (salePrice <= 1 ether) rate = 500; // 5% до 1 ETH else if (salePrice <= 10 ether) rate = 300; // 3% до 10 ETH else rate = 100; // 1% выше 10 ETH return (_royaltyReceiver, (salePrice * rate) / _feeDenominator()); } (ברירת מחדל 10000). אז 500 = 5%, 250 = 2.5%, מקסימום 10000 = 100% (לא מומלץ). אנו מייעלים את החוזה לצריכת גז מינימלית בקריאות royaltyInfo.
דפוסי תמלוגים מתקדמים
תמלוגים מפוצלים למספר נמענים
התקן תומך רק בנמען אחד. כדי לפצל בין יוצר, צוות וקרן, יש צורך בחוזה נוסף. שתי גישות:
-
PaymentSplitter: ה-
receiverב-ERC-2981 מצביע על חוזה PaymentSplitter (OpenZeppelin). השוק מעביר את כל הסכום למפצל, שמחלק אותו לפי מניות. פשוט, מוכח, אבל גז נוסף בשחרור. - מפצל תמלוגים מסוג Push: מנגנון מובנה בחוזה ה-NFT שמחלק אוטומטית לכתובות בכל העברה נכנסת. חוסך קריאה אחת אבל מסבך את החוזה.
תמלוגים דינמיים
ERC-2981 מאפשר ל-royaltyInfo להחזיר ערכים שונים עבור tokenId שונים. זה פותח אפשרויות:
- תמלוגים יורדים עם עליית מחיר המכירה (סולם פרוגרסיבי)
- שיעורים שונים לקטגוריות אסימונים שונות (מערכת דרגות)
- אפס תמלוגים למכירה ראשונית, 5% למכירה משנית
דוגמה לתמלוגים דינמיים עם סולם פרוגרסיבי:
function royaltyInfo(uint256 tokenId, uint256 salePrice) public view override returns (address, uint256) {
uint96 rate;
if (salePrice <= 1 ether) rate = 500; // 5% до 1 ETH
else if (salePrice <= 10 ether) rate = 300; // 3% до 10 ETH
else rate = 100; // 1% выше 10 ETH
return (_royaltyReceiver, (salePrice * rate) / _feeDenominator());
} איך ליישם תמלוגים דינמיים עם שיעורים גמישים
הבחירה בין יישום בסיסי, מפצל ושיעורים דינמיים תלויה במודל העסקי שלכם. אם יש לכם יוצר יחיד ועמלה קבועה, ERC-2981 בסיסי מספיק. לצוותים עם מספר נמענים, השתמשו ב-PaymentSplitter. כדי לתמרץ מסחר, יישמו שיעורים דינמיים. אנו נעזור לנתח את המקרה שלכם ולבחור את הפתרון האופטימלי. קבלו הערכת פרויקט חינם תוך 24 שעות—צרו קשר.
התהליך שלנו
- ניתוח: אנו בוחנים דרישות תמלוגים, תרחישי מסחר, קהל יעד.
- עיצוב: אנו בוחרים את הארכיטקטורה (בסיסית, מפצל, דינמית) ומכינים מפרטים.
- פיתוח: אנו כותבים את החוזה ב-Solidity 0.8.x, משתמשים ב-Foundry לבדיקות ואימות.
- בדיקות: כיסוי >95%, fuzzing עם Echidna, בדיקות reentrancy ואופטימיזציית גז.
- ביקורת: ביקורת אבטחה פנימית וחיצונית (slither, אימות פורמלי).
-
פריסה: פריסה על Ethereum/Polygon, אימות ב-Etherscan, הגדרת
supportsInterface. - תמיכה: ניטור, עדכונים בפורקים של הרשת, ייעוץ אינטגרציה.
מה כלול בפיתוח?
- קוד מקור של החוזה עם בדיקות (מאגר GitHub)
- תיעוד פריסה והגדרה
- פריסה ברשת הנבחרת (Ethereum, Polygon, Arbitrum, BNB Chain)
- אימות חוזה בסייר הבלוקצ'יין
- אינטגרציה עם שווקים (OpenSea, Rarible, LooksRare)
- ביקורת אבטחה (דוח פגיעויות)
- גישה למאגר פרטי לשינויים עתידיים
- חודש תמיכה לאחר הפריסה
הערכות זמנים
| סוג יישום | זמן |
|---|---|
| בסיסי (נמען יחיד, שיעור קבוע) | יום אחד |
| עם מפצל (PaymentSplitter) | 2–3 ימים |
| עם שיעורים דינמיים ולוגיקה מותאמת | 3–5 ימים |
| מחזור מלא (כולל ביקורת ופריסה) | 5–7 ימים |
העלות מחושבת באופן אישי לפי מורכבות. קבלו הערכה תוך יום אחד – צרו קשר, ונכין הצעה. לצוות שלנו יש ניסיון של 5+ שנים ב-Web3, ביצע 15+ ביקורות חוזים חכמים, ופרס עשרות אסימוני ERC-2981 ללקוחות מארה"ב, אירופה ואסיה. צרו קשר כדי לדון בארכיטקטורה.







