首页>行情>正文

使用Golang实现以太坊转账,从入门到实践

2026-08-10
OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载 官网注册

币安app

binance币安交易所app

币安交易所app是全球排名第一的虚拟货币交易所,注册领取盲盒礼包!

APP下载 官网注册

使用Golang实现以太坊转账,从入门到实践

使用Golang实现以太坊转账,从入门到实践

以太坊作为全球最大的智能合约平台,其转账功能(包括ETH转账和ERC-20代币转账)是区块链开发中最基础也最核心的操作之一,Golang凭借其高效的并发性能和简洁的语法,成为与以太坊交互的热门语言选择,本文将详细介绍如何使用Golang(结合go-ethereum库)实现以太坊转账,涵盖环境搭建、账户管理、交易构建、签名发送及错误处理等关键环节。

环境准备:搭建Golang以太坊开发环境

在开始编码前,需确保以下环境已配置完成:

安装Golang

从官网下载并安装适合操作系统的Golang版本(建议1.16+),配置GOPATH和GOROOT环境变量,验证安装:

go version

安装go-ethereum库

go-ethereum(简称geth)是以太坊的官方Golang实现,提供了丰富的API用于与以太坊网络交互,通过以下命令安装核心库:

go get -u github.com/ethereum/go-ethereum
go get -u github.com/ethereum/go-ethereum/crypto
go get -u github.com/ethereum/go-ethereum/common
go get -u github.com/ethereum/go-ethereum/common/hexutil
go get -u github.com/ethereum/go-ethereum/ethclient

准备以太坊节点

Golang需要通过以太坊节点与网络通信,可选择以下方式:

本文以Infura远程节点和Goerli测试网为例。

账户管理:生成与加载以太坊账户

以太坊转账本质上是发起一笔交易,需由账户私钥签名。go-ethereum的crypto包提供了账户生成和管理功能。

生成新账户

package main
import (
    "crypto/ecdsa"
    "fmt"
    "log"
    "github.com/ethereum/go-ethereum/crypto"
)
func main() {
    // 生成新的以太坊账户(私钥、公钥、地址)
    privateKey, err := crypto.GenerateKey()
    if err != nil {
        log.Fatalf("生成私钥失败: %v", err)
    }
    // 从私钥获取地址
    publicKey := privateKey.Public()
    publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey)
    if !ok {
        log.Fatalf("无法将公钥转换为ECDSA格式")
    }
    fromAddress := crypto.PubkeyToAddress(*publicKeyECDSA)
    fmt.Printf("私钥: %x\n", privateKey.D.Bytes())
    fmt.Printf("地址: %s\n", fromAddress.Hex())
}

运行后,会输出私钥(需妥善保存)和对应的以太坊地址。

从私钥加载账户

实际开发中,通常需要从已有私钥(如助记词导出的私钥)加载账户:

privateKey, err := crypto.HexToECDSA("私钥十六进制字符串")
if err != nil {
    log.Fatalf("加载私钥失败: %v", err)
}
fromAddress := crypto.PubkeyToAddress(privateKey.PublicKey)

ETH转账:构建、签名与发送交易

ETH转账是最基础的以太坊操作,核心步骤包括:获取nonce、估算gas、构建交易、签名并发送。

连接以太坊节点

使用ethclient连接到以太坊节点(此处以Infura的Goerli测试网为例):

client, err := ethclient.Dial("https://goerli.infura.io/v3/YOUR_INFURA_PROJECT_ID")
if err != nil {
    log.Fatalf("连接节点失败: %v", err)
}
defer client.Close()

YOUR_INFURA_PROJECT_ID需替换为Infura项目的实际ID。

获取账户nonce

Nonce是账户发起的交易计数,必须按顺序递增,否则交易会被拒绝:

nonce, err := client.PendingNonceAt(context.Background(), fromAddress)
if err != nil {
    log.Fatalf("获取nonce失败: %v", err)
}
fmt.Printf("Nonce: %d\n", nonce)

估算gas费用

Gas是交易执行的计算资源消耗,需预估gas limit(最大gas消耗量)和gas price(单位gas价格):

