摘要

本文提供了 TON Blockchain 最近更新的詳細技術分析,特別關注 gas limit 覆蓋機制的實作。此更新是為了回應 @wallet Telegram 機器人的 highload wallet 遇到的重大問題,該錢包因清理舊查詢的 gas limit 不足而變得無回應。

引言

2024 年 1 月,TON Blockchain 社群面臨一項重大挑戰,@wallet Telegram 機器人的 highload wallet 卡住了。根本原因被確定為現有的 1M gas limit,這對於處理和清理舊查詢來說證明是不足的。本文探討了已實作的解決方案,該方案涉及動態調整特定交易的 gas limit。

技術背景

該問題首先在 crypto/smartcont/highload-wallet-v2-code.fc 的註解中得到確認,並歸因於現有的 gas limit 無法處理錢包中累積的舊查詢,導致資金被鎖定。相關帳戶的地址為 EQD_v9j1rlsuHHw2FIhcsCFFSD367ldfDdCKcsNmNpIRzUlu

解決方案概述

向驗證者提出的臨時解決方案涉及增加受影響帳戶的 gas limit,直到 2024 年 2 月 16 日。這一增加是透過 ConfigParam 20 (config_mc_gas_prices) 中的 gas_prices_v3 參數來實現的,影響主鏈中的特殊帳戶。

方法論

實作的解決方案封裝在兩個主要函數中:override_gas_limitgas_bought_for

  1. override_gas_limit: 此函數確定交易是否需要 gas limit 覆蓋。覆蓋是基於交易的時間、相關帳戶以及計算階段的特定配置而有條件的。它特別檢查預定義的帳戶地址 (addr_hex) 和時間範圍(直到 2024 年 2 月 16 日)。

  2. gas_bought_for: 此函數計算可以用給定數量的 nanograms 購買的 gas 量。它包含一個條件來檢查是否需要 gas limit 覆蓋(使用 override_gas_limit)。如果需要覆蓋,它會基於新的更高 gas limit 和修改後的 gas 閾值計算 gas 量。

技術影響

gas limit 覆蓋機制在特定帳戶的 gas limit 處理方式上引入了重大變化,特別是在緊急情況下。這種方法允許在解決區塊鏈運營中不可預見的挑戰時具有更大的靈活性和回應性。然而,它也需要仔細的監控和治理,以確保這些覆蓋被謹慎使用,並且不會在網路的經濟模型中導致意外後果。

結論

在 TON Blockchain 中引入動態 gas limit 覆蓋代表了解決關鍵操作問題的務實方法。雖然它有效地解決了卡住的 highload wallet 的即時問題,但它也強調了持續評估和改進區塊鏈基礎設施以適應不斷演變的挑戰和需求的必要性。此解決方案突顯了操作靈活性與維護嚴格網路協議之間的平衡。隨著 TON Blockchain 的持續發展,這類適應性措施對於維持其效率、安全性和使用者信任至關重要。未來的發展應該專注於增強區塊鏈處理高負載場景的能力,同時不損害其基本原則,並確保這些緊急措施無縫整合到更廣泛的生態系統中。

Github 程式碼