文/AlexR.Mead&KyleWaters,CoinMetrics加密分析师;译/金色财经xiaozou
1、前言
我们将推出名为“Foundations”的新系列。这个新系列将以浅显易懂的方式介绍区块链技术的各“技术”维度。本文,我们会从地址概念出发。首先我们将进行地址的基本介绍,然后深入研究以太坊和比特币地址的详细内容。公钥--私钥、EOA、智能合约,以及“notyourkeys,notyourcrypto”都将在本文得到详尽解释。像往常一样,我们将使用链上数据来突出关键概念,并提供重要背景帮助你更好理解。
2、加密货币地址
地址的概念可能是加密货币世界最基本的概念。不管是哪个区块链,地址都是区块链上的“身份”单位,所有的交互都以地址开始,以地址结束。无论是执行简单的转账还是使用DeFi协议进行复杂的交易,地址都是至关重要的。虽然不同链之间的地址存在着细微差异,但它们都可以用于链上资产唯一标识和分组。
接下来,我们将详细讨论以太坊地址。以太坊地址有哪些不同的类型,它们是如何生成的,如何使用的。然后我们将阐述比特币地址和比特币网络上最重要的四种地址类型。
但首先要搞清楚,“拥有”地址的是谁?
我们先来澄清一些模糊的认知:单个地址并不一定意味着单个用户。一个地址背后可能有一群人,一个人也可能有多个地址。一个地址甚至可以是一个智能合约,不被任何单个用户“拥有”。然而,地址是区块链中身份的原子单位,与地址所有者或操作者无关。但我们很快就会知道,真正的所有权属于地址私钥的管理者。
金色财经挖矿数据播报:BTC今日全网算力下降1.72%:金色财经报道,据蜘蛛矿池数据显示:
BTC全网算力151.908EH/s,挖矿难度21.72T,目前区块高度673197,理论收益0.00000661/T/天。
ETH全网算力413.362TH/s,挖矿难度5269.68T,目前区块高度11975605,理论收益0.00542421/100MH/天。
BSV全网算力0.548EH/s,挖矿难度0.07T,目前区块高度677037,理论收益0.00164326/T/天。
BCH全网算力1.523EH/s,挖矿难度0.19,目前区块高度677365,理论收益0.00059084/T/天。[2021/3/5 18:17:37]
3、以太坊地址
以太坊地址是一个20字节的唯一序列,1字节为8bit,所以以太坊有28*20=2160种可能的地址。虽然地址长度只有20个字节,但以太坊的地址空间比IPv62128大得多,当然,“猜测”某个现有账户的私钥的成功概率是非常小的。通常,地址显示为以“0x”开头的字符串,后面是40个十六进制字符。在以太坊系统中,每个地址都对应着相关的原生加密货币余额。余额多少不等,从略高于0ETH到最大超过1900万ETH。然而,除了最大的地址余额之外,ETH分布在数百万个地址上,如下所示。在下图,我们可以看到,在总共1.2亿个ETH中,有近1亿个被余额至少为100ETH的地址所持有。
金色财经挖矿数据播报 | BCH今日全网算力下降2.71%:金色财经报道,据蜘蛛矿池数据显示:
BTC全网算力125.582EH/s,挖矿难度15.78T,目前区块高度638536,理论收益0.00000838/T/天。
ETH全网算力191.058TH/s,挖矿难度2391.14T,目前区块高度10428595,理论收益0.00870818/100MH/天。
BSV全网算力2.271EH/s,挖矿难度0.31T,目前区块高度643015,理论收益0.00039636/T/天。
BCH全网算力2.658EH/s,挖矿难度0.37T,目前区块高度643234,理论收益0.00033856/T/天。[2020/7/10]
以太坊地址有两类:外部拥有账户和智能合约账户。二者区别在于EOA关联私钥,而智能合约则关联合约代码。这意味着只有EOA可以签署交易并在以太坊系统内启动计算,而智能合约必须由源自EOA的交易“激活”。
例如,0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045是V神的已知个人EOA账户,而0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48是稳定币USDC的智能合约地址。对于像V神这样的EOA账户来说,私钥通常由商业化“钱包”管理,如MetaMask。但也可以使用其他方法进行管理,比如Python脚本或硬件钱包等。
以太坊地址从何而来?
外部拥有账户地址和智能合约地址都有不同的生成方式,涉及到一系列加密操作。事实上,这就是加密货币之所以叫做“加密货币”的一个关键原因。
金色财经挖矿数据播报 | ETH今日全网算力下降2.71%:金色财经报道,据蜘蛛矿池数据显示:
BTC全网算力117.566EH/s,挖矿难度15.78T,目前区块高度637262,理论收益0.00000845/T/天。
ETH全网算力184.763TH/s,挖矿难度2412.10T,目前区块高度10376965,理论收益0.00888795/100MH/天。
BSV全网算力1.792EH/s,挖矿难度0.27T,目前区块高度641848,理论收益0.00050230/T/天。
BCH全网算力2.861EH/s,挖矿难度0.41T,目前区块高度642075,理论收益0.00031454/T/天。[2020/7/2]
EOA地址
帐户生成过程首先是生成私钥,这是一组256bit的随机数。这组随机数必须保密,因为仅私钥自身就可以完全控制地址了。这个随机数就是“notyourkeys,notyourcrypto”这句话的根源。因为如果没有这组随机数,或者如果其他人得到了这组随机数,他们就可以访问你的地址,获取与你的地址绑定的身份信息,甚至窃取你留在那里的全部的钱和藏品。
接下来,私钥用于椭圆曲线数字签名算法的输入。顾名思义,该算法使用椭圆曲线生成另一组长度为512bit的数字,称为公钥。这两组数字统称为公钥/私钥对。
最后,使用Keccak256函数计算公钥的哈希值,产生另一个256bit序列。然后截取保留该序列的最后20字节或160bit,这就是以太坊使用的地址。下图图解了这个过程。
分析 | 金色盘面:ETH期货合约若获批将对价格走势影响巨大:芝加哥期权交易所向美国商品和期货交易委员会递交了给与推出ETH期货合约的申请。金色盘面分析师称,类比之前的BTC期货合约,在2016年11月芝加哥商品期货交易所联合总部位于伦敦的加密货币机构合作并基于其CME CF比特币参考汇率推出了BRR指数,当月COINBASE数字货币交易所BTC价格报收742.69美元,一年后,也就是2017年12月11日首个btc期货合约正式在芝加哥商品期货交易所上线。上市当日因为价格大涨,造成熔断,从而引发业内人士对于价格泡沫的担忧。当月COINBASE数字货币交易所BTC现货收盘价格为13863.13美元,当月触及BTC历史最高价19891.99美元。可以预见如果美国商品和期货交易委员会批准了ETH期货合约申请,意味着给与了ETH和BTC同等的市场地位,对于ETH未来价格走势影响巨大。[2018/8/31]
这个过程可以通过多种方式完成,但是,大多数用户选择广泛适用的“钱包软件”或开源软件来生成和管理他们的私钥。从技术上讲,除了生成和管理私钥和地址之外,EOA通常由一个人、一群人或具有关联私钥访问权限的专业保管人控制。该私钥用于签署交易,这是将ETH发送到另一个EOA账户或智能合约的关键步骤,私钥必须保密并进行高度安全的妥善保管。我们在下文讲到冷钱包时会进行更多相关探讨。
金色财经讯:韩国税务局局长韩升熙:韩国准备对比特币等加密货币进行征税。[2017/10/16]
智能合约地址
EOA是在以太坊上使用区块链的第一步,无论是在简单的转账交易中发送ETH,还是与智能合约进行交互。然而,EOA还执行一个特殊功能,那就是智能合约部署。在智能合约的部署过程中,产生了第二种以太坊地址类型。
该过程首先将一些编译后的EVM兼容字节码插入到一个交易中,该交易被发送到“特殊”部署地址0x0。然后,以太坊协议本身使用一种结合EOA部署公钥及其nonce的算法。
更具体地说,将地址和nonce连接起来,然后将递归长度前缀序列化。生成的字节序列再通过Keccak256计算得出哈希值,取最后的20个字节作为智能合约地址。
智能合约地址是非常重要的信息,因为它们是交易与合约交互的入口。例如,如果想要在UniswapV2上进行代币互换,那么工厂合约地址将非常重要,0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f。
量化以太坊地址
如上所述,以太坊有2160种可能的地址总数,下图显示了这些地址中目前链上所见数量。图中,地址按类型分组,显示了近1亿个EOA账户的ETH余额非零,智能合约账户超过3000万个。虽然这些都是相当大的数字,但与可能的总数相比,是微不足道的,这对以太坊用户来说是个好消息,可以放心,我们离耗尽地址还远着呢。
4、比特币地址
相较以太坊,比特币地址有更多的细节需要解决。首先来看地址类型,比特地地址类型其实主要有四种:Legacy、Pay-to-Script-Hash、Segwit和Taproot。尽管比特币使用不同的会计方法——未消费交易输出模型——来跟踪链上的加密货币,但我们将重点关注下面几种不同的地址类型。
Legacy地址
这些地址包括比特币系统原始部署中使用的地址,并且很容易识别,这些地址是以“1”开头的。它们的生成方式与以太坊地址的生成方式非常相似,从公钥/私钥对的生成开始。
然后像以太坊一样,计算公钥的哈希值,但使用的是SHA-256算法。所得的256bit序列随后使用RACE原始完整性校验消息摘要再次计算哈希值,得到20字节的序列。回过头看,这个过程与以太坊非常相似,但是,显示为文本形式时,比特币通常使用的是Base58CheckEncoding。这意味着20字节序列使用58个字符编码,而非十六进制编码中使用的16个字符。基本上,存储在计算机内存中的相同的160bit的0、1序列会通过一组16字符或58字符呈现到屏幕上。当然还有很多其他编码,但这是特别为比特币选择的编码。
Pay-to-Script-Hash地址
P2SH地址以“3”开头,从技术上来说属于脚本,可用于要求多重签名的转账事宜等。比特币的“Pay-to-Script-Hash”的真实性质超出了我们的探讨范围,但简单来说,P2SH地址是使用Base58Check对脚本代码哈希进行编码。因此,可以将P2SH地址概念化为脚本的20个字节哈希的编码,类似于公钥的20个字节哈希的编码。
SegWit和Taproot地址
为了提高区块空间的效率并改善费用,SegWit在地址的构造方式上引入了一些变化。具体的算法细节计较乏味,因此我们在这里跳过细节,但是人们可以轻松地一眼看到这些以“bc1”开头的新地址。除了SegWit之外,以“bc1p”开头的Taproot地址进一步提高了交易效率,并提供了更好的隐私性。
与以太坊类似,下图显示了按地址的总余额大小汇总的比特币总余额。与以太坊类似,绝大多数比特币由价值最高的那些地址持有。然而,仔细检查数据以更好地理解分布结构是非常重要的。
5、关于加密地址的更多内容
除了地址生成机制外,还有一些关于地址的其他概念我们应该理解,包括:热/冷钱包,以及VanityAddress和ENS。
热钱包和冷钱包
加密货币资产“存活”在区块链本身上,或被存储为原生第一层货币,或被存储于智能合约余额账本。区块链本身可以被视为存储在各自网络节点中的分布式数据库。这意味着用户并不托管加密货币,而是托管与各个区块链上各自地址关联的私钥。因此,真正的私有信息必须保证安全,因为这些私有信息就是与地址相对应的私钥。
在加密世界中,存储私钥的方法主要有两种:热钱包和冷钱包。二者很容易区别:热钱包是连接互联网的私钥存储系统,而冷钱包是没有连接互联网的系统。完全断开与互联网的连接使私钥得到更安全的保护。想要获取私钥,必须先获取冷钱包设备。总而言之,存储在钱包中的不是加密货币本身,而是与区块链上余额地址相关联的私钥。私钥管理越来越复杂,现在越来越流行一种数字资产安全方法,那就是多方计算,多方计算将私钥分解为加密共享数据分配给多个参与者。
VanityAddress和ENS
VanityAddress和其他地址一样,但是,该地址的某部分将超出意料中的随机性。前几个字符可能会拼出一个英文单词、短语或名称,比如Legacy比特币地址:1googLemzFVj8ALj6mfBsbifRoD4miY36v。这些地址可用于更轻松地识别交易对手方,并可用于品牌宣传和营销。这些地址的生成过程得到了几个开源项目的支持,例如Vanitygen。然而,应该注意的是,这个过程可能需要非常密集的计算资源,因为它需要一个“guess-and-check”类型的算法。谨慎的做法是,不要轻信在线工具去获取vanityaddress,因为它们也会获取你的私钥副本,正如那句话所说的,“Notyourkeys,notyourcrypto.”。事实上,去年在“Profanity”以太坊vanityaddress地址生成器中就有一个漏洞被利用了。
作为一个正式的系统,为了不必须生成容易记忆的vanityaddress,以太坊有一个叫做以太坊域名服务的应用程序,就像域名系统简化了传统互联网的访问一样。与URL非常相似,用户可以购买以“.eth”结尾的自定义名称,智能合约创建这些标签的记录,这些记录在链上公开可用。借用上文提到的V神的例子,我们可以看到他的ENS名称是vtalik.eth。ENS名称,就像URL一样,让以太坊区块链更加用户友好,因为字母数字组合比20字节序列更容易记住,这增强了网络的便利性和安全性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。