// 估算gas limit(通常转账ETH固定为21000)
gasLimit := uint64(21000)
// 获取当前建议的gas price(单位:wei)
gasPrice, err := client.SuggestGasPrice(context.Background())
if err != nil {
    log.Fatalf("获取gas price失败: %v", err)
}
fmt.Printf("Gas Price: %s Gwei\n", gasPrice.String()) // 转换为Gwei显示(1 Gwei = 1e9 wei)

构建交易

types.NewTransaction用于构建交易对象,需指定接收地址、转账金额、gas limit、gas price、nonce和链ID(防止交易重放攻击):

// 接收地址(替换为目标地址)
toAddress := common.HexToAddress("0x目标地址十六进制字符串")
// 转账金额(单位:wei,1 ETH = 1e18 wei)
amount := big.NewInt(1e18) // 1 ETH
// 链ID(Goerli测试网为5)
chainID := big.NewInt(5)
// 构建交易
tx := types.NewTransaction(nonce, toAddress, amount, gasLimit, gasPrice, nil)

签名交易

使用账户私钥对交易进行签名。types.NewTransaction构建的是未签名交易,需通过types.SignTx签名:

// 获取链ID(用于签名)
chainID := big.NewInt(5)
signedTx, err := types.SignTx(tx, types.HomesteadSigner{}, privateKey)
if err != nil {
    log.Fatalf("签名交易失败: %v", err)
}

发送交易

将签名后的交易发送到以太坊网络:

err = client.SendTransaction(context.Background(), signedTx)
if err != nil {
    log.Fatalf("发送交易失败: %v", err)
}
fmt.Printf("交易发送成功! Hash: %s\n", signedTx.Hash().Hex())

完整代码示例

