ホームページ > バックエンド開発 > Golang > golang イーサリアム

golang イーサリアム

WBOY
リリース: 2023-05-21 17:34:07
オリジナル
687 人が閲覧しました

Golang Ethereum: Go を使用してスマート コントラクトを作成する方法

ブロックチェーン テクノロジーの普及は、生活と経済に大きな変化をもたらしました。その中で、イーサリアムはオープンソースの分散型パブリック ブロックチェーン プラットフォームの 1 つであり、開発者はスマート コントラクトを通じてプログラム可能なデジタル資産を実装できます。他の一般的なプログラミング言語とは異なり、Golang はスマート コントラクトの開発をよりシンプルかつ安全にしながら、より高い実行効率と同時実行性を提供します。この記事では、Golang を使用してスマート コントラクトを作成する方法を説明します。

イーサリアムの概要

イーサリアムは、スマート コントラクトと分散アプリケーション (DApp) 機能を備えた、分散型のオープンソースのパブリック ブロックチェーン プラットフォームです。スマート コントラクトは、コードに基づいて記述され、イーサリアム ネットワーク上で展開および実行できる自動実行コントラクトであり、同時にイーサリアムの転送、データ ストレージ、および複雑な論理操作を実現することができ、イーサリアムをブロックチェーンのリーダーにします。開発の重要なプラットフォーム。

Golang は、Go とも呼ばれる非常に人気のあるプログラミング言語です。 2009 年に Google の Robert Griesemer、Rob Pike、Ken Thompson によって開発された、高性能ネットワークと分散システムの構築に使用されるプログラミング言語です。 Go は従来のプログラミング言語と比較して、シンプルさ、セキュリティ、パフォーマンスが高く、同時実行性をサポートしているため、ブロックチェーン分野でも広く使用されています。

Golang のインストールと構成

始める前に、Golang 環境をインストールして構成する必要があります。最新バージョンの Golang インストーラーを公式 Web サイトからダウンロードし、指示に従ってインストールできます。完了後、ターミナルでインストールが成功したかどうかを確認できます。

go version
ログイン後にコピー

インストールが成功した場合は、Go バージョンが表示されます。

スマート コントラクトの作成

ここでは、Golang を使用してスマート コントラクトを作成する方法を説明するために、単純なスマート コントラクトを例に挙げます。

まず、go-ethereum プロジェクトを作成します。ターミナルで次のコマンドを実行できます:

mkdir go-ethereum
cd go-ethereum
ログイン後にコピー

次に、go モジュールを使用してプロジェクトを初期化します:

go mod init go-ethereum
ログイン後にコピー

次に、イーサリアムでのスマート コントラクト開発をサポートするための依存関係を追加する必要があります。ここでは go-ethereum パッケージを使用します。これは Ethereum チームによって開発された Go 言語実装であり、スマート コントラクトの開発に豊富な API サポートを提供します。

go get github.com/ethereum/go-ethereum
ログイン後にコピー

プロジェクト ディレクトリで、以下に示すように Solidity スマート コントラクト (MyContract.sol) を作成します。

// 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;
    }
}
ログイン後にコピー

先頭に、SPDX-License-Identifier アノテーションをコントラクトに追加します。ライセンスを指定します。次に、MyContract コントラクトを宣言し、value という状態変数を追加します。 setValue と getValue という 2 つのパブリック関数を定義し、前者は value の値を _value に設定し、後者は現在の値の値を返します。

次に、次のコマンドを使用して、Solidity スマート コントラクトの Go バインディングをプロジェクト ディレクトリに生成します。

abigen --sol MyContract.sol --pkg bindings --out MyContract.go
ログイン後にコピー

オプション --pkg は、Go コードのパッケージ名を指定します。 --out 生成される Go コードの出力ファイル名を指定します。 abigen コマンドは、Solidity スマート コントラクトのソース ファイル MyContract.sol を使用して、Go バインディング コード MyContract.go を生成します。

次に、次のコマンドを使用して Go ファイル (main.go) を作成し、その中に次のコンテンツを追加します。

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())
}
ログイン後にコピー

先頭で、go を含むいくつかの依存関係をインポートしました。 ethereum パッケージと、abigen ツールを使用して生成した MyContract パッケージ、およびいくつかの標準ライブラリ パッケージ。アプリケーションを起動する main 関数を作成します。

main 関数では、ethclient.Dial メソッドを使用して Ethereum ネットワークに接続し、Infura が提供する https://mainnet.infura.io ノードを指定します。 MyContract をインスタンス化し、コントラクトのアドレスとクライアントを指定します。 GetValue 関数を呼び出して現在の値を取得し、結果をコンソールに出力します。

次に、SetValue 関数を呼び出して値を 10 に設定し、ガス制限とガス価格を指定します。最後に、トランザクション ハッシュを出力します。

これで、次のコマンドを使用してプログラムをコンパイルして実行できます:

go build
./go-ethereum
ログイン後にコピー

アプリケーションは Ethereum ネットワークに接続し、MyContract コントラクトのメソッド setValue および getValue を使用して値を設定および取得します。価値のあるもの。

概要

この記事では、Golang を使用して Ethereum スマート コントラクトを作成する方法を学び、abigen ツールを使用して Solidity スマート コントラクト用の Go バインディング コードを生成する方法を示しました。また、スマート コントラクトの作成を容易にする豊富な API サポートを提供する go-ethereum パッケージも使用します。 Golang と Ethereum の組み合わせは、分散アプリケーションの開発に新たな可能性をもたらし、開発者が分散アプリケーションを構築し、Ethereum ネットワーク上でプログラム可能なデジタル資産を実装することが容易になります。

以上がgolang イーサリアムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート