首页 > 链百科 > 从地址格式探讨Bitcoin和Ethereum的差异

从地址格式探讨Bitcoin和Ethereum的差异

2025-09-09 06:50:04

Bitcoin和Ethereum在许多方面有着截然不同的设计,这篇文章会从地址格式出发,比较两者在交易格式以及身份认定上的差异,透过这些差异了解两套系统在设计哲学上的不同之处。由于篇幅的关系,本文会略过一些较为基础的细节。

区块链上的地址

地址(Address) 是一个可以被某种交换网络系统辨识的资讯,透过这样的资讯使得网络中的个体可以顺利进行收发作业,比如说现实生活中的邮件地址,或是互联网中的IP address。同样的在blockchain 这样的分散式系统中,也需要一套地址格式,让虚拟货币或是抽象的状态可以在这样的网络中传递、转移。

Blockchain 基本上是透过非对称式密码学签章保护资产(或是状态) 的安全,也就是认私钥不认人,拥有私钥等于拥有对应地址下的资产。假设今天不使用现成的钱包solution,Bob 自己用电脑产生了一副key pair,那么他该如何在这两套blockchain 系统中,产生自己的地址,让Alice 可以发送资产给他呢?

Ethereum

以Ethereum 而言,所谓的地址(for External Owned Account — EOA) 其实就是public key 经过Keccak-256 hash 过后的部分值(truncate to 20 bytes),私钥跟地址之间存在着one-to-one 对应,这样的情况比较单纯和直觉,就像台湾的地址门牌一样,ㄧ个地址只对应到一户人家。

而由于Ethereum本身的设计就是所谓的account based system,因此交易格式中存在着from以及to的两个栏位,这意味着每一笔交易都有明确的收发对象,Alice若要将资产转移给Bob,只需分别将from及to填上Alice和Bob的地址,接着附上应有的签名,再将这些资讯送到区块链上做验证即可,可以想像成在信封上写上寄件者和收件者的地址,贴上邮票后,丢入邮筒。

Ethereum tx example from etherscan.io

Bitcoin

同样的场景转换到Bitcoin 时,事情就比较复杂了些。首先Bitcoin 本身是所谓的Unspent Transaction Output (UTXO) 系统,每一笔tx 可以包含数个input 以及output,没有一对一的from/to 关系,比较不精确的翻译就是一笔交易可以有多个sender/recipient ,而单一的from/to 是在account based 系统下才会强调的观念。

Bitcoin tx example from blockchair.com

每一个output 都会有一个所谓的locking script,目的在于限制这笔output 只能被指定的对象花用,也就是谁有能力解开这个锁,就有花用这笔资产的能力。一般这个locking script 的逻辑会是「拥有某把private key 的人可以花用这笔资产」,但事实上它可以实现多种逻辑,比如说「谁知道1+1的答案就可以花这笔资产」或是多签(Multisig),可以算是Ethereum smart contract 的前身。

Bitcoin locking script 具有逻辑多样性,也许是为了降低一般收发的复杂度,因此有了几种标准的locking script template,例如P2PKH, P2SH,而每种script template 所要填入的资讯不同,交易的发送方需要从收方取得特定的资讯才能正确将资产做转移,例如P2PKH 的locking script 需要填入public key hash,为了方便传递这些讯息,需要一套编码标准将这些资讯组合成一个地址。

