-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
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.
-
RAIN Jetzt handeln$0.007852
113.00%
-
PIPPIN Jetzt handeln$0.06097
51.96%
-
PARTI Jetzt handeln$0.1396
42.04%
-
WAVES Jetzt handeln$0.9141
41.69%
-
ARC Jetzt handeln$0.04302
35.73%
-
HONEY Jetzt handeln$0.01029
21.80%
- Ripple, Banken und Bargeld: Die digitale Treasury-Revolution und Washingtons neue Blaupause
- 2026-01-31 22:40:02
- Bitcoins Hochseilakt: Verschuldungsquote steigt, Volatilität zeichnet sich ab
- 2026-01-31 22:20:02
- SON-Token von Spur Protocol: Eine Listing-Saga und ihre düsteren Preisaussichten
- 2026-01-31 22:15:04
- Bitcoin-Preisverfall droht, da Institutionen Milliarden abziehen: BTC steht vor einem kritischen Wendepunkt
- 2026-01-31 22:10:07
- Tria Airdrops zweiter Akt: Staffel 2 startet, XP-Details enthüllt
- 2026-01-31 22:05:08
- Silberliquidation sorgte für Aufsehen: Was geschah und was es bedeutete
- 2026-01-31 22:00:07
Verwandtes Wissen
Wie führe ich eine kettenübergreifende Nachricht mit einem LayerZero-Vertrag aus?
Jan 18,2026 at 01:19pm
Grundlegendes zur LayerZero-Architektur 1. LayerZero fungiert als leichtes, erlaubnisloses Interoperabilitätsprotokoll, das die Kommunikation zwischen...
Wie implementiert man EIP-712 für die sichere Signaturüberprüfung?
Jan 20,2026 at 10:20pm
EIP-712-Übersicht und Hauptzweck 1. EIP-712 definiert einen Standard für typisiertes strukturiertes Daten-Hashing und Signieren in Ethereum-Anwendunge...
Wie kann ich mich für Airdrops qualifizieren, indem ich mit neuen Verträgen interagiere?
Jan 24,2026 at 09:00pm
Anforderungen an die Vertragsinteraktion verstehen 1. Die meisten Airdrop-Kampagnen erfordern eine direkte Interaktion mit Smart Contracts, die auf un...
Wie überwacht man einen Smart Contract auf Sicherheitswarnungen?
Jan 21,2026 at 07:59am
On-Chain-Überwachungstools 1. Blockchain-Explorer wie Etherscan und Blockscout ermöglichen die Echtzeitprüfung von Vertragsbytecode, Transaktionsproto...
Wie kann ich einen Vertrag für automatisierte Zahlungen abschließen und finanzieren?
Jan 26,2026 at 08:59am
Grundlegendes zur Bereitstellung intelligenter Verträge 1. Entwickler müssen eine kompatible Blockchain-Plattform wie Ethereum, Polygon oder Arbitrum ...
Wie verwende ich OpenZeppelin-Verträge, um sichere dApps zu erstellen?
Jan 18,2026 at 11:19am
Grundlegendes zu den OpenZeppelin-Vertragsgrundlagen 1. OpenZeppelin Contracts ist eine Bibliothek wiederverwendbarer, von der Community geprüfter Sma...
Wie führe ich eine kettenübergreifende Nachricht mit einem LayerZero-Vertrag aus?
Jan 18,2026 at 01:19pm
Grundlegendes zur LayerZero-Architektur 1. LayerZero fungiert als leichtes, erlaubnisloses Interoperabilitätsprotokoll, das die Kommunikation zwischen...
Wie implementiert man EIP-712 für die sichere Signaturüberprüfung?
Jan 20,2026 at 10:20pm
EIP-712-Übersicht und Hauptzweck 1. EIP-712 definiert einen Standard für typisiertes strukturiertes Daten-Hashing und Signieren in Ethereum-Anwendunge...
Wie kann ich mich für Airdrops qualifizieren, indem ich mit neuen Verträgen interagiere?
Jan 24,2026 at 09:00pm
Anforderungen an die Vertragsinteraktion verstehen 1. Die meisten Airdrop-Kampagnen erfordern eine direkte Interaktion mit Smart Contracts, die auf un...
Wie überwacht man einen Smart Contract auf Sicherheitswarnungen?
Jan 21,2026 at 07:59am
On-Chain-Überwachungstools 1. Blockchain-Explorer wie Etherscan und Blockscout ermöglichen die Echtzeitprüfung von Vertragsbytecode, Transaktionsproto...
Wie kann ich einen Vertrag für automatisierte Zahlungen abschließen und finanzieren?
Jan 26,2026 at 08:59am
Grundlegendes zur Bereitstellung intelligenter Verträge 1. Entwickler müssen eine kompatible Blockchain-Plattform wie Ethereum, Polygon oder Arbitrum ...
Wie verwende ich OpenZeppelin-Verträge, um sichere dApps zu erstellen?
Jan 18,2026 at 11:19am
Grundlegendes zu den OpenZeppelin-Vertragsgrundlagen 1. OpenZeppelin Contracts ist eine Bibliothek wiederverwendbarer, von der Community geprüfter Sma...
Alle Artikel ansehen














