文章
技术

什么是加密货币、地址和钱包

thphd  ·  2021年2月14日 2047前站长

加密货币通过把转账记录保存在区块链上,来确定每个账户中的余额。

例如:

...

区块链 高度114514
小明(账户8964) 转账 10元 给 小红(账户2047)

区块链 高度114515
小红(账户2047)转账 6元 给 小刚(账户2077)

...

根据上面的转账记录,我们就可以知道小红的账户中还剩4元。

所谓转账,就是由用户向区块链添加转账记录。

假如小红要添加一笔转账记录,她首先要证明自己是账户2047的所有者。于是她用自己的私钥,对她提交的转账记录进行签名。如果你想了解公钥、私钥、签名等技术,请阅读https://2047.name/t/7506

小红的账户地址(在这个例子中是2047),就是她账户的公钥。其他人可以用这个公钥,来验证小红提交的转账记录上利用私钥生成的签名。由于只有小红拥有账户的私钥,所以别人可以通过验证签名,来确定这条转账记录确实是小红提交的,并答应将其加入区块链中。

由于验证身份的过程不可避免的会用到公钥密码学(数字签名及其验证是公钥密码学的主要应用之一),这一类数字货币(例如比特币、莱特币、以太币等等)被统称为密码学货币(crypto-currency),也就是所谓的加密货币。


在提交转账记录的过程中,小红需要指定小刚(收款方)的地址,以及小刚的公钥。事后小刚可以用他的私钥来向其他人证明他拥有这笔款项。所以为了方便,绝大多数加密货币的账户地址就是账户的公钥,转账到一个地址等于转账到一个公钥。

因此区块链上的记录看上去更像是:

...

区块链 高度114514
账户8964 转账 10元 给 账户2047

区块链 高度114515
账户2047 转账 6元 给 账户2077

...

根据所使用的密码学算法的不同,公钥的长度也不同,这就是为什么加密货币的地址长度各不相同。


小红的公钥(即账户名称兼收款地址)是公开的,私钥是只有自己知道的。如果遗失私钥,就无法动用公钥(即账户地址)下的所有款项,因此私钥必须保存好。而用于保管私钥的工具,就被称为(加密货币的)钱包。

钱包分硬件钱包和软件钱包。将私钥写在一张白纸上,构成最简单的硬件钱包。

软件钱包,通常是指一些运行在Windows/OSX/Linux/Android/iOS/Chrome/Firefox上的应用程序,它们除了保管私钥,通常还会提供一些额外功能,例如签名、余额查询和转账。

硬件钱包,通常是指把上述功能做到一个外置的设备里(比如一个U盘形状的USB设备),由于私钥不需要被复制到计算机上,所以很难被攻击者盗取,也不会因为误操作被上传到网络上,适合对资金安全性有极高要求的用户。

如果软件和硬件钱包损坏,私钥就会丢失,造成资产损失。因此将私钥写在白纸上是一道很重要的保险。为了便于记忆,很多加密货币钱包软件,都能够将私钥转换为若干个英文单词组成的列表,用户如果丢失私钥,可以将这些英文单词输入到加密货币钱包软件中,来恢复自己的私钥。

菜单