package main
import (
    "context"
    "fmt"
    "log"
    "math/big"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/core/types"
    "github.com/ethereum/go-ethereum/crypto"
    "github.com/ethereum/go-ethereum/ethclient"
)
func main() {
    // 1. 加载私钥(此处需替换为实际私钥)
    privateKey, err := crypto.HexToECDSA("你的私钥十六进制字符串")
    if err != nil {
        log.Fatalf("加载私钥失败: %v", err)
    }
    fromAddress := crypto.PubkeyToAddress(privateKey.PublicKey)
    // 2. 连接以太坊节点(Goerli测试网)
    client, err := ethclient.Dial("https://goerli.infura.io/v3/YOUR_INFURA_PROJECT_ID")
    if err != nil {
        log.Fatalf("连接节点失败: %v", err)
    }
    defer client.Close()
    // 3. 获取nonce
    nonce, err := client.PendingNonceAt(context.Background(), fromAddress)
    if err != nil {
        log.Fatalf("获取nonce失败: %v", err)
    }
    // 4. 设置gas limit和gas price
    gasLimit := uint64(21000)
    gasPrice, err := client.SuggestGasPrice(context.Background())
    if err != nil {
        log.Fatalf("获取gas price失败: %v", err)
    }
    // 5. 设置接收地址和转账金额
    toAddress := common.HexToAddress("0x目标地址十六进制字符串")
    amount := big.NewInt(1e18) // 1 ETH
    // 6. 构建交易
    chainID := big.NewInt(5) // Goerli链ID
    tx := types.NewTransaction(nonce, toAddress, amount, gasLimit, gasPrice, nil)
    // 7. 签名交易
    signedTx, err := types.SignTx(tx, types.HomesteadSigner{}, privateKey)
    if err != nil {
        log.Fatalf("签名交易失败: %v", err)
    }
    // 8. 发送交易
    err = client.SendTransaction(context.Background(), signedTx)
    if err != nil {
        log.Fatalf("发送交易失败: %v", err)
    }
    fmt.Printf("交易发送成功!

OK交易所插针事件,市场公平性的警示灯

OK交易所插针事件,市场公平性的警示灯 在加密货币市场,“插针”一直是悬在投资者头顶的达摩克利斯之剑,而OK交易所作为全球头部交易平台,其多次发生的“插针”事件,不仅让散户投资者损失惨重,更将市场公平性与平台信任度问题推向风口浪尖。 所谓“插针”,通常指价格在极

以太坊储存币,Web3时代的数字基石与价值新载体

以太坊储存币,Web3时代的数字基石与价值新载体 在Web3浪潮席卷全球的今天,以太坊作为“世界计算机”的地位早已深入人心,但多数人关注的是其智能合约、DeFi或NFT生态,却忽略了支撑这一切的底层基础设施——以太坊储存币,它不仅是数据永存的技术载体,更是数字世界中“信任

苹果钱包生成器,p图2022苹果微信余额

一、苹果手机下载通话记录生成器苹果手机下载通话记录生成器的方法如下:在App Store中搜索“通话记录生成器”,找到对应的应用程序,点击“获取”按钮即可完成下载。拓展知识:iPhone是苹果公司(Apple Inc.)于2007年1月9日开始发售的搭载iOS操作系统的系列手机产品。截至2

2024年10月29日 SFP币今日行情走势¥5.01

1.SFP币价格:$0.71 2.2024年10月29日 SFP币今日行情走势5.01币价格:5.01 3.24H最高:5.03 4.24H成交额:3276.39万 5.最大发行量:5.0亿 6.24H换手:1.34% 7.24H最低:4.9 8.24H成交量:653.54万 9.当前发行量:5.0亿 10.24H波幅:2.71% 11.历史最高:29.78 12.最大市值:

欧亿一交一用什么交易所支付?合规安全是首要考量

欧亿一交一用什么交易所支付?合规安全是首要考量 在数字资产交易领域,“欧亿一交一”作为近期备受关注的交易模式,其支付渠道的选择直接关系到用户资金安全与交易合规性,当前,全球主流数字资产交易所普遍支持多种支付方式,但用户在选择时需结合平台资质、监管合规性及资金

比特儿数字交易所APP下载安装最新版本指南

比特儿数字交易所APP下载安装最新版本指南 在数字资产交易日益普及的今天,选择一个安全、高效、功能全面的交易所平台至关重要,比特儿数字交易所(Bter)作为老牌数字资产交易平台之一,凭借其丰富的币种支持、稳定的交易系统和专业的服务,吸引了众多投资者,本文将详细介绍

O意交易所,合约交易灵活进阶,解锁投资新高度

O意交易所,合约交易灵活进阶,解锁投资新高度 在数字资产投资的浪潮中,合约交易以其“双向获利”“杠杆效应”等特性,成为越来越多投资者追求高收益的重要工具,传统合约交易常因操作复杂、流动性不足、风控机制僵化等问题,让不少新手望而却步,也让进阶投资者难以施展策略

在苏州体验数字人民币一年,说说我踩过的坑和真实感受

去年搬到苏州工作,正好赶上数字人民币试点铺开。一开始我也觉得这玩意离生活挺远,后来发现楼下菜场、地铁、甚至小区门口卖糖炒栗子的都贴着支持数字人民币的牌子。用了一年多,今天不聊虚的,就说说一个普通上班族怎么把它用顺手。 **先搞明白一件事:它跟微信支付宝不冲突

从零开始,手把手教你建立自己的以太坊节点

从零开始,手把手教你建立自己的以太坊节点 在去中心化金融(DeFi)、NFT和Web3应用的浪潮中,以太坊作为全球最大的智能合约平台,其网络的健康与安全离不开无数节点的支撑,节点是以太坊网络的基础设施,它们存储、验证和传播交易与区块数据,确保了网络的去中心化、透明性和

2024年10月31日 RPL币今日行情走势¥77.25

1.RPL币价格:$10.87 2.2024年10月31日 RPL币今日行情走势77.25币价格:77.25 3.24H最高:79.03 4.24H成交额:4793.41万 5.最大发行量:2083.17万 6.24H换手:2.98% 7.24H最低:76.68 8.24H成交量:62.05万 9.当前发行量:2083.17万 10.24H波幅:3.06% 11.历史最高:439.92

XRP币,争议与机遇并存,投资价值几何?

XRP币,争议与机遇并存,投资价值几何? 在加密货币的浩瀚星海中,XRP(瑞波币)无疑是一个充满争议却又备受瞩目的存在,由Ripple Labs公司于2012年创建,XRP不仅是一种数字货币,更旨在成为一种全球支付解决方案,致力于实现快速、低成本的国际资金转移,围绕其投资价值的讨

XRP币种一个月价格走势分析,波动背后的市场逻辑与未来展望

XRP币种一个月价格走势分析,波动背后的市场逻辑与未来展望 在加密货币市场,XRP作为老牌主流币种之一,其价格波动始终是投资者关注的焦点,不少投资者会问:“XRP一个月内价格大概是多少?”加密货币价格受多重因素影响,短期波动难以精准预测,但通过梳理市场动态、技术面及

购省商城看广告领狗狗币,新型消费与数字奖励的融合探索

购省商城看广告领狗狗币,新型消费与数字奖励的融合探索 在数字经济快速发展的今天,“看广告领奖励”的模式早已不新鲜,但当这一模式与狗狗币(DOGE)这一热门加密货币结合,并嵌入购物平台“购省商城”时,便催生出一种新的消费与理财体验,购省商城以“边购物边赚币”为口

聊聊我接触pkin币这段时间的真实感受和踩过的坑

最近老刷到有人在问pkin币到底是个啥,能不能碰。说实话,我一开始也跟你一样,看着一堆术语头大。今天不整那些虚的,就说说我自己摸索下来的经验。 刚听说pkin币那会儿,我第一反应是“又来一个割韭菜的吧”。后来花时间翻了些资料,也进了几个社区潜水看大家聊,发现它其实

狗狗币一共多少个狗币?一文读懂它的供应量机制

狗狗币一共多少个狗币?一文读懂它的供应量机制 狗狗币(Dogecoin,简称DOGE)作为最早诞生的“模因币”,凭借其社区文化和“狗狗”IP风靡全球,许多新投资者会好奇:狗狗币一共有多少个?它和比特币一样“限量”吗?答案藏在它的诞生设计和后续升级中。 从“无限量”到“通胀

USDT交易所APP官方下载,畅享专业级数字资产交易服务,安全高效开启财富新篇章

USDT交易所APP官方下载,畅享专业级数字资产交易服务,安全高效开启财富新篇章 在数字经济浪潮席卷全球的今天,数字资产交易已成为投资者布局未来、实现财富增长的重要途径,作为稳定币领域的标杆,USDT(泰达币)以其与美元1:1锚定的特性,成为连接法币与加密世界的桥梁,为交

以太坊后端开发,构建去中心化应用的核心引擎

以太坊后端开发,构建去中心化应用的核心引擎 在区块链技术从概念走向落地的过程中,以太坊(Ethereum)作为全球最大的智能合约平台,为去中心化应用(DApps)的开发提供了基础设施,而以太坊后端开发,正是连接智能合约与用户、数据、外部世界的核心桥梁,它不仅负责处理区块

解锁欧洲经贸新机遇,欧一交一所平台地址全解析

解锁欧洲经贸新机遇,欧一交一所平台地址全解析 在全球经济一体化浪潮不断推进的今天,中国与欧洲之间的经贸合作与交流日益频繁且深入,为了更好地连接两大市场的资源,促进企业间的精准对接与高效合作,各类专业平台应运而生。“欧一交一所”便是这样一个备受关注的专注于欧

狗狗币涨到30美元可能吗?理性看待加密货币的神话与现实

狗狗币涨到30美元可能吗?理性看待加密货币的神话与现实 狗狗币(DOGE)作为最早诞生的“迷因币”,自2021年跟随马斯克等名人喊话掀起暴涨潮后,“涨到30美元”一直是社区热议的话题,但这一目标究竟是遥不可及的幻想,还是存在理论可能?我们需要从市场逻辑、基本面与外部环

以太坊域名为何值钱?解析数字身份新地皮的价值逻辑

以太坊域名为何值钱?解析数字身份新地皮的价值逻辑 当你在浏览器地址栏输入“alice.eth”而不是一串冗长的“0x742d35Cc6634C0532925a3b844Bc454e4438f44e”时,一场关于数字身份的革命正在悄然发生。.eth域名,作为以太坊生态中的“数字门牌号”,正从单纯的“网址”演变为集