-
bitcoin $77146.398531 USD
-0.23% -
ethereum $2514.088317 USD
-0.37% -
tether $0.999674 USD
0.00% -
bnb $722.500739 USD
-1.34% -
xrp $1.361192 USD
-0.23% -
usd-coin $0.999776 USD
-0.01% -
solana $101.320251 USD
-0.42% -
tron $0.339801 USD
0.16% -
hyperliquid $78.899137 USD
-0.02% -
zcash $1141.149289 USD
-0.18% -
dogecoin $0.084480 USD
-0.05% -
monero $530.834712 USD
-1.66% -
chainlink $11.453705 USD
-0.73% -
unus-sed-leo $9.056535 USD
-0.61% -
cardano $0.207439 USD
-0.31%
Was ist der Unterschied zwischen einer öffentlichen, privaten, internen und externen Funktion in Solidity?
Solidity's function visibility specifiers—public, private, internal, and external—control access to functions, impacting security, inheritance, and gas costs in smart contracts.
Nov 20, 2025 at 10:39 pm
Funktionssichtbarkeit in Solidität verstehen
Solidity, die primäre Programmiersprache für Ethereum-Smart Contracts, erzwingt eine strenge Zugriffskontrolle durch Funktionssichtbarkeitsspezifizierer. Diese Spezifizierer legen fest, wer eine Funktion aufrufen kann – sei es innerhalb des Vertrags, abgeleiteter Verträge oder extern. Die vier Typen – öffentlich, privat, intern und extern – definieren den Umfang der Zugänglichkeit und spielen eine entscheidende Rolle bei der Sicherung der Vertragslogik.
Öffentliche Funktionen
1. Auf öffentliche Funktionen kann von überall aus zugegriffen werden – innerhalb des Vertrags, abgeleiteter Verträge und extern über Transaktionen oder Aufrufe.2. Wenn eine Funktion als öffentlich markiert ist, generiert Solidity automatisch eine Getter-Funktion, wenn es sich um eine Statusvariable handelt oder einen direkten Aufruf über die Vertragsschnittstelle zulässt.
3. Diese Funktionen werden Teil der ABI (Application Binary Interface) des Vertrags und können so von Wallets, dApps und anderen Smart Contracts aufgerufen werden.
4. Bei öffentlichen Veranstaltungen können die Gaskosten aufgrund des Overheads für externe Anrufe und der Anforderungen an die Datenkodierung höher sein.
5. Ein häufiger Anwendungsfall umfasst benutzerbezogene Funktionen wie Token-Transfers oder Kontostandsprüfungen in ERC-20-Verträgen.
Private Funktionen
1. Private Funktionen können nur innerhalb desselben Vertrags aufgerufen werden und sind für abgeleitete Verträge oder externe Einheiten völlig unzugänglich.2. Sie eignen sich ideal zum Kapseln sensibler Logik, die nicht offengelegt oder überschrieben werden sollte.
3. Da sie nicht Teil der externen Schnittstelle sind, erscheinen private Funktionen nicht im ABI.
4. Entwickler verwenden sie häufig für interne Validierungs-, Hashing- oder Bereinigungsroutinen, die öffentliche oder interne Vorgänge unterstützen.
5. Obwohl ihr Code privat ist, ist er immer noch in der Kette sichtbar; Datenschutz bezieht sich nur auf den Ausführungszugriff, nicht auf die Verschleierung von Quellen.
Interne Funktionen
1. Interne Funktionen sind innerhalb des definierenden Vertrags und aller davon erbenden Verträge zugänglich.2. Sie können nicht direkt von externen Konten oder unabhängigen Verträgen aufgerufen werden, auch nicht durch adressbasierte Interaktionen.
3. Vererbungshierarchien stützen sich stark auf interne Funktionen, um wiederverwendbare Logik zu teilen, ohne sie öffentlich zugänglich zu machen.
4. Wie private Funktionen tragen sie nicht zum externen ABI des Vertrags bei.
5. Ein Beispiel umfasst Hilfsfunktionen in der SafeMath-Bibliothek von OpenZeppelin oder Modifikatoren, die Vorbedingungen über mehrere Methoden hinweg erzwingen.
Externe Funktionen
1. Externe Funktionen können nur von außerhalb des Vertrags aufgerufen werden – entweder durch einen anderen Vertrag oder ein EOA (Externally Owned Account).2. Sogar der Vertrag selbst muss die Syntax this.functionName() verwenden, um seine eigenen externen Funktionen aufzurufen, was einen Overhead für den Nachrichtenaufruf verursacht.
3. Diese Sichtbarkeit ist nützlich, wenn Sie sicherstellen möchten, dass eine Funktion niemals intern ausgeführt wird, um die Modularität zu fördern und den Gasmissbrauch zu reduzieren.
4. Externe Funktionen sind im ABI enthalten und können über Transaktionen oder Contract-to-Contract-Aufrufe aufgerufen werden.
5. Sie werden häufig für große Dateneingaben verwendet, da durch Aufrufdaten (die von externen Funktionen verwendet werden) die mit internen Aufrufen verbundenen Kosten für das Kopieren des Speichers vermieden werden.
Häufig gestellte Fragen
Kann eine private Funktion in einem abgeleiteten Vertrag überschrieben werden? Nein, auf private Funktionen kann nicht durch abgeleitete Verträge zugegriffen oder diese überschrieben werden. Mit den Schlüsselwörtern virtual und override können nur interne und öffentliche Funktionen überschrieben werden.
Was passiert, wenn ich keinen Sichtbarkeitsmodifikator spezifiziere? Wenn keine Sichtbarkeit angegeben ist, ist Solidity für Funktionen standardmäßig öffentlich. Für Zustandsvariablen ist der Standardwert intern. Aus Gründen der Sicherheit und Klarheit wird davon abgeraten, sich auf Standardwerte zu verlassen.
Gibt es einen Leistungsunterschied zwischen internen und externen Funktionsaufrufen? Ja. Interne Anrufe werden im selben Vertragskontext ausgeführt und verbrauchen nur minimalen Gasverbrauch. Externe Aufrufe erfordern, selbst wenn sie auf sich selbst verweisen, einen Nachrichtenaufruf, was aufgrund der Stack-Isolation und der ABI-Codierung den Gasverbrauch erhöht.
Kann eine externe Funktion Zustandsvariablen ändern? Ja, externe Funktionen können Zustandsvariablen ändern, sofern sie nicht durch andere Modifikatoren wie view oder pure eingeschränkt werden. Ihre Fähigkeit, den Speicher zu verändern, hängt von der Logik ab, nicht von der Sichtbarkeit.
Haftungsausschluss:info@kdj.com
Die bereitgestellten Informationen stellen keine Handelsberatung dar. kdj.com übernimmt keine Verantwortung für Investitionen, die auf der Grundlage der in diesem Artikel bereitgestellten Informationen getätigt werden. Kryptowährungen sind sehr volatil und es wird dringend empfohlen, nach gründlicher Recherche mit Vorsicht zu investieren!
Wenn Sie glauben, dass der auf dieser Website verwendete Inhalt Ihr Urheberrecht verletzt, kontaktieren Sie uns bitte umgehend (info@kdj.com) und wir werden ihn umgehend löschen.
-
FIL Jetzt handeln$0.9296
15.04%
-
BSV Jetzt handeln$17.33
5.12%
-
CRV Jetzt handeln$0.3520
4.55%
-
JST Jetzt handeln$0.1126
3.52%
-
INJ Jetzt handeln$6.12
2.65%
-
STABLE Jetzt handeln$0.02835
2.51%
- Japan, XRP und die XRP-Armee: Eine stille Revolution im globalen Finanzwesen?
- 2026-09-13 20:35:02
- Unbestätigter Buzz: Chainlink Whales, 10M LINK und die 17 %-Korrektur – Was ist wirklich los?
- 2026-09-13 16:55:01
- Cardano-Preisvorhersage, -analyse und -bewegung: Marktvolatilität und Zukunftspotenzial steuern
- 2026-09-13 16:25:01
- Datenverstoß bei Revolut: Gefälschte Regierungsanfragen nutzen Sicherheitslücken aus und legen Kundendaten offen
- 2026-09-13 09:00:02
- Blockstream, Liquid Network, Bitcoin: Streit um „gestohlene“ Gelder
- 2026-09-13 08:35:01
- Der Umlauf von Ripple RLUSD erreicht 2,4 Milliarden US-Dollar: Ein genauerer Blick auf die Entwicklung des Stablecoins
- 2026-09-13 04:50:01
Verwandtes Wissen
Wie überprüft man das Futures-Volumen und das Open Interest von DOGE?
Sep 12,2026 at 08:39am
Verständnis des DOGE Futures-Volumens 1. Das Futures-Volumen bezieht sich auf die Gesamtzahl der DOGE Futures-Kontrakte, die innerhalb eines bestimmte...
Wie kann man das BTC-Futures-Volumen und das Open Interest überprüfen?
Sep 12,2026 at 03:19pm
Datenquellen für BTC-Futures-Metriken 1. CoinGlass API v4 liefert Echtzeit-Finanzierungsraten, Liquidations-Heatmaps und detaillierte Aufschlüsselunge...
Wie liest man das DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Preisbewegungen auf DOGEUSDT Perpetual Charts verstehen 1. Die Candlestick-Formation verrät die unmittelbare Marktstimmung – grüne Kerzen zeigen eine ...
Wie liest man das ETHUSDT-Futures-Chart auf Binance?
Sep 13,2026 at 05:20am
Bitcoin Halbierungsmechanik 1. Alle 210.000 Blöcke wird die Blockbelohnung für Bitcoin Miner halbiert. 2. Dieses Ereignis tritt etwa alle vier Jahre a...
Wie kann ich die Bitcoin Futures-Finanzierungsgebühr auf Binance überprüfen?
Sep 13,2026 at 06:00pm
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie kann ich die Finanzierungsgebühr für BTC-Futures auf Binance überprüfen?
Sep 10,2026 at 08:00am
Auffinden der Anzeige der Förderrate 1. Navigieren Sie zur Handelsoberfläche von Binance Futures und wählen Sie den unbefristeten BTCUSDT-Kontrakt aus...
Wie überprüft man das Futures-Volumen und das Open Interest von DOGE?
Sep 12,2026 at 08:39am
Verständnis des DOGE Futures-Volumens 1. Das Futures-Volumen bezieht sich auf die Gesamtzahl der DOGE Futures-Kontrakte, die innerhalb eines bestimmte...
Wie kann man das BTC-Futures-Volumen und das Open Interest überprüfen?
Sep 12,2026 at 03:19pm
Datenquellen für BTC-Futures-Metriken 1. CoinGlass API v4 liefert Echtzeit-Finanzierungsraten, Liquidations-Heatmaps und detaillierte Aufschlüsselunge...
Wie liest man das DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Preisbewegungen auf DOGEUSDT Perpetual Charts verstehen 1. Die Candlestick-Formation verrät die unmittelbare Marktstimmung – grüne Kerzen zeigen eine ...
Wie liest man das ETHUSDT-Futures-Chart auf Binance?
Sep 13,2026 at 05:20am
Bitcoin Halbierungsmechanik 1. Alle 210.000 Blöcke wird die Blockbelohnung für Bitcoin Miner halbiert. 2. Dieses Ereignis tritt etwa alle vier Jahre a...
Wie kann ich die Bitcoin Futures-Finanzierungsgebühr auf Binance überprüfen?
Sep 13,2026 at 06:00pm
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie kann ich die Finanzierungsgebühr für BTC-Futures auf Binance überprüfen?
Sep 10,2026 at 08:00am
Auffinden der Anzeige der Förderrate 1. Navigieren Sie zur Handelsoberfläche von Binance Futures und wählen Sie den unbefristeten BTCUSDT-Kontrakt aus...
Alle Artikel ansehen














