Solidity Tutorial: Alles über Funktionen – Jean Cvllr

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


Was ist die Funktionssignatur?

Unter der Annahme, dass wir eine Funktion aus einem Vertrag aufrufen möchten, müssen unsere Transaktionsdaten mit der Funktionssignatur beginnen.

Dadurch kann erkannt werden, welche Funktion aufgerufen wird. Die Funktionssignatur wird auch als definiert Funktionswahlschalter.

Die Vertrags-ABI-Spezifikation in der Solidity-Dokumentation enthält eine ausführliche Erläuterung:

Die ersten vier Bytes der Aufrufdaten für einen Funktionsaufruf geben die aufzurufende Funktion an. Es ist das erste (links, höherwertige im Big-Endian) vier Byte des Keccak-256 (SHA-3) -Hashs der Signatur der Funktion.

Die Signatur ist definiert als der kanonische Ausdruck des Basisprototyps ohne Datenstandortspezifizierer, d. H. Der Funktionsname mit der in Klammern gesetzten Liste von Parametertypen. Parametertypen werden durch ein einzelnes Komma getrennt – es werden keine Leerzeichen verwendet.

Wie wird die Funktionssignatur ermittelt?

Die Signatur einer Funktion wird durch Hashing mit bestimmt keccak256 ::

  1. den Namen der Funktion,
  2. Die Parameter Typen (nur die Typen, nicht die Parameternamen).

Nur die Parameter sind Teil der Signatur, nicht die zurückgegebenen Werte.

Funktionssignatur = Die ersten vier Bytes des zurückgegebenen Hashs

NB: Denken Sie daran, wenn Sie verwenden uint als Funktionsparameter, wie abheben (uint Betrag) Die Formel lautet:

Grundlegendes Beispiel

Schauen wir uns an, wie der Hash aussieht. mit einem einfachen Beispiel. Wir werden die Funktion verwenden Gleichgewicht von() aus dem Open Zeppelin ERC20 Token Vertrag.

Wie gesagt, der Name der Parameter wird nicht berücksichtigt. Also die keccak256 wird auf Fettdruck angewendet (vergiss die schließenden Klammern nicht!). Die Formel lautet:

Hier ist der unten erhaltene Hash, wobei der Funktionswähler fett gedruckt ist.

Beispiel mit mehreren Parametern

Hier ist ein Beispiel mit der folgenden Funktion:

Der Teil, den wir hashen werden, wird sein:

Wir wenden dann die an keccak256 Hash…

… Und erhalten Sie den folgenden Hash.

Auch hier behalten wir die erste 4 Bytes nur. In unserem Beispiel lautet unsere Funktionssignatur 0xe0b6fcfc .

Abrufen einer Funktionssignatur in Solidity

In Solidity gibt es eine Verknüpfung zum Abrufen der Signatur einer Funktion. Betrachten Sie den folgenden Vertrag mit einer eindeutigen Funktion

Sie können die Funktionssignatur des erhalten f () durch die Nutzung this.f.selector in einer anderen Funktion. Wähler ist eine Methode, die den Wert von zurückgibt bytes4.

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close