密钥和地址
以太坊的基础技术之一是 密码学 cryptography,它是数学的一个分支,广泛用于计算机安全。密码学在希腊文中的意思是“秘密写作”,但密码学的科学不仅仅包含秘密协作,它被称为加密。加密也可以用来证明秘密的知识而不泄露该秘密(数字签名),或者证明数据的真实性(数字指纹)。这些类型的密码学证明是以太坊和大多数区块链系统的关键数学工具,广泛用于以太坊应用。讽刺的是,加密并不是以太坊的重要组成部分,因为它的通信和交易数据没有加密,也不需要加密以保护系统。在本章中,我们将以密钥和地址的形式介绍一些以太坊用来控制资金所有权的密码学。
简介
以太坊有两种不同类型的账户,可以拥有和控制ether:外部所有账户(EOA)和_合同_。在本节中,我们将研究使用密码学来确定外部所有账户(即私人密钥)对ether的所有权。
EOAs中以太的所有权通过 数字密钥 digital keys,以太坊地址_和_数字签名 建立 。数字密钥实际上并不存储在区块链中或在以太坊网络上传输,而是由用户创建并存储在文件或称为_钱包_的简单数据库中。用户钱包中的数字密钥完全独立于以太坊协议,可以由用户的钱包软件生成和管理,无需参考区块链或访问互联网。数字密钥可实现以太坊的许多有趣特性,包括去中心化的信任和控制以及所有权证明。
以太坊交易需要将有效的数字签名包含在区块链中,该签名只能使用密钥生成;因此,任何拥有该密钥副本的人都可以控制ether。以太坊交易中的数字签名证明了资金的真正所有者。
数字密钥成对组成,密钥和公钥。将公钥视为类似于银行帐号,私钥类似于私密PIN,用于控制帐户。以太坊的用户很少看到这些数字密钥。在大多数情况下,它们存储在钱包文件内并由以太坊钱包软件管理。
在以太坊交易的付款部分中,预期收款人由_以太坊地址_表示,该地址与支票上的收款人名称相同(即“付款给谁”)。在大多数情况下,以太坊地址是从公钥生成并对应的。但是,并非所有以太坊地址都代表公钥。他们也可以代表合同,我们将在 [contracts] 中看到。以太坊地址是用户常会看到的唯一密钥表示,因为这是他们需要与世界分享的部分。
首先,我们将介绍密码学并解释以太坊使用的数学。接下来,我们将看看密钥是如何生成,存储和管理的。最后,我们将回顾用于表示私钥和公钥以及地址的各种编码格式。