-
bitcoin $76809.786636 USD
-1.48% -
ethereum $2255.013135 USD
-1.06% -
tether $0.998331 USD
-0.03% -
bnb $692.945952 USD
-2.00% -
xrp $1.253024 USD
0.33% -
usd-coin $0.999680 USD
0.01% -
solana $92.085048 USD
-2.26% -
tron $0.320675 USD
1.75% -
hyperliquid $83.729800 USD
-2.23% -
zcash $1138.211301 USD
-10.02% -
monero $625.310942 USD
2.97% -
dogecoin $0.073998 USD
-1.60% -
unus-sed-leo $9.293910 USD
-1.10% -
chainlink $11.118351 USD
-1.69% -
cardano $0.187432 USD
-1.61%
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.
-
PIEVERSE Jetzt handeln$1.15
10.64%
-
ZRO Jetzt handeln$1.86
8.56%
-
PUMP Jetzt handeln$0.004253
7.66%
-
LIT Jetzt handeln$3.32
7.51%
-
VVV Jetzt handeln$22.62
6.18%
-
NIGHT Jetzt handeln$0.04218
5.43%
- US Midterms, Prognosemärkte und Krypto-Wettbewerbe: Eine riskante Wette auf die Zukunft Washingtons
- 2026-11-04 04:30:22
- Digitale Vermögenswerte, globale Finanzen und KI: Navigieren durch die nächste Grenze bei DavosWeb3 und darüber hinaus
- 2026-11-04 04:30:22
- Avalanche AVAX-Preis sinkt aufgrund allgemeiner Marktprobleme; Das institutionelle Interesse bleibt groß
- 2026-11-03 12:35:02
- Warum ist der Mengenpreis gesunken? Ein tiefer Einblick in den jüngsten Rückgang von QNT inmitten der Marktunruhe
- 2026-11-03 12:55:01
- XRP-Preisdiagrammanalyse von Eggag Crypto: Sind Sie bereit für die „größte Welle 3“?
- 2026-11-03 01:15:01
- Die Muttergesellschaft von Bed Bath & Beyond unterstützt den 350-Millionen-Dollar-SPAC-Deal von tZERO: Was New Yorker wissen müssen
- 2026-11-03 01:15:01
Verwandtes Wissen
So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position
Oct 26,2026 at 04:06am
Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...
So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam
Oct 20,2026 at 06:39pm
Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...
So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest
Oct 23,2026 at 09:34am
Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...
So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades
Oct 21,2026 at 02:00am
Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...
So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation
Oct 26,2026 at 12:20pm
Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...
So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an
Oct 30,2026 at 10:19pm
Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...
So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position
Oct 26,2026 at 04:06am
Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...
So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam
Oct 20,2026 at 06:39pm
Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...
So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest
Oct 23,2026 at 09:34am
Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...
So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades
Oct 21,2026 at 02:00am
Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...
So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation
Oct 26,2026 at 12:20pm
Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...
So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an
Oct 30,2026 at 10:19pm
Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...
Alle Artikel ansehen














