Heim Backend-Entwicklung Golang golang Ethereum

golang Ethereum

May 21, 2023 pm 05:34 PM

Golang Ethereum: So verwenden Sie Go zum Schreiben intelligenter Verträge

Die Popularität der Blockchain-Technologie hat große Veränderungen im Leben und in der Wirtschaft mit sich gebracht, wobei Ethereum eine der Open-Source-Plattformen für verteilte öffentliche Blockchains ist, die es Entwicklern ermöglicht, intelligente Verträge zu verwenden Implementierung programmierbarer digitaler Assets. Im Gegensatz zu anderen gängigen Programmiersprachen macht Golang die Entwicklung intelligenter Verträge einfacher und sicherer und bietet gleichzeitig eine höhere Ausführungseffizienz und Parallelität. In diesem Artikel untersuchen wir, wie man mit Golang intelligente Verträge schreibt.

Einführung in Ethereum

Ethereum ist eine dezentrale, öffentliche Open-Source-Blockchain-Plattform mit intelligenten Vertrags- und verteilten Anwendungsfunktionen (DApp). Intelligente Verträge sind selbstausführende Verträge, die auf Codebasis geschrieben werden und im Ethereum-Netzwerk bereitgestellt und ausgeführt werden können. Gleichzeitig können sie die Übertragung, Datenspeicherung und komplexen logischen Operationen von Ethereum realisieren, was Ethereum zu einem führenden Unternehmen in der Blockchain macht Entwicklung.

Golang ist eine sehr beliebte Programmiersprache, auch bekannt als Go. Es handelt sich um eine Programmiersprache, die 2009 von Robert Griesemer, Rob Pike und Ken Thompson bei Google entwickelt wurde und zum Aufbau leistungsstarker Netzwerke und verteilter Systeme verwendet wird. Im Vergleich zu herkömmlichen Programmiersprachen bietet Go eine höhere Einfachheit, Sicherheit und Leistung und unterstützt Parallelität, sodass es auch im Blockchain-Bereich weit verbreitet ist.

Golang installieren und konfigurieren

Bevor wir beginnen, müssen wir die Golang-Umgebung installieren und konfigurieren. Sie können die neueste Version des Golang-Installationsprogramms von der offiziellen Website herunterladen und den Anweisungen zur Installation folgen. Nach Abschluss können Sie im Terminal überprüfen, ob die Installation erfolgreich war:

go version
Nach dem Login kopieren

Wenn die Installation erfolgreich war, wird die Go-Version angezeigt.

Smart Contracts schreiben

Nun nehmen wir einen einfachen Smart Contract als Beispiel, um zu erklären, wie man Golang zum Schreiben von Smart Contracts verwendet.

Zuerst erstellen wir ein Go-Ethereum-Projekt und können den folgenden Befehl im Terminal ausführen:

mkdir go-ethereum
cd go-ethereum
Nach dem Login kopieren

Dann initialisieren wir das Projekt mit dem Go-Modul:

go mod init go-ethereum
Nach dem Login kopieren

Als nächstes müssen wir Abhängigkeiten hinzufügen, um die Entwicklung intelligenter Verträge von Ethereum zu unterstützen . Wir verwenden hier das Paket go-ethereum, eine vom Ethereum-Team entwickelte Go-Sprachimplementierung, die umfassende API-Unterstützung für die Entwicklung intelligenter Verträge bietet.

go get github.com/ethereum/go-ethereum
Nach dem Login kopieren

Im Projektverzeichnis erstellen wir einen Solidity-Smart-Vertrag (MyContract.sol), wie unten gezeigt:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyContract {
    uint256 value;

    function setValue(uint256 _value) public {
        value = _value;
    }

    function getValue() public view returns (uint256) {
        return value;
    }
}
Nach dem Login kopieren

Oben fügen wir dem Vertrag die Annotation SPDX-License-Identifier hinzu, um die Lizenz anzugeben. Als nächstes deklarieren wir den MyContract-Vertrag und fügen eine Statusvariable namens value hinzu. Wir definieren zwei öffentliche Funktionen, setValue und getValue. Erstere setzt den Wert von value auf _value und letztere gibt den Wert des aktuellen Werts zurück.

Als nächstes verwenden wir den folgenden Befehl, um die Go-Bindung für den Solidity-Smart-Vertrag im Projektverzeichnis zu generieren:

abigen --sol MyContract.sol --pkg bindings --out MyContract.go
Nach dem Login kopieren

Die Option --pkg gibt den Paketnamen des generierten Go-Codes an, --out gibt die Ausgabedatei von an der generierte Go-Codename. Der abigen-Befehl verwendet die Quelldatei MyContract.sol des Solidity-Smart-Vertrags, um den Go-Bindungscode MyContract.go zu generieren.

Jetzt erstellen wir mit dem folgenden Befehl eine Go-Datei (main.go) und fügen darin den folgenden Inhalt hinzu:

package main

import (
    "context"
    "fmt"
    "math/big"

    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/ethclient"

    "./bindings"
)

