什么是区块链地址?
区块链地址是区块链网络(以下简称“网络”)用来识别账户、收款目标,或表示资产使用条件的一串字符。它通常可以公开用于收款,但不是密码,也不是实际存放资产的容器。使用地址前仍需核对所属网络和地址类型。
不同网络对“地址”的定义并不完全相同。Ethereum 账户地址可以标识普通用户控制的账户或智能合约账户;Bitcoin 地址可以表示收款方将来使用这笔资产时需要满足的条件;XRP Ledger 地址用于标识账户,而部分转账还需要填写目标标签。因此,使用地址时必须同时确认所属网络、地址格式及所需的附加信息。
网络为什么需要地址?
公钥和支付条件等底层数据通常很长,也不方便直接用于日常收款。区块链地址把转账所需的信息整理成较容易复制和识别的标准格式。有些地址还包含用于识别网络或地址类型的信息,以及用于发现部分输入错误的校验信息。钱包和其他应用读取地址后,就能按照对应网络的规则构建转账。
不过,地址格式正确并不能证明它由谁控制。地址只告诉软件资产应该发送到哪里;如果地址控制者以后想转出资产,仍需使用私钥签名,或满足智能合约等规则规定的授权条件。
地址是怎样生成的?
不同网络生成地址的方式并不相同,但可以大致理解为三个步骤。
第一步:准备生成地址所需的信息
地址通常不是由用户随意输入的一串字符,而是由钱包或协议根据已有信息计算出来的。
- 对于由密钥控制的普通钱包,地址通常与一对公钥和私钥有关。私钥用于授权交易,公钥可以参与生成收款地址。
- 部分 Bitcoin 地址的生成还会用到支付条件。这些条件规定未来满足什么要求才能使用对应资产。
- 智能合约地址可能根据合约创建者、交易编号或其他部署信息生成。
这些信息是生成地址时使用的“原始材料”,但通常不会原样显示在最终地址中。
第二步:按照网络规则进行哈希或编码
网络会按照自己的规则处理第一步的信息。
哈希可以理解为生成数字指纹:算法把一段数据转换成长度固定的结果。即使原始数据很长,得到的哈希结果也可以保持固定长度;通常也不能仅凭哈希结果反推出原始数据。
编码则是把计算结果转换成由字母和数字组成的格式,方便钱包和其他应用读取、复制及传输。不同网络使用的哈希算法和编码规则可能不同,因此 Ethereum、Bitcoin 和 XRP Ledger 地址的长度与外观也不一样。
第三步:加入前缀、版本信息或校验和
部分地址格式还会加入额外信息:
- 前缀可以帮助软件识别地址类型。例如,部分 Bitcoin 地址以
bc1开头。 - 版本信息可以告诉软件应该按照哪套规则解释地址。
- 校验和用于发现部分输入或复制错误。如果地址中的字符被误改,钱包可能会提示格式无效。
校验和只能检查部分格式错误,不能证明地址属于谁,也不能保证用户选择了正确的转账网络。
以 Ethereum 地址为例
创建普通 Ethereum 钱包时,可以把地址生成过程简化理解为:
- 钱包生成私钥。
- 根据私钥计算出对应的公钥。
- 使用 Keccak-256 算法把公钥计算成一段固定长度的数据摘要。
- 取哈希结果的最后 20 字节,并在前面加上
0x,形成 Ethereum 地址。
一个缩短后的地址示例是:0x7A3f…9C21。这个示例只用于展示地址外观,不是可以用于转账的完整地址。完整 Ethereum 地址在 0x 后面包含 40 个十六进制字符。
私钥不会包含在地址中。用户可以公开地址用于收款,但必须妥善保管私钥。智能合约地址采用不同的生成规则,不能简单套用上述普通钱包地址的过程。
Bitcoin 和 XRP Ledger 使用不同规则。例如,Bech32 和 Bech32m 是两种 Bitcoin 地址编码格式,分别由比特币改进提案 BIP-173 与 BIP-350规定。部分 XRP Ledger 转账除了经典地址还需要目标标签;X-address 是把经典地址和目标标签组合在一起的另一种写法,但能否使用取决于钱包、交易平台或客户端库是否支持。
地址、公钥、私钥和钱包有什么区别?
| 名称 | 作用 |
|---|---|
| 地址 | 让软件识别账户、收款目标,或资产使用条件。 |
| 公钥 | 可以公开,用于验证签名;在部分设计中也参与生成地址。 |
| 私钥 | 必须保密,用于生成签名并授权交易。 |
| 钱包 | 帮助用户查看账户、管理地址,并可能保管或调用私钥的软件、硬件或服务。 |
地址和公钥不是同一个概念。地址可能根据公钥计算得出,也可能根据支付条件或合约部署信息生成。一个钱包可以管理多个地址;智能合约地址也可能由代码或多个签名方共同控制,而不是只对应一把私钥。收款地址通常可以分享,但私钥和恢复信息必须保密。
为什么格式正确的地址仍可能无法使用?
- 网络错误:地址外观相似并不代表属于同一网络,接收服务也可能不支持用户选择的网络。
- 地址类型不兼容:部分钱包或服务不支持所有地址格式。
- 遗漏 Memo 或目标标签:交易平台等服务可能让多个用户共用一个链上地址,再通过附加标识区分具体账户;XRP Ledger 的目标标签就是一例。
- 混淆合约和收款人:代币合约地址标识代币合约,并不自动等于用户收款地址。
- 无法确认控制权:语法有效、校验通过,都不能证明该地址确实由预期收款人控制。
链上转账一旦被网络确认,通常不能由发送方直接撤回。接收方是否愿意或能够退回资产,要看具体网络、服务和实际情况。钱包可以提前检查地址格式及网络兼容性,但无法只凭地址确认用户真正想把资产发送给谁。
地址复用与公开可见性
收款地址通常可以公开,但重复使用可能让他人看出多笔交易之间的关联。区块链账本上的交易记录通常可以公开查询;交易平台账户、公开资料等链外信息,还可能进一步把某个地址与个人或服务联系起来。部分 Bitcoin 钱包会为每次收款生成新地址,以减少直接复用。不过,交易仍可能暴露其他关联,因此使用新地址并不代表完全匿名。
常见问题
地址里面存放着币吗?
不是。资产余额或可使用的交易输出记录在区块链账本中,地址只是帮助钱包和网络找到相关记录。它本身不是存放资产的文件或容器。
知道地址就能签署交易吗?
不能。地址本身不提供转账权限。要转出资产,通常需要私钥签名,或满足账户、支付条件及智能合约规定的其他授权要求。
校验和有效就说明地址可以安全使用吗?
不能。校验和只能发现部分抄写错误,无法确认预期持有人、支持的网络、必需标签或应用兼容性。
相关词条与延伸阅读
继续了解公钥、私钥、加密钱包和Gas 费,或返回加密货币术语表。
如需了解实际操作,可阅读 OKX Learn 的如何查找钱包地址和什么是比特币地址。如需核对协议规则,可查看下方参考来源。
参考来源
- Ethereum:账户——EOA 与合约地址、公钥及账户类型。
- BIP-173——原生 SegWit v0 地址的 Bech32 编码。
- BIP-350——Bech32m 与见证版本兼容规则。
- EIP-55——以太坊地址混合大小写校验编码。
- XRPL:地址——经典地址、校验和、X-address 与目标标签。
- Bitcoin Developer Guide:钱包——钱包软件、密钥、脚本与地址复用。








