能否使用Infura为以太坊地址配置可读ENS域名?
实现方案
setup_address本质是发送ENS注册/配置的链上交易,Infura作为RPC节点仅负责广播交易和读取链上数据,不涉及私钥托管,所以原有逻辑90%可复用,仅需调整签名相关配置即可。
具体修改步骤
- 第一步:替换节点地址为Infura的对应网络HTTP链接,同时修正原代码的变量名笔误
from web3 import Web3 from ens import ENS from eth_account import Account # 替换为你的Infura对应网络节点链接 INFURA_URL = "https://mainnet.infura.io/v3/你的Infura项目ID" WEB3 = Web3(Web3.HTTPProvider(INFURA_URL)) NS = ENS.fromWeb3(WEB3)
- 第二步:配置本地签名逻辑,替换原自有节点的托管账户配置
原有自有节点可能默认使用节点端解锁的账户签名交易,Infura不持有用户私钥,需要在本地完成签名后再通过节点广播:
# 生产环境不要硬编码私钥,建议通过环境变量、密钥管理服务加载 OPERATOR_PRIVATE_KEY = "你的操作账户私钥" operator_account = Account.from_key(OPERATOR_PRIVATE_KEY) # 调用setup_address生成待签名交易 unsigned_tx = NS.setup_address( name="你的ENS域名.eth", address="要绑定的目标ETH地址", transact={ "from": operator_account.address, "gas": 200000, # 可根据实际链上情况调整 "gasPrice": WEB3.eth.gas_price } ) # 本地签名交易 signed_tx = WEB3.eth.account.sign_transaction(unsigned_tx, OPERATOR_PRIVATE_KEY) # 通过Infura节点广播签名后的交易 sent_tx = WEB3.eth.send_raw_transaction(signed_tx.rawTransaction) # 可选:等待交易上链确认 receipt = WEB3.eth.wait_for_transaction_receipt(sent_tx)
注意事项
- 仅支持已完成注册的ENS域名操作,未注册的域名需要先走官方注册流程再调用setup_address
- 确保操作账户持有足够的ETH支付链上gas费用
- 禁止在生产代码中明文存储私钥,避免资产被盗风险
内容的提问来源于stack exchange,提问作者Ernst
相关产品推荐
相关产品推荐

