Technical Background of Balancer V2 Composable Stable Pools Balancer V2 Composable Stable Pools හි තාක්ෂණික පසුබිම : Pool Structure and How It Works Composable Stable Pools යනු Curve හි StableSwap ආකෘතියෙන් ආකෘති කර ඇති සංඛ් යාතය මත ඉදිකිරී ඇත. What is a Composable Stable Pool? මෙම පොල්, USDC සහ DAI, හෝ stETH සහ ETH වැනි සෑහෙන්න සමාන වටිනාකම් සහිත වටිනාකම්, අවම පහසුකම් සහිතව වෙළඳාම් කිරීමට ඉඩ සලසයි. **What makes them “composable”? \ The pool’s LP token (BPT) is a standard ERC-20 token that can be reused across the ecosystem, for example, in other pools or as collateral. This allows liquidity to be seamlessly composed throughout the system. **How it works \ A Composable Stable Pool can hold multiple tokens, and its invariant DDD is calculated using the following polynomial equation: Balancer වලදී පර්යේෂණ සඳහා යොදා ගනුදෙනු කරන ලදී.[29] (D) හැකි තරම් ස්ථාවරය. විප්ලවයක් සිදු වූ විට, ටොක්න් ඉනිම නව තත්වයට මාරු වන අතර, මෙම අමුද්රව්ය ආරක්ෂා කරයි. ඔබ විසඳුම් ලබා ගැනීමට ඔබ විනිශ්චය කරන තැපැල්, (D) සැබවින්ම සකස් කර ඇත. stable invariant quadratic new balance (x) වචන (x): ඔබ විසඳා ගත යුත්තේ ටෝකන්ගේ නව (පසු-සංස්කරණය) ධාරාව. (S): අනෙකුත් ටොක්න් වල ඉසව් ප් රමාණය (x) නොමැතිව). (P): අනෙකුත් ටොක්න් වල ඉසව්වන්ගේ නිෂ්පාදනය (x) නොමැතිව). (D): pool invariant (සංස්කරණය හරහා ස්ථාවර වීමට ඉලක්ක කර ඇත). (A): සංශෝධනය ප්රමාණය (සංස්කරණය → සමාන වටිනාකමක් සඳහා පහත පාවුලක්) (n): පොලයේ ටොක්න් සංඛ්යාව. Intuition: We compress “All the other tokens” into two aggregates, (S) and (P). . quadratic in (x) ඇයි quadratic? නොදන්නා ටෝකන්ගේ නව ධාරිතාව ඉවත් කිරීම සහ ඉතිරි කොටස් (S) සහ (P) බවට පත් කිරීමෙන් පසු, අනවශ් ය තත්ත්වය (x) හි දෙවන උපාධිය ප්ලයිනොමිල් දක්වා අඩු වේ. විසඳා ගැනීම තෝරන්න root එක සහ (අවශ් ය ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී ඵලදායී) Which root? positive economically valid සරල උදාහරණයක් Setup (2 tokens, large A → very low slippage) අභ්යන්තර (අධිකරණය කරන ලද) ආරම්භක ධාරිතාවයන්: token0 = 1,000,000; token1 = 1,000,000 ටෝකන් ගණන: n = 2 ප්රමාණය A = 1000 විශාල A, D ≈ 2,000,000 Action ඔබ token0 (EXACT_IN) 10,000 එකතුවක් එකතු කරයි. Quadratic to solve x^2 + (S - D/(A*n^n) - D)*x - D^(n+1)/(A*n^(2n)*P) = 0 කොහෙද : , සහ Token1 හි post-swap අගය S = 1,010,000 P = 1,010,000 x Solution x ≈ 990,999.546 Amount out amountOut = 1,000,000 - 990,999.546 ≈ 9,000.454 Interpretation ඔබ 10,000 ටොකන්0 තැන්පත් කර $9,000.45 ටොකන්1 → විශාල A සමඟ අඩු පාවුලක් ලැබේ. සියලුම මාතෘකාව 18 දශකයේ අභ්යන්තර ඒකක භාවිතා කරයි; ආරක්ෂාව සඳහා සකස් කිරීම. එය භාවිතා කරන ස්ථානය (High level) EXACT_IN: ඔබ ඇතුලත් තැපැල් වැඩි කරයි; විරුද්ධ තැපැල්ගේ නව තැපැල් (x) සඳහා විසඳුම්; එහි පැරණි තැපැල් සිට වෙනස ප්රමාණය වේ. EXACT_OUT: ඔබ ලබාගත් විශේෂිත ප්රමාණය ඉලක්ක; අවශ්ය (x) සඳහා විසඳුම් (එබැවින් අවශ්ය ඇතුලත් කිරීම). Practical සටහන් සියලු සන්සුන් 18 දශක ගණනකින් ඇතුළත ප්රතිකාර කරනු ලැබේ; ගණන සාමාන්යයෙන් පොල් ආරක්ෂිත විය හැක. විශාලතම (A) ක්රියාකාරිත්වය වඩාත් ස්ථාවර-sum-like කරයි (සමහර ස්ථාවර යුගල සඳහා කුඩා පිරවීම); කුඩා (A) ක්රියාකාරිත්වය වඩාත් ස්ථාවර-product හැසිරීම ළඟා වේ. TL;DR: මෙම සමාලෝචනය නිශ්චිත අමුද්රව්ය (D) යටතේ ඔබට නව ටෝකන් ධාරිතාවය (x) ලබා දෙයි. ධාරිතාවයන් (S) සහ (P) හරහා "පොලිසයේ ඉතිරි කොටස" සංකේත කරයි, අතර (A) සහ (n) ස්ථාවර වෘත්තියේ හැඩය / මාලාව තීරණය කරයි. මෙම සමානතාවය වන්නේ එබැවින්, නිශ්චිත අමුද් රව් ය (D) යටතේ ඔබට ලබා දෙයි. හුවමාරු කිරීමෙන් පසුව කොන්දේසි (S) සහ (P) හරහා "පෝලට් ඉතිරි" සංකේත කරයි, අතර (A) සහ (n) ස්ථාවර කෙරැල්ලේ හැඩය / මාලාව තීරණය කරයි. TL;DR: workhorse quadratic new token balance (x) පර්යේෂණ පර්යේෂණ A අකුරු අකුරු අකුරු අකුරු අකුරු අකුරු අකුරු . balance relationship invariant D ඔබ හුවමාරු කරන විට, එක් සංසන්දනය ඉහළ යනවා, තවත් පහළ යනවා, සහ පොල් සොයා ගනී මෙන්න මෙහෙම තමයි මිල එන්නේ. new balance that keeps D as constant as possible ටොක්න් 18 දශකයක් දක්වා සාමාන්ය කර ගැනීම සඳහා ප්රාග්ධන කොන්දේසි භාවිතා කරයි.Upscale ක්රියාකාරීත්වය අභ්යන්තර නිවැරදිතාවයට විනිශ්චය කරයි සහ අවලංගු කිරීම භාවිතා කරයි. Swap Types EXACT_IN (GIVEN_IN) : Fixed input amount, output ගණනය කරන්න. EXACT_OUT (GIVEN_OUT) : Fixed output amount, calculate input. Vault සහ BatchSwapBalancer Vault සියලු ක්රියාකාරකම් කළමනාකරණය කරයි. BatchSwap එක් ව්යාපාරයක් තුළ බොහෝ ස්විප් එකතු කරයි සහ flashloans වැනි "අවසානුකූල ගිවිසුම" භාවිතා කරයි.BPTs සාමාන්ය ටෝකන් මෙන් ක්රියා කරයි, min pool සැපයුම් සීමාව වැළැක්වීම සඳහා වත්කම් ඉතා අඩු. 1) විශ්ලේෂණය 1.1 ප් රහාරය 2025 නොවැම්බර් 3 වන දින, UTC 7:40 පමණ, සංකේතය v2 ස්ථාවර පුවරු සංකීර්ණ ප් රහාරයකින් ඉලක්ක කර ඇති අතර එය Balancer සහ එහි ෆෝක්ස් හරහා ඩොලර් මිලියන 120 කට වැඩි ප් රමාණයක් අහිමි විය. The attack leveraged several circumstances: ප්රධාන වශයෙන් ඉලක්ක කොටස් ComposableStablePool ගිවිසුම උදාහරණ විය. විශේෂ කොටස් නිර්මාණය කර ඇති දේපල හෝ නිශ්චිතව සමීප ලෙස හෝ දන්නා විනිමය ප්රතිශතයක් මත හුවමාරු කිරීමට බලාපොරොත්තු වේ. Balancer Vault ගිවිසුමේ batchSwap ක්රියාකාරීත්වය, අතුරුදන් වන ඩෙල්ටස් විසඳීමට අවශ් යතාවයට පෙර තාවකාලික විප්ලව සිදු කිරීමට ඉඩ සලසයි. මෙම ප් රහාරය ලාභදායී විය අඩු ලාභදායී තත්ත්වයන් තුළ. ආක් රමණිකයා විශාල ස්විප්ස් සූදානම් කළ යුතුය, එබැවින් පොල්වල සීමාවන් එක් හෝ අනෙකුත් ටෝකන් හි අඩු ලාභදායීතාවයට ගෙන යා හැක. මෙය සාර්ථක කර ගැනීම සඳහා වඩාත් භාවිතා කරන ක්රමය LP ටෝකන් පොල් ටෝකන් සඳහා හුවමාරු කිරීම විය, පොල් අඩු ලාභදායී තත්ත්වයේ ඉතිරි කිරීමයි. ඉහත කරුණු සියල්ලම අවශ් ය නමුත් අවසාන අවස් ථාවක් නොවේ, මෙම සිදුවීම සඳහා අවශ්ය එකම අවස් ථාව ප්රශ්නයේ මූලික හේතුව වන අතර, _upscale ක්රියාකාරීත්වය තුළ සෘජුවම හැසිරීමයි. මෙම ප් රහාරක පැකේජය ආරම්භ වූයේ 2021 ජූලි 16 වැනිදා, MetaStablePool විසින් ප් රහාරක පැකේජය පරාජය කරන විටයි. ComposableStablePool සඳහා ComposablePool f450760 සඳහා, පසුව ComposableStablePool සඳහා Composer f450760 සඳහා, Composer 4e9e70a හි Linear Pools සඳහා පසුව 2021 සැප්තැම්බර් 1 වැනිදා, Composer 4e9e70a හි Linear Pools සඳහා පසුව වෙනස් කිරීමක් යෙදුණේ. _scalingFactors පහත දැක්වෙන ගැටලුව විස්තරයේදී, අපි පැහැදිලි කරමු ඇයි මෙම override ක්රියාත්මක කිරීම ප් රහාරයේ මූලධර්මය විය. 1.2 ප් රශ්නය Vault ගිවිසුමේ batchSwap ක්රියාකාරිත්වය මෙම ප් රහාරයට ප්රවේශ ස්ථානයකි. ආක් රමණිකයා එය ප්රවේශ කර ඇත, ComposableStablePool උදාහරණවලට ඉලක්ක කර ඇත. ComposableStablePool අන්තර්ක්රියාකාරිත්වයට ගෙන එනු ලබන Vault ගිවිසුමේ අදාළ සංකල්පය මෙම ක්රියාකාරිත්වය විසින් සකස් කර ඇත: batchSwaps → අභ්යන්තරව calls _swapWithPools → එය අභ්යන්තරව calls onSwap on the ComposableStablePool හි _swapWithPool → _processGeneralPoolSwapRequest හි සෑම swap සඳහාම pool. ComposableStablePool හි නැව්ගත වූ පසු, ක්රියාත්මක කිරීම onSwap කුක් තුළ දිගටම සිදු වේ, එහිදී දේවල් දෙකක් සිදු වේ: _scalingFactors ක්රියාකාරිත්වය සඳහා ඇමතුමක්. ඉහත සඳහන් උදාහරණයක් ලෙස _swapGivenOut වෙත මාරු කිරීම.අරක් ෂකයා විසින් _swapGivenIn ආකෘතිය තෝරා ගැනීමට තීරණය කර ඇති බව මතක තබා ගන්න, නමුත් ප්රතික් ෂක ව්යාපාරය තුළ ඉදිරිපත් කරන ආදායම් පැහැදිලිව තෝරා ගැනීම පෙන්වයි.මේ ක්රියාකාරිය _upscale ක්රියාකාරිය ඇමතුම් කරයි. අපි මේ කාර්යයන් දෙක දිහා බලමු. ස්කන්ධන function _scalingFactors() internal view virtual override returns(uint256[] memory) { uint256 totalTokens = _getTotalTokens(); uint256[] memory scalingFactors = new uint256[](totalTokens); for (uint256 i = 0; i < totalTokens; ++i) { scalingFactors[i] = _getScalingFactor(i).mulDown(_getTokenRate(i)); } return scalingFactors; } මෙම ක්රියාකාරකම් දෙකක් කරයි: එය _getScalingFactor කාර්යභාරය විසින් යෝජනා කරන පරිදි ඕනෑම ප්රමාණය සකස් කරන ලද දශක ගණනකට සහ එය ආපසු ලබා දෙන දේ වෙත ප්රමාණය කරයි. එය තැපැල් විනිමය ප්රමාණය ප්රමාණය සහ 1e18 විසින් බෙදාහැරීම මගින් එය multiplies කර ඇත. නැගීම function _upscale(uint256 amount, uint256 scalingFactor) pure returns (uint256) { /* Upscale rounding wouldn't necessarily always go in the same direction: in a swap for example the balance of token in should be rounded up, and that of token out rounded down. This is the only place where we round in the same direction for all amounts, as the impact of this rounding is expected to be minimal. */ return FixedPoint.mulDown(amount, scalingFactor); } මෙම ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ ප්රමාණයේ 1e18 ප් රශ්නය දෙපැත්තකට යථාර්ථයයි: මෙම කාර්යයන් සෑම විටම විප්ලවයේ ප්රවේශයෙන් තොරව (mulDown) අවලංගු කරයි. ප්රමාණයන් ප්රමාණයට වඩා කුඩා ඇණවුම් වන විට, නිවැරදිත්වය අහිමි වීම නොසලකා හැරෙනු ඇත. ආක් රමණයේ ගනුදෙනුවකදී, ප්රමාණයට හා ප්රමාණයට සාමාන් ය වටිනාකම වන්නේ: ප්රමාණ: "17"scalingFactor: "1058132408689971699" අපි ගණනය කරනවා නම් අපිට ලැබෙන නමුත් සදාකාලිකත්වය දශක ගණනින් අර්බුදයට පත් වන අතර, මෙය ප් රතිඵල A ඒ අතරේ ක් රියාකාරිත්වය amount * scalingFactor / 1e18 17.98 17 0% net change _upscale දැන් බලමු කොපමණ (අවශ් ය ප් රතිඵල 18 ක්) නියෝජනය කිරීම A නිවැරදිව අනුපාතය සකස් කරන ලදී. 17,000000000000000000 17.988250950000000000 5.8% increase එසේම, එක් තැපැල් සඳහා (සමහර ස්ටෙබෙල්කොයින් භාවිතා කරන පරිදි) දීමනා තවමත් සමාන ලෙස අනුකූලව . 6 decimals 17,000000 17.988250 5.8% positive change උපරිමයෙන් උපරිමයෙන් උපරිමයෙන් උපරිමයෙන් උපකාර කිරීම හැකි තරම් විශාල, එබැවින් නිෂ්පාදනය 1e18 විසින් බෙදා හැරෙන විට උපරිම නිවැරදිතාවය අහිමි වේ. amount*scalingFactor mod 1e18 උදාහරණයක් ලෙස, පහත පුවරුවේ, ප්රමාණය = 17 සහ ප්රමාණය = 50 දෙකම අවම වශයෙන් 0.90 හි සම්පූර්ණ සෘජුවම අහිමි වීමක් නිෂ්පාදනය කරයි.එහෙත්, ප්රමාණයේ ප්රතිශතයක් ලෙස වැරදි ප්රමාණයෙන් වෙනස් වන අතර, අහිමි ප්රමාණයේ ප්රමාණය තවදුරටත් වෙනස් වන අතර, එකම සම්පූර්ණ අහිමිභාවය 17 ට වඩා විශාල වන අතර, 50 ට වඩා විශාලය. උදාහරණ උදාහරණයක් පෘථිවියේ සෘජු කිරීමේ වරද 1.058132408689971699 ප්රතිශතයක් ලෙස සංශෝධනය කරන විට amount upscale error %error %increase lost 17 17 0.98 5.76% 100% 50 52 0.90 1.80% 17% ... ... ... ... ... 17 17 0.98 5.76% ක් 100% ක් 50 52 0.90 1.80% ක් 17% ක් ... ... ... ... ... ඒ මෙම ක්රියාකාරිත්වය පසුව මෙම පුළුල් වටිනාකම් භාවිතා කරනු ඇත ආක්රමණය කරන ලද ප්රමාණය පශ්චාත් පශ්චාත් පසු ප්රමාණය ගණනය කිරීමට.This value is artificially deflated, making the swap cheaper. එය සංකීර්ණ වන අතර, එය අඩු වත්කම් තත්වයන් අවශ්යතාවයෙන් ලබා ගත හැකි පොල්වල මෙය සාර්ථක කර ගත හැකි බව සාධාරණ කරයි.එය යම් මට්ටමක සබඳතාවය සහතික කරන අමුද්රව්ය පරීක් ෂණය නිසා වන අතර, ඉහළ වත්කම් තත්වයන් තුළ, අමුද්රව්යවල විශාල වෙනසක් එකම අමුද්රව්ය ආරක්ෂාව නිසා අසාර්ථක විය. _swapGivenOut _swapGivenOut අවසානයේදී, විශාල සංඛ්යාවකට පසු, batchSwap පසු ඩෙල්ටස් ආවරණය කරනු ලැබේ, ප් රහාරකයාට පල්ලියේ මූල්ය ප් රමාණයේ ප් රමාණය ලබා දෙයි. ඊට අමතරව, _upscale in-line docstrings ගැන අදාළ නිරීක්ෂණය සිදු කළ යුතුය: /* Upscale rounding wouldn't necessarily always go in the same direction: in a swap for example the balance of token in should be rounded up, and that of token out rounded down. This is the only place where we round in the same direction for all amounts, as the impact of this rounding is expected to be minimal. */ මෙම ප්රතිචාරයේ පෙර පරිවර්තනයකට අමතර සටහනක් තිබේ: /* …as the impact of this rounding is expected to be minimal (and there's no rounding error unless `_scalingFactor()` is overriden). */ මෙය වැදගත් වන්නේ, මොකද ඉදිරිපත් කරන ලදී ඉන්පසු නැවත නමින් නිවැරදිව ක් රියාත්මක කිරීම ඉහත සාකච්ඡා කරන ලදී. StablePhantomPool September 20, 2021 ComposableStablePool _scalingFactor පහුගිය version වලදී The ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි. මූලික වෙනසක් හඳුන්වනවා. StablePool _scalingFactor exchange rate සඳහන් කළ පරිදි, in the Function’s comments, the code evolved from the function’s comments, code evolved from the function’s comments (එනම් ( 2 ) මෙම වෙනස, ක්රියාකාරීව අවශ්ය වුවද, ඵලදායීව ක්රියාත්මක කරයි ඔවුන් සමඟ, නව . _upscale unitary scaling factors 1e12 non-unitary exchange rates rounding errors attack vector සෘජු කිරීමේ වැරැද්ද ක්රියාත්මක කිරීම මූලික හේතුවක් වුවත්, එය පාවිච්චි කිරීම සඳහා අතිරේක ප්රොටෝලට් යන්ත් ර සහ විශේෂ ප් රහාර පියවර භාවිතා කිරීම අවශ්ය විය. Balancer's batchSwap මගින් අංකය අවසානයේදී පමණක් අලෙවි කර ඇති transient internal balances ලබා ගත හැකිය.Thanks to this, the attacker effectively "borrowed" BPT within a batch to manipulate the pool without having to terminate the transaction holding BPT. BPT (Balancer Pool Token) යනු Balancer pool හි ප්රමාණවත් කොටස් ප්රදර්ශනය වන ERC-20 ය. පළමු ප්රතිඵලයේ දී, BPT ට token1 සහ BPT ට token2 වෙත නැවත නැවතත් මාරු කිරීමෙන්, pool token balances (උදාහරණයක් ලෙස, WETH / osETH) ඉතා අඩු මට්ටමකට (බොහෝ 100k) තැබීය. ඉලක්කය පෘථිවියේ සංඛ්යාතය තුළ ඉවත් කරන කොටසක් උපරිම කිරීමයි, එනම් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ප්රමාණවත් ස්විප්ස් තුනක් නැවත නැවත නැවත නැවත නැවත නැවත නැවත සකස් කිරීමෙන් සිදු වන exploit: ප්රධාන: ඊළඟ ක්රියාවලිය තුළ truncation සිදු වනු ඇති තත්වයට පොලව මාරු කරන්න. ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි. Reset: Reset balances so that the triplet can be replayed.In the screenshot is the swap of osETH to WETH.එසේ නම්, ඔස්ටීඑම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම්එම් පහත දැක්වෙන පින්තූරයේ දැක්වෙන පරිදි, ප්රශ්නීය ස්විප් එක බොහෝ විට ප්රමාණය = 17 භාවිතා කරයි.ඔබ සෑම තුන්වන කොටුවක දෙවන ස්විප් එකේදී නැවත නැවත නැවත 17 ප්රමාණය දැක ගත හැකිය. ආරක්ෂක හොඳම ක් රියාවන් දියුණු කිරීම: කර්මාන්තයට පාඩම් මෙම සිදුවීම ස්මාර්ට් ගිණුම් ආරක්ෂක විනිශ්චයන්ගේ ඵලදායීත්වය පිළිබඳ විවාදයක් ඇති කර ඇති අතර, සමහර ප්රවේශකරුවන් එය වටිනාකමක් ලබා දීම ගැන ප්රශ්නය කරති.මේ හැඟීම අසාර්ථකතාවයේ මොහොතේ තේරුම් ගත හැකි වුවද, එය ආරක්ෂක විනිශ්චයන් කර්මාන්තයේ හොඳම ක් රියාවලිය බවට පත් වී ඇති අතර පසුගිය දශකයේ දී ආරක්ෂක විනිශ්චයන් ක් රියාවලිය අවම කිරීම සහ පරිශීලකයන් ආරක්ෂා කිරීම සඳහා ඇති විශාල බලපෑම බව පිළිගන්නේ නැත. ආරක්ෂක සමාගම් සෑම වසරකම දහස් ගණනක් ප්රයෝජනවත් ප්රතිලාභ සලකා බැලිය යුතුය. OpenZeppelin පමණක් ම අපගේ සියලු විනිශ්චයවලදී නිෂ්පාදනය වෙත ළඟා වීමට පෙර 700 කට වැඩි ප්රශ්නීය හා ඉහළ මට්ටමක අතුරුදහන්තා හඳුනාගෙන ඇත. මෙම ප්රතිලාභ කළ අතුරුදහන්තා ප්රකාශයට පත් නොවේ, නමුත් ඒවා ආරක්ෂිත වටිනාකම බිලියන ගණනක් සහ අහිමි පරිශීලකයන් අහිමි වීමෙන් ඉතිරි කර ඇත. උසස් තත්ත්වයේ ආරක්ෂක විනිශ්චය ද සංවර්ධන කණ්ඩායම් සංවර්ධනය ජීවිතයේ දී ඔවුන්ගේ ආරක්ෂක තත්වය වැඩි දියුණු කිරීමට උපකාරී වේ. සැබෑ පාඨමාලාව වන්නේ විනිශ්චය අසත් ය බව නොවේ – එය කර්මාන්තයේ විනිශ්චය ක්රියාකාරකම් තවමත් වැදගත් වටිනාකමක් ආරක්ෂා කරන සංකීර්ණ ප්රොටොක්ලට් වර්ධනය වේගයෙන් කොපමණ වේගයෙන් බවට පත් වී නොමැත. විනිශ්චය බොහෝ විට තනි විනිශ්චයන් වෙනුවට දිගු ගනුදෙනු ලෙස ක්රියාත්මක වන නිසා, කේත පදනම වර්ධනය වන විට සබැඳිය අහිමි විය හැකිය. 2.1 දිගුකාලීන ආරක්ෂාව කර්මාන්ත සම්මතයක් ලෙස ස්ථාපනය කිරීම Balancer v2 ප් රයෝජනයට අනුව, 2016 දී ස්මාර්ට් කොන්ත්රාත්තුව විනිවිද කිරීමේ ක් රියාවලිය ආරම්භ කිරීමෙන් පසු, අපි බොහෝ විට සාර්ථකතම ආරක්ෂක ප්රතිඵල දිගුකාලීන ආරක්ෂක සබඳතා වලින් ඇති වන අතර, දිගුකාලීන සම්පූර්ණ ප්රොටෝලට් codebases සහ ඔවුන්ගේ සියලු වෙනස්කම් කාලය තුළදී සකස් කරන අතර, බොහෝ විට එම වෙනස්කම් වලට පමණක් සීමා වන ප්රධාන යාවත්කාලීන පිළිබඳ විශේෂිත කේත සමාලෝචන වෙනුවට. ආරක්ෂක පර්යේෂකයන් දිගින් දිගටම ප්රොටෝලට් සමඟ වැඩ කරන විට, ඔවුන් ප්රොටෝලට් ආකෘතිය, ඉංජිනේරු ක්රියාවන් සහ විශේෂිත සැලසුම් තීරණ ගත්තේ ඇයි පිළිබඳ ගැඹුරු දැනුම වර්ධනය කරයි. Balancer v2 කේත බැංකුව හතරක් ස්වාධීන විනිසුරු සමාගම් විසින් සමාලෝචනය කර ඇති අතර, සෑම සමාගමක්ම ප්රොටොක්ටෝලයේ විවිධ ප්රමාණයන් මත අවධානය යොමු කිරීමට කටයුතු කර ඇත.විශාල විනිසුරුවරුන් සහභාගී වීම අතුරුදන් වූ දුර්වලතා ඇතිවීමේ අවදානම අඩු කර ගැනීම සඳහා උපකාරී වේ, නමුත් අවම වශයෙන් එක් දිගුකාලීන ආරක්ෂක සහයෝගිකයා රැකබලා ගැනීම කේත බැංකුව වර්ධනය වන ආකාරය සහ නව වෙනස්කම් දැනට පවතින ප්රවේශය සමඟ සන්නිවේදනය කරන ආකාරය පිළිබඳ ගැඹුරු, දිගුකාලීන අවබෝධයක් සපයයි. 2.2 හොඳ ආරක්ෂක පද්ධති ගොඩනැගීම OpenZeppelin කොන්ත්රාත්තුව ආරක්ෂිත ස්මාර්ට් කොන්ත්රාත්තුව ගොඩනැගීම සඳහා ප්රායෝගික සම්මතයක් බවට පත් වී ඇති අතර, දැනට මෙම කොන්ත්රාත්තුව ආරක්ෂිත සංවර්ධනය සඳහා මූලධර්මය ස්ථාපිත කර ඇති අතර, අපි ආරක්ෂිත සංවර්ධනය සඳහා වඩාත් ශක්තිමත් සම්මතයක් සකස් කිරීම සහ දිගුකාලීන ප්රොටෝලට් ආරක්ෂාව සඳහා වඩාත් ශක්තිමත් සම්මතයක් සකස් කිරීම සඳහා ක්රියාකාරීව කටයුතු කර තිබෙනවා. අපගේ ගනුදෙනුකරුවන් සමඟ දිගුකාලීන සබඳතා අමතරව, අපි ක්රියාකාරීව මෙම ප්රමිතීන් කර්මාන්තය හා නීතිමය මට්ටම් මත නිර්මාණය කිරීමට වැඩ කරනවා. උදාහරණයක් ලෙස, OpenZeppelin කර්මාන්තයේ ප්රමිතීන් සකස් කිරීමේ ආයතන, Blockchain Security Standards Council, Enterprise Ethereum Alliance, සහ ජාත්යන්තර සම්මත සංවිධානය (ISO) වැනි, අපගේ කණ්ඩායම සහ සමාජය පර්යේෂකයන්ට උදව් කර ඇති ආරක්ෂක හොඳම ක්රියාකාරිත්වය මුළු කර්මාන්තයට ලබා ගත හැකි බව සහතික කිරීම සඳහා. විශේෂයෙන්, OpenZeppelin එක්සත් ජනපද මුදල් අමාත් යාංශය, එක්සත් ජනපද බලපත්ර හා විනිමය කොමිසම, එක්සත් රාජධානියේ මූල්ය ක්රියාකාරකම් බලධාරීන් සහ ප්රංශ ACPR සහ AMF සමඟ සම්බන්ධ කර ඇති අතර, සම්පූර්ණ ආරක් ෂක විභාග ක්රියාත්මක කිරීමෙන් ලැබෙන ප්රතිලාභ පිළිබඳව. අමතරව, අපි blockchain තාක්ෂණය සඳහා ආරක් ෂක විභාග ප්රමිතීන් සහ ක්රමයෝගිකයන් සකස් කිරීමට උපකාරී විය හැකි බව අපි විශ්වාස කරන අනෙකුත් ක්ෂේත්රවල විනිසුරුවරුන්ට සමාන ස්වයං විනිශ්චය සංවිධානය නිර්මාණය කිරීමට හැකියාව පර්යේෂණ කර ඇත, විනිසුරුවරුන්ට ගුණාත්මක හා ආචාරක අවශ්යතා සකස් කර ඇති අතර, සුදුසු විනිශ්ච 2.3 Blockchain ආරක්ෂක පරිසරය එකට ශක්තිමත් කිරීම සෑම ආරක්ෂක අනතුරක්ම අපගේ කර්මාන්තය පුරා වැඩි දියුණු කිරීම සඳහා වටිනා අවබෝධයක් ලබා දෙයි. Balancer v2 පාවිච්චි කිරීම ප්රොටෝලට් වඩාත් වටිනා හා සංකීර්ණ වන විට, ප්රොටෝලට් කණ්ඩායම් දිගුකාලීන ආරක්ෂාවට ආයෝජනය කිරීම, සහ සමාගම් සහතික කිරීම සඳහා එය සහාය වන පද්ධති ගොඩනැගීම සඳහා වැදගත් වේ.