golang geth 获取block.timestamp 给代码
时间: 2025-01-01 21:39:51 浏览: 13
在Go语言中,如果你想要使用Geth (Ethereum的官方客户端) 来获取区块链的当前时间(block.timestamp),你需要先安装并启动Geth服务,然后通过API来访问这个信息。以下是一个简单的示例,展示如何在Golang中连接到Geth并获取块的时间戳:
```go
package main
import (
"context"
"fmt"
"github.com/ethereum/go-ethereum/rpc"
"log"
)
func main() {
url := "http://localhost:8545" // 更改为你实际运行Geth的地址
client, err := rpc.DialHTTP(url)
if err != nil {
log.Fatal("Failed to connect to Geth:", err)
}
defer client.Close()
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) // 设置超时时间防止阻塞
defer cancel()
blockNumber, _, err := client ethclient.GetBlockByNumber(ctx, rpc.BlockNumberCurrent, nil)
if err != nil {
log.Fatal("Failed to fetch block number:", err)
}
block, err := client.Eth.GetBlockByNumber(ctx, blockNumber.String(), false)
if err != nil {
log.Fatal("Failed to fetch block:", err)
}
timestamp := block.Header.Timestamp.Unix()
fmt.Println("Block timestamp:", timestamp)
}
阅读全文