相信很多人都因此产生疑问,这么长又这么复杂的地址真的有必要吗?
修改地址格式
这个对于大多数比特币爱好者来说非常熟悉的地址格式问题正在面临挑战,即一个更加简单的方案:可读地址。
科技公司IOV推出了一个区块链命名服务,用户可以通过输入公钥来注册一个可读地址。举个例子:
将地址1Afh17fvY9Co2kja9fl24DbFX57j803gw5转变为john*iov.value
该公司认为这类新地址更短,而且方便非技术人员管理,因为这看起来更像是邮箱地址。该公司CTO表示:
加密货币实现大规模普及的主要问题之一就在于发送交易的困难。对于真正的终端用户来说,区块链平台并没有解决用户体验问题,尤其是钱包地址。
什么是区块链地址?
在比特币诞生早期,你可以通过类似104.25.248.32 这样的IP地址发送交易。这种方法很方便,省去了公钥和地址的处理过程。不久之后,比特币开发者就意识到这种交易发送方式很可能遭到严重的中间人攻击(MITM)[1],因此他们决定弃用这种方法。
这件比特币轶事现在看来很有历史价值,同时还说明了地址的意义:这不是一个非常特殊的东西,也不会一成不变。它是一种收发区块链交易所需用到的字符,就像SWIFT地址一样。
然而,SWIFT地址是由银行等中央机构分配的,但区块链地址是真实存在的。每个区块链地址可能在钱包找到它之前就已经存在,因为区块链地址是数学运算产生的结果。
公钥:区块链地址开始的地方
比特币禁用Pay to IP的方法之后,P2PKH就成了比特币地址的新标准。比特币地址通常都是这样的:
1K31KZXjcochXpRhjH9g5MxFFTHPi2zEXb
一个标准的P2PKH地址由34个字符组成,并且是1开头的。P2PKH的全称是“Pay To Public Key Hash”,这就意味着你是“支付给公钥的哈希”。对于初学者来说,这听起来似乎非常复杂,那么我们就从构建区块链地址开始说起。
每个钱包软件都可以创建一个P2PKH地址,或者说你想要多少地址都可以。这不是什么复杂的事,只是一些随机字符的组合。
首先,你的钱包会通过收集熵来生成一个ECDSA私钥。ECDSA是比特币地址所需的核心加密算法。这是一种非对称签名算法,即你可以用私钥对信息进行签名,然后用公钥验证签名的真实性。通过ECDSA你可以证明你——只有你才是某一信息的发送者。就跟在一封信上签了名一样。
私钥创建完毕之后,钱包就会通过私钥来生成公钥。整个过程就是在特定的椭圆曲线上进行一些运算来选取随机坐标。公钥是用于发送和收集交易的关键。在比特币诞生早期,公钥甚至能够用来接收资金。
而现在公钥不仅仅非常长也很不方便(由65个字符组成),而且可能出现输入错误的情况。另外,一旦ECDSA出错,暴露公钥也会带来一定的风险,量子计算就是最好的例子。这就是比特币开发者坚持通过公钥生成地址的原因。
简化地址是否可行?
由于现有比特币地址不具备特定规律,同时字符数较多,人们很难记住这些地址。因此,也有人抱怨这类地址格式影响了用户体验。
然而,前文中提到的方法将比特币地址简化成与邮箱类似的地址,虽然方便记忆,但对安全方面的考虑则有所欠缺。
首先,比特币地址不是凭空出现的,是通过公钥生成的,同时还要保证不会出现重复使用的情况,因此需要经过大量的运算。当前我们收发交易都是直接复制地址,以确保不会出错,一旦地址被简化,一定有人会选择手动输入地址,谁都不能保证不会出错。众所周知,区块链由于其去中心化和不可更改性,就算交易出错,也没有银行这样的中间机构帮你找回资金。
另外,比特币地址实际上是会发生改变的,每次收发交易时,用户使用的都是不同的地址,以此来确保交易的安全。在区块链网络中,安全是不可忽视的一环。