משתמש שולח ETH, והעסקה נתקעת במשך שעות או שנוכה עמלה גבוהה. לפני EIP-1559, ארנקים ניחשו את gasPrice ולעיתים קרובות טעו. אנחנו, כצוות עם 5 שנות ניסיון בפיתוח ארנקים ניידים, מיישמים תקן זה כדי לבטל תשלומי יתר ועיכובים. EIP-1559 הופך את העמלות לצפויות: המשתמש קובע מחיר גז מקסימלי (maxFeePerGas) ותגמול למאמת (maxPriorityFeePerGas), בעוד שהפרוטוקול מחשב אוטומטית את העמלה הבסיסית (baseFee), שנשרפת. התוצאה היא חיסכון של עד $0.50 לעסקה בהשוואה לפורמט הישן וללא עסקאות תקועות. מפרט רשמי: EIP-1559. כיום, תמיכה ב-EIP-1559 היא סטנדרט לארנקים מודרניים — בלעדיה, משתמשים עוברים למתחרים. הפתרון שלנו מבטיח אינטגרציה חלקה עם שינויים מינימליים.
כיצד עסקאות Type-2 פועלות בארנק נייד
עסקת type 2 מכילה שלושה פרמטרים מרכזיים במקום gasPrice יחיד:
- baseFee — מחושב אוטומטית על ידי הפרוטוקול, נשרף (לא מגיע לכורה). גדל ב-12.5% כשהבלוק מלא, קטן כשהוא ריק. קבל את הערך הנוכחי:
eth_getBlockByNumber("pending", false)→ שדהbaseFeePerGas. - maxPriorityFeePerGas (טיפ) — תגמול לכורה/למאמת. הטיפ המינימלי להכללה בבלוק הוא בדרך כלל 0.1–2 Gwei.
- maxFeePerGas — המקסימום המוחלט שהמשתמש מוכן לשלם. בפועל ינוכה: min(maxFeePerGas, baseFee + maxPriorityFeePerGas). ההפרש מוחזר.
// iOS — web3swift: построение EIP-1559 транзакции
var transaction = CodableTransaction(
type: .eip1559,
to: recipientAddress,
value: amount,
data: Data()
)
transaction.maxFeePerGas = baseFee + maxPriorityFee + buffer
transaction.maxPriorityFeePerGas = maxPriorityFee
transaction.chainID = BigUInt(1) // Ethereum Mainnet כיצד להציג עמלות למשתמש בצורה נכונה
המשתמש רואה // iOS — web3swift: построение EIP-1559 транзакции var transaction = CodableTransaction( type: .eip1559, to: recipientAddress, value: amount, data: Data() ) transaction.maxFeePerGas = baseFee + maxPriorityFee + buffer transaction.maxPriorityFeePerGas = maxPriorityFee transaction.chainID = BigUInt(1) // Ethereum Mainnet , אבל אם baseFee בזמן הכרייה הוא 20 Gwei והטיפ הוא 2 Gwei, הם ישלמו 22 Gwei.剩余的 28 Gwei יוחזרו. בממשק המשתמש, עדיף להציג את העמלה הצפויה (baseFee + tip) ואת העמלה המקסימלית האפשרית (maxFeePerGas * gasLimit). זה מפחית חרדה למשתמשים שרואים מקסימום גבוה. הפחתת עלות העמלות מגיעה ל-30-50%.
הצעות עמלות דינמיות: כיצד להגדיר?
יש לעדכן את הערכים המומלצים כל 12 שניות (זמן בלוק של Ethereum). מקורות:
-
maxFeePerGas = 50 Gwei— חשב אחוזון עמלת עדיפות בעצמך -
eth_feeHistory— שיטת MetaMask, נתמכת על ידי Infura, Alchemy, QuickNode - Blocknative Gas API — בתשלום אך מדויק מאוד עבור Mainnet
// Android — получить рекомендованный priority fee
val maxPriorityFeeResponse = web3j.send(
Request(
"eth_maxPriorityFeePerGas",
emptyList<Any>(),
web3jService,
EthMaxPriorityFeePerGas::class.java
)
)
val priorityFeeWei = maxPriorityFeeResponse.maxPriorityFeePerGas השוואה בין עסקאות Legacy ו-EIP-1559
| פרמטר | Legacy (type 0) | EIP-1559 (type 2) |
|---|---|---|
| מחיר גז | gasPrice (פרמטר יחיד) | baseFee + maxPriorityFeePerGas + maxFeePerGas |
| החזר תשלום יתר | לא | כן (ההפרש בין maxFee לעמלה בפועל) |
| צפיות | נמוכה (תלוי במכירה פומבית) | גבוהה (baseFee מעודכן על ידי הפרוטוקול) |
| תמיכה ברשת | כל EVM | לא כולם (BNB Chain, Arbitrum, Optimism) |
עסקאות EIP-1559 זולות ב-25% ממכירות פומביות של גז legacy ומהירות פי 2 לעסקאות דחופות.
השוואת מקורות עמלות דינמיות
| מקור | חינם | דיוק | תדירות עדכון |
|---|---|---|---|
| eth_feeHistory | כן | בינוני (תלוי באחוזון) | כל בלוק |
| eth_maxPriorityFeePerGas | כן (Infura/Alchemy) | גבוה (אלגוריתם MetaMask) | כל בלוק |
| Blocknative Gas API | לא | גבוה מאוד | בזמן אמת |
כיצד לטפל ברשתות ללא תמיכה ב-EIP-1559?
BNB Chain משתמשת בפורמט legacy עם gasPrice קבוע (ברירת מחדל 3 Gwei). Polygon תומך ב-EIP-1559 מגרסת רשת 26.x. ל-Arbitrum ו-Optimism יש מנגנונים משלהם על גבי EIP-1559. האפליקציה חייבת לזהות את סוג הרשת ולבחור אוטומטית את פורמט העסקה המתאים. שליחת עסקת type-2 לרשת ללא EIP-1559 תחזיר שגיאה eth_maxPriorityFeePerGas. בעת קבלת שגיאה כזו, האפליקציה צריכה לעבור לפורמט legacy: החלף // Android — получить рекомендованный priority fee val maxPriorityFeeResponse = web3j.send( Request("eth_maxPriorityFeePerGas", emptyList<Any>(), web3jService, EthMaxPriorityFeePerGas::class.java) ) val priorityFeeWei = maxPriorityFeeResponse.maxPriorityFeePerGas ב-unsupported transaction type וציין type: .eip1559 במקום type: .legacy ו-gasPrice. מומלץ לשמור במטמון את סוג הרשת לאחר השליחה המוצלחת הראשונה.
יישום EIP-1559 שלב אחר שלב בארנק נייד
- קבע רשתות נתמכות לפי chainID ושמור מיפוי: עבור רשתות עם EIP-1559 השתמש ב-type-2, עבור אחרות — legacy.
- קבל baseFee דרך
maxFeePerGasכל 12 שניות ושמור אותו במטמון. - חשב עמלת עדיפות מומלצת דרך
maxPriorityFeePerGasאוeth_getBlockByNumber("pending", false). - בנה עסקת type-2: הגדר
eth_maxPriorityFeePerGas= (baseFee + priorityFee) * 1.1 (חיץ),eth_feeHistory= priorityFee. - בממשק המשתמש, הצג את העמלה הצפויה (baseFee + priorityFee) ואת העמלה המקסימלית (maxFeePerGas * gasLimit).
- בשגיאת
maxFeePerGas, עבור לפורמט legacy ונסה שוב.
יתרונות אינטגרציית EIP-1559
ארנקי legacy עם gasPrice יחיד מאלצים משתמשים לשלם יותר מדי או לחכות שעות לאישור. יישום EIP-1559 מספק צפיות, חיסכון של עד $0.50 לעסקה ואמון משתמשים. רוב הארנקים המודרניים (MetaMask, Trust Wallet) כבר תומכים ב-EIP-1559 — הארנק שלך לא צריך להישאר מאחור. קבל ייעוץ על אינטגרציית EIP-1559 לפרויקט שלך.
מה כלול ביישום
- ביקורת על הארנק הנוכחי וזיהוי שינויים נדרשים.
- יישום עסקאות type-2 עם חישוב פרמטרים נכון.
- אינטגרציה של הצעות דינמיות דרך שיטות RPC.
- UI/UX: הצגת עמלות צפויות ומקסימליות, עדכון אוטומטי.
- תמיכה במספר רשתות EVM עם זיהוי אוטומטי וגיבוי.
- בדיקות על mainnet ו-testnet עם תרחישים קיצוניים.
- תיעוד, גישה ל-repository, הדרכת צוות ותמיכה לאחר היישום.
אנו מבטיחים פעולה תקינה בכל הרשתות הפופולריות, תוך שימוש בשיטות מוכחות וניסיון מלמעלה מ-50 פרויקטים מיושמים. בקש ביקורת על הארנק הנוכחי שלך — נכין תוכנית מעבר ל-EIP-1559.
לוח זמנים: 2–3 ימים לאינטגרציה בסיסית, מ-5 ימים לפרויקטים מורכבים עם מספר רשתות. העלות נקבעת לאחר ביקורת. צור קשר לייעוץ והערכת פרויקט.







