https://github.com/positivesecurity/blockscout-go-api
Golang client for Blockscout API
https://github.com/positivesecurity/blockscout-go-api
blockscout blockscout-api ethereum go
Last synced: 3 months ago
JSON representation
Golang client for Blockscout API
- Host: GitHub
- URL: https://github.com/positivesecurity/blockscout-go-api
- Owner: PositiveSecurity
- License: mit
- Created: 2023-09-21T13:20:00.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-06T19:53:18.000Z (about 2 years ago)
- Last Synced: 2024-06-19T17:57:27.838Z (almost 2 years ago)
- Topics: blockscout, blockscout-api, ethereum, go
- Language: Go
- Homepage:
- Size: 27.3 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# blockscout-api
[](https://pkg.go.dev/github.com/PositiveSecurity/blockscout-go-api)
[](https://goreportcard.com/report/github.com/PositiveSecurity/blockscout-go-api)
Golang-client for [blockscout.com](https://www.blockscout.com/) (and its family), with almost complete implementation (accounts, transactions, tokens, contracts, blocks, epoch)
- RPC API Endpoints
- ETH RPC API
- REST API
While there are several explores available to blockchain projects, most are closed systems (ie Etherscan, Etherchain). Blockscout provides a much needed open-source alternative.
# Usage
```
go get github.com/PositiveSecurity/blockscout-go-api
```
Create an API instance and off you go.
```go
package main
import (
"fmt"
"github.com/PositiveSecurity/blockscout-go-api"
"github.com/PositiveSecurity/blockscout-go-api/client"
"github.com/PositiveSecurity/blockscout-go-api/common"
)
func main() {
var client client.BlockScoutAPIClient
// set your url api
client.SetBlockScoutApiUrl(blockscout.EthMainnet)
client.SetBlockScoutApiUrlV2(blockscout.EthMainnetV2)
// get the current block number
block, err := client.GetCurrentBlockRpcApi()
if err != nil {
fmt.Println(err)
}
fmt.Println(block)
// convert *big.Int to uint64
blocknum, err := common.BigIntToUint64(block)
if err != nil {
fmt.Println(err)
}
// get the ETH balance of vitalik.eth on the current block number
addr := "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
balance, err := client.GetBalance(addr, blocknum)
if err != nil {
fmt.Println(err)
}
fmt.Println(balance)
// api v2
body, err := client.GetBlockInfo("0")
if err != nil {
fmt.Println(err)
}
// print json
common.PrettyPrintJSON(body)
}
```