﻿---
title: "พร็อกซีที่อัปเกรดได้ยังไม่ได้เริ่มต้น: ความเสี่ยงจากการยึดตัวเริ่มต้น"
description: "พร็อกซีที่อัปเกรดได้เริ่มต้นพื้นที่จัดเก็บของตนผ่านการเรียกตัวเริ่มต้น ไม่ใช่ตัวสร้างของสัญญาการใช้งาน บทความนี้อธิบายการเรียกล่วงหน้า การล็อกการใช้งาน และการตรวจสอบการปรับใช้"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# พร็อกซีที่อัปเกรดได้ยังไม่ได้เริ่มต้น: ความเสี่ยงจากการยึดตัวเริ่มต้น

> จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

<a id="answer"></a>

## คำตอบโดยตรง

สัญญาที่อัปเกรดได้ไม่ได้ใช้ตัวสร้างเพื่อตั้งค่าสถานะของตัวแทน แต่อาศัยตัวเริ่มต้น บทความนี้จะอธิบายเอเจนต์ที่ไม่ได้เตรียมใช้งาน การล็อคการใช้งาน และการตรวจสอบการปรับใช้

เมื่อมีการปรับใช้ที่อยู่พร็อกซีใหม่ แต่ธุรกรรมการเริ่มต้นยังไม่ได้รับการยืนยัน ใครก็ตามอาจลองใช้ เรียกใช้ ตัวเริ่มต้นสาธารณะก่อนและกลายเป็นเจ้าของ

เมื่อเอเจนต์ถูกปรับใช้ ตัวสร้างจะไม่ดำเนินการตรรกะการเริ่มต้นของสัญญาในที่เก็บข้อมูลของตัวแทน ดังนั้น ระบบที่อัปเกรดได้มักจะใช้ตัวเริ่มต้นที่สามารถเรียกได้เพียงครั้งเดียวเพื่อตั้งค่าเจ้าของ พารามิเตอร์โทเค็น และโมดูล หากฟังก์ชันไม่ได้รับการป้องกันอย่างเหมาะสม หรือหากการปรับใช้และการกำหนดค่าเริ่มต้นถูกแบ่งออกเป็นสองธุรกรรม ผู้โจมตีอาจ เรียกใช้ ไว้ก่อน

<a id="mechanism"></a>

## วิธีการทำงาน

กระบวนการรักษาความปลอดภัยจะวางข้อมูลการโทรการปรับใช้และการเริ่มต้นไว้ในธุรกรรมอะตอมมิกเดียวกัน และปิดใช้งานการเริ่มต้นเมื่อใช้การสร้างสัญญาเพื่อป้องกันไม่ให้การดำเนินการนั้นถูกยึดครอง ตัวเริ่มต้นใหม่ใช้เพื่อเพิ่มสถานะใหม่ให้กับเวอร์ชันใหม่ และยังต้องจำกัดเวอร์ชันและการอนุญาตการโทรด้วย การตรวจสอบเจ้าของตัวแทนโดยไม่ตรวจสอบสถานะการเริ่มต้นการใช้งานเท่านั้นจึงอาจยังมีความเสี่ยงอยู่

การดำเนินการ on-chain แบ่งออกเป็นสี่ชั้น: กระเป๋าสินทรัพย์ดิจิทัล รับผิดชอบในการแสดงผลและลายเซ็น RPC รับผิดชอบในการอ่านและการออกอากาศ รหัสสัญญาจะกำหนดการเปลี่ยนแปลงสถานะ และฉันทามติบล็อกจะกำหนดว่าธุรกรรมจะได้รับการยืนยันในที่สุดหรือไม่ การแสดง "ความสำเร็จ" ในระดับใดๆ ไม่สามารถแทนที่การยืนยันในระดับอื่นได้

<a id="example"></a>

## ตัวอย่าง

โปรเจ็กต์ปรับใช้เอเจนต์ก่อนและวางแผนที่จะ เรียกใช้ เตรียมใช้งาน (ทีม) ต่อไป ผู้โจมตีตรวจสอบพูลหน่วยความจำและเริ่มต้น เรียกใช้ เป็นครั้งแรก (ผู้โจมตี) ด้วยค่าธรรมเนียมที่สูงกว่า กลายเป็นผู้ดูแลระบบ จากนั้นอัปเกรดเป็นการใช้งานที่เป็นอันตรายและโอนเงิน ธุรกรรมการเริ่มต้นของทีมจะย้อนกลับ แต่ ณ จุดนี้การควบคุมจะสูญเสียไป

เวลาของแก๊ส การเลื่อนหลุด และบล็อกในกรณีนี้ใช้เพื่อสาธิตวิธีการคำนวณ ก่อนการดำเนินการจริง ควรอ่านราคา สภาพคล่อง การอนุญาต และสถานะสัญญาของเชนปัจจุบันและบล็อกปัจจุบัน จำนวนเงินจะบันทึกจำนวนโทเค็น ค่าดอลลาร์ และจำนวนเต็มดิบบนเชนไปพร้อมๆ กัน

<a id="risks"></a>

## ความเสี่ยง

ผลตอบแทนจะต้องคำนวณตามมูลค่าที่ออกจริง:

มูลค่าทางออกสุทธิ = มูลค่าตลาดของสินทรัพย์ - ราคาตกตะลึง - ค่าธรรมเนียมโปรโตคอล - ภาษีการโอน - Gas - ส่วนลดความเสี่ยงในการรอ

สร้างสถานการณ์ความเครียดสามสถานการณ์ของความแออัดของเครือข่าย ข้อยกเว้นของ Oracle และการอัปเกรดผู้ดูแลระบบ สมมติว่าแก๊สขยายห้าครั้ง ความลึกของพูลลดลง 50% สเตเบิลคอยน์ ลดราคา 5% และคุณไม่สามารถออกได้เป็นเวลาหนึ่งวัน หากรายได้หนึ่งเดือนไม่สามารถชดเชยแรงกดดันได้ รายได้ที่สูงไม่ได้ให้ค่าตอบแทนที่เพียงพอ

โปรโตคอลเดี่ยว เชนเดี่ยว บริดจ์เดี่ยว และสกุลเงินที่มีเสถียรภาพเดียวจะกำหนดขีดจำกัดสูงสุดตามลำดับ ตำแหน่งใดๆ ที่จำเป็นต้องมีผู้ดูแลระบบ oracles บริดจ์ ส่วนหน้า และ RPC เดียวให้เป็นปกติในเวลาเดียวกันจึงจะออก ควรแคบลง และการขึ้นต่อกันที่เกี่ยวข้องหลายรายการต้องไม่เข้าใจผิดว่าเป็นการกระจาย

<a id="misconceptions"></a>

## ความเข้าใจผิดที่พบบ่อย

* เรื่องที่ 1: ความสมดุลของส่วนหน้าคือข้อเท็จจริงในเชน ส่วนหน้าอาจถูกแคช จัดทำดัชนีล่าช้า หรือเชื่อมต่อกับเครือข่ายที่ไม่ถูกต้อง และต้องได้รับการตรวจสอบความถูกต้องข้ามกับการอ่านสัญญา

* เรื่องที่ 2: การเพิ่มขึ้นของ Gas หรือความคลาดเคลื่อนสามารถแก้ไขความล้มเหลวได้ Gas ส่งผลต่อการคัดแยกเท่านั้น และการเลื่อนไหลทำให้ราคาผ่อนคลายเท่านั้น ข้อผิดพลาดในการอนุญาต Nonce และเงื่อนไขสัญญาจะไม่ได้รับการซ่อมแซมโดยอัตโนมัติ

* เรื่องที่ 3: การทดสอบในจำนวนเล็กน้อยที่ประสบความสำเร็จหมายถึงความปลอดภัยถาวร การอัปเกรดผู้ดูแลระบบ พารามิเตอร์แบบไดนามิก และการเปลี่ยนแปลงสภาพคล่องจะเปลี่ยนผลลัพธ์และควรได้รับการตรวจสอบก่อนการขยายแต่ละตำแหน่ง

<a id="related"></a>

## หัวข้อที่เกี่ยวข้อง

* [ERC-4626 การโจมตีเงินเฟ้อครั้งแรก: เหตุใดส่วนแบ่งของ Vault จึงอาจถูกปัดเศษ](/th/crypto/erc4626-inflation-attack/)
* [สัญญาเอเจนซี่](/th/crypto/proxy-contract/)
* [สัญญาอัจฉริยะ](/th/crypto/smart-contract/)
* [สัญญาที่อัปเกรดได้](/th/crypto/upgradeable-contract/)
* [หลักฐานความถูกต้อง](/th/crypto/validity-proof/)

<a id="sources"></a>

## แหล่งที่มา

* [API ของ Proxy และ Initializable](https://docs.openzeppelin.com/contracts/5.x/api/proxy) - OpenZeppelin (เข้าถึง: 2026-08-20)
* [การเขียนสัญญาที่อัปเกรดได้](https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable) - OpenZeppelin (เข้าถึง: 2026-08-20)
* [การอัปเกรดสัญญาอัจฉริยะ](https://ethereum.org/developers/docs/smart-contracts/upgrading/) - Ethereum.org (เข้าถึง: 2026-08-20)

Source: https://wiki.fcontext.com/th/crypto/initializer-takeover/index.mdx