Bitcoin 的地址是一串base58 encoded string (先不讨论Bech32),经过decode 后,可以得到两部分资讯

  • version (1 byte)
  • payload (20 bytes)

    version 代表着script type,payload 则是产生该种locking script 所需的资讯(例如public key hash for P2PKH)。说到这里,终于可以回到一开始的问题:Bob 要如何产生对应的Bitcoin address 给Alice?,首先他需要决定他想收到哪种script type 保护的output,接着将所需的资讯用base58 编码成地址发给Alice,Alice 收到地址后可以组出指定格式的locking script,再包装成合法的transaction 发出去。

    谈到产生地址的方法,就必须说明一个Bitcoin 不太一样的特性:同一副key pair 可以产生不同的Bitcoin address!换句话说,key pair 和Bitcoin address 两者之间并不是one-to-one 的对应的关系。就算先不考虑比较复杂的P2SH,以key compression 来看,同样的private key 就有两种public key 表示的方式了,也就有两种对应的P2PKH address,若再将P2SH 考虑进来,就有更多种可能,除此之外,Bitcoin 因为segwit 的关系又有新的地址格式(Bech32),光是最简单的单签,就可以有至少四种以上的地址。

    为什么会有这样的结果?其实是因为实际在Bitcoin 链上运作的是locking script,script 本身具有逻辑的多样性,可以想成一个方程式有多个解,而Bitcoin address 代表着某一种标准script,说穿了只是其中之一解而已。

    基于这样的特性,手上拥有一把private key 的Bob 其实在他产生私钥的当下,就等同于产生了四个以上的Bitcoin 地址,换言之,这些地址下的资产,都是属于他的,这个事实也引出了一个有趣的问题:如何辨别资产的所有权?

    资产所有权

    如果我们把资产所有权定义成「我有能力动用的资产」的话,那么除了一对多的地址以外,广义来说还可以把一些non-standard 的output 给囊括进来(前提是要知道如何unlock)

    私钥与地址的一对多关系

    而目前的explorer 和钱包几乎都是以address 来判断余额以及utxo 的,因此如果碰到non-standard output,你的钱包是无法判别它是属于你的资产,但实际上它是属于你的。也就是说,透过non-standard script 是有能力发送一般explorer/wallet 无法辨识地址的交易。若以上述的资产所有权定义出发,Bitcoin 根本没有一套标准的方式去计算属于一个使用者(private key owner) 的所有资产,我想这也强烈呼应着Bitcoin 的匿名特性,所谓的匿名不单只是address背后没有实名认证而已,Bitcoin 可以达到的匿名层级是根本无法判断交易的收发方。如果以account based 的角度去看这个特性的话,会认为帐本不accountable,没有办法判断收发方的话就无法记帐,但以scripting UTXO 的角度去看的话,这实在是再合理不过了,毕竟余额的概念就是连结着account。今天如果有一个人拿了Bob 的public key 写了一串non-standard locking script,只要他不告诉Bob,Bob 甚至不知道他可以使用这笔钱,这意味着可能连key owner 本身也无法确切知道他的实际资产总额是多少,此点不像account based 的系统,如果我不告知你而转了一百块给你,你会从你的帐户余额发现多了一百元。

    Bitcoin 其实是可以没有地址概念的,地址的出现让Bitcoin 可以做到类似accout based 系统的逻辑,方便一般使用者发送交易,却也让大家忽略UTXO 的潜力。事实上Ethereum 也可以用smart contract 达到类似的效果,增加匿名性,但毕竟他的底层还是以account 为单位,可以做到类似的逻辑,但隐私的层级还是有差异。

    范例

    我在Bitcoin mainnet用non-standard P2SH发了一笔交易,script逻辑是5 + 6 = 11,读者可以从explorer上查看这笔交易。

    redeem script is 5 + 6 = 11

    总结

    其实Bitcoin 这种UTXO 的系统,搭配script language 的交易逻辑是相对比较复杂的,只不过多数交易只限缩在使用standard script,而Ethereum 的底层是较为简单易懂的account based 系统,接近现有银行机制,复杂的逻辑可以透过smart contract 来实现,两者设计方向不同,有不同的适用场景,也许account based 的逻辑容易被大众接受和使用,而Bitcoin 是许多密码庞克心中一个经典的尝试。

    注:原则上目前miner 是不直接收含有non-standard script 的output,必须包装成P2SH 才可以被接受。

  • 声明:文章不代表链懂观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险自担!转载请注明出处!侵权必究!
    相关阅读相关阅读
    热门资讯热门资讯
    风险
    提示

    链懂数据及信息均来源公开资料,不构成任何推荐或投资建议。炒币属投资行为,市场有风险,投资需谨慎。

    闽ICP备2023001858号-1 站点地图
    Copyright ©2025 链懂.All Rights Reserved