Ethereum ialah platform blockchain sumber terbuka yang membolehkan sesiapa sahaja membina aplikasi yang diedarkan di atasnya. Yang paling terkenal ialah Ether, mata wang kripto utama rangkaian Ethereum. Platform Ethereum juga menyokong pembangunan kontrak pintar Melalui kontrak pintar, pembangun boleh mencipta aplikasi terdesentralisasi (DApps), termasuk pertukaran terdesentralisasi, organisasi terdesentralisasi, permainan terdesentralisasi, dsb.
Apabila DApp berinteraksi dengan Ethereum, ia mesti menggunakan API Ethereum, dipanggil Ethereum ABI. ABI bermaksud "Antara Muka Binari Aplikasi", yang mentakrifkan fungsi dan peristiwa kontrak pintar dan cara data dikodkan dan dinyahkodkan untuk komunikasi. Dalam Ethereum, ABI sering digunakan dengan bahasa pengaturcaraan Golang kerana Golang ialah bahasa pengaturcaraan yang cekap, serentak dan boleh dipercayai yang sangat sesuai untuk membina aplikasi blockchain.
Menggunakan Ethereum ABI di Golang memerlukan beberapa perpustakaan dan alatan, yang paling biasa digunakan ialah perpustakaan go-ethereum. Go-ethereum ialah pelaksanaan Golang bagi protokol Ethereum, yang menyediakan fungsi penuh Ethereum. Dalam contoh kod di bawah, kami akan menerangkan cara menggunakan perpustakaan go-ethereum di Golang untuk berinteraksi dengan Ethereum.
Pertama, kami perlu menambah perpustakaan go-ethereum pada projek kami. Kami boleh menambah go-ethereum pada projek kami menggunakan arahan berikut:
go get github.com/ethereum/go-ethereum
Ini akan memuat turun dan memasang pustaka go-ethereum.
Seterusnya, kami akan menulis program Golang mudah yang akan berinteraksi dengan Ethereum. Dalam contoh ini, kami akan menyambung ke rangkaian Ethereum dan menanyakan baki akaun Ethereum. Berikut ialah kod lengkap:
package main import ( "context" "fmt" "log" "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" ) func main() { client, err := ethclient.Dial("https://mainnet.infura.io") if err != nil { log.Fatal(err) } account := common.HexToAddress("0x...") balance, err := client.BalanceAt(context.Background(), account, nil) if err != nil { log.Fatal(err) } fmt.Println(balance) // 1000000000000000000 fmt.Println(balance.Div(balance, big.NewInt(1e18))) // 1 }
Dalam kod di atas, kami mula-mula menyambung ke rangkaian Ethereum menggunakan fungsi ethclient.Dial(). Di sini, kami menggunakan nod awam yang disediakan oleh infura. Kami juga boleh menggunakan nod Ethereum kami sendiri.
Seterusnya, kami menggunakan fungsi common.HexToAddress() untuk mencipta alamat akaun Ethereum. Di sini, anda perlu memasukkan alamat akaun Ethereum anda sendiri.
Akhir sekali, kami menanyakan baki akaun dengan memanggil fungsi klien.BalanceAt(). Fungsi ini akan mengembalikan integer besar yang mewakili baki Ethereum. Dalam contoh kami, baki ialah 1000000000000000000 Wei (unit terkecil Eter), kami membahagikan baki dengan 1e18 untuk mendapatkan bilangan syiling Ether, iaitu 1.
Dalam contoh mudah ini, kami menunjukkan cara berinteraksi dengan Ethereum menggunakan Golang dan perpustakaan go-ethereum. Dengan membuat aplikasi anda menggunakan Ethereum ABI, anda boleh berkomunikasi dengan kontrak pintar dan mencipta aplikasi terdesentralisasi.
Atas ialah kandungan terperinci Cara menggunakan Ethereum ABI di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!