func main() {
    client, err := ethclient.Dial("https://mainnet.infura.io")
    if err != nil {
        panic(err)
    }

    contractAddress := common.HexToAddress("0x06857768a9b56c860c89effbeb8ce6c6a46940ef")
    instance, err := bindings.NewMyContract(contractAddress, client)
    if err != nil {
        panic(err)
    }

    value, err := instance.GetValue(&bind.CallOpts{})
    if err != nil {
        panic(err)
    }
    fmt.Println("Value:", value)

    tx, err := instance.SetValue(&bind.TransactOpts{
        From:     common.HexToAddress("0x8c51b77048b5A9A1bcc30158b4859Af247bAd2b0"),
        GasLimit: uint64(200000),
        GasPrice: big.NewInt(20000000000),
    }, big.NewInt(10))
    if err != nil {
        panic(err)
    }
    fmt.Println("Tx Hash:", tx.Hash().Hex())
}
Nach dem Login kopieren

Oben haben wir ein paar Abhängigkeiten importiert, darunter das go-ethereum-Paket und das, das wir mit generiert haben das Abigen-Tool Das MyContract-Paket sowie mehrere Standardbibliothekspakete. Wir erstellen eine Hauptfunktion, um unsere Anwendung zu starten.

In der Hauptfunktion verwenden wir die Methode ethclient.Dial, um eine Verbindung zum Ethereum-Netzwerk herzustellen, und geben dabei den von Infura bereitgestellten Knoten https://mainnet.infura.io an. Instanziieren Sie MyContract und geben Sie die Vertragsadresse und den Kunden an. Wir rufen die Funktion GetValue auf, um den Wert des aktuellen Werts abzurufen und das Ergebnis auf der Konsole auszugeben.

Als nächstes rufen wir die SetValue-Funktion auf, um den Wert auf 10 zu setzen und das Gaslimit und den Gaspreis anzugeben. Zum Schluss drucken wir den Transaktions-Hash aus.

Jetzt können wir unser Programm mit dem folgenden Befehl kompilieren und ausführen:

go build
./go-ethereum
Nach dem Login kopieren

Die Anwendung stellt eine Verbindung zum Ethereum-Netzwerk her und verwendet die Methoden setValue und getValue des MyContract-Vertrags, um den Wert von value festzulegen und abzurufen.

Zusammenfassung

In diesem Artikel haben wir gelernt, wie man Ethereum-Smart-Verträge mit Golang schreibt, und gezeigt, wie man mit dem Abigen-Tool Go-Bindungscode für Solidity-Smart-Verträge generiert. Wir verwenden auch das Paket go-ethereum, das umfassende API-Unterstützung bietet, um das Schreiben intelligenter Verträge zu erleichtern. Die Kombination von Golang und Ethereum eröffnet neue Möglichkeiten für die Entwicklung verteilter Anwendungen und erleichtert Entwicklern die Erstellung dezentraler Anwendungen und die Implementierung programmierbarer digitaler Assets im Ethereum-Netzwerk.

Das obige ist der detaillierte Inhalt vongolang Ethereum. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Schwachstellen von Debian Openensl Was sind die Schwachstellen von Debian Openensl Apr 02, 2025 am 07:30 AM

OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

Wie verwenden Sie das PPROF -Tool, um die Go -Leistung zu analysieren? Wie verwenden Sie das PPROF -Tool, um die Go -Leistung zu analysieren? Mar 21, 2025 pm 06:37 PM

In dem Artikel wird erläutert, wie das PPROF -Tool zur Analyse der GO -Leistung verwendet wird, einschließlich der Aktivierung des Profils, des Sammelns von Daten und der Identifizierung gängiger Engpässe wie CPU- und Speicherprobleme.Character Count: 159

Wie schreibt man Unit -Tests in Go? Wie schreibt man Unit -Tests in Go? Mar 21, 2025 pm 06:34 PM

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Ist es vielversprechender, Java oder Golang von Front-End zu Back-End-Entwicklung zu verwandeln? Ist es vielversprechender, Java oder Golang von Front-End zu Back-End-Entwicklung zu verwandeln? Apr 02, 2025 am 09:12 AM

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

Wie geben Sie Abhängigkeiten in Ihrer Go.Mod -Datei an? Wie geben Sie Abhängigkeiten in Ihrer Go.Mod -Datei an? Mar 27, 2025 pm 07:14 PM

In dem Artikel werden die Verwaltungs -Go -Modulabhängigkeiten über Go.mod erörtert, die Spezifikationen, Aktualisierungen und Konfliktlösung abdecken. Es betont Best Practices wie semantische Versioning und reguläre Updates.

Wie verwenden Sie tabelgesteuerte Tests in Go? Wie verwenden Sie tabelgesteuerte Tests in Go? Mar 21, 2025 pm 06:35 PM

In dem Artikel werden mit Tabellensteuerungstests in GO eine Methode mit einer Tabelle mit Testfällen getestet, um Funktionen mit mehreren Eingaben und Ergebnissen zu testen. Es zeigt Vorteile wie eine verbesserte Lesbarkeit, verringerte Vervielfältigung, Skalierbarkeit, Konsistenz und a

See all articles