风险提示:理性看待区块链,提高风险意识!
技术指南 | 以太坊钱包开发:钱包地址生成过程
首页 > 币界资讯 > 区块链新闻 2019-03-25 18:00:50
币界网报道:

课程目标

  1. 理解什么是隔离见证
  2. 交易地址类型
  3. 编程实践:生成隔离见证地址

大家可能会想,这个隔离见证对我们比特币钱包开发有什么影响呢?接下来你就知道了。

一、什么是隔离见证

隔离见证的英文叫做SegWit,是Segregated Witness的简称,隔离见证是对比特币提出的一种升级方案,用于解决比特币面临的一系列严重问题,由Pieter Wuille(比特币核心开发人员、Blockstream联合创始人)在2015年12月首次提出。主要由BIP-141定义。

我们可以这样来理解隔离见证:

见证:在比特币里指的是对交易合法性的验证,用于证明自己拥有某些交易的输出的见证数据。

隔离:就是把见证数据从交易信息里抽离出来,单独存放。

SegWit解决的问题

SegWit是由Bitcoin Core的拟议更新,Bitcoin Core是当前最受欢迎的比特币标准客户端,大多数企业使用。最初,该更新旨在解决交易的可扩展性,这也是比特币软件中众所周知的弱点。虽然这种攻击向量对用户来说并不是最具破坏性的,但目前为止已经在多个攻击案例中被利用,因此也就凸显了修补这一漏洞的必要性。

目前,比特币可扩展性问题主要源自区块容量不足,这里的问题就在于当前区块的硬编码限制为1兆字节,而这并不足以承担用户每分钟尝试发送的数百笔交易。因此,很多用户必须排队等候,直到他们的交易得到确认,这个等待的时间可能是几个小时,甚或是几天。随着网络规模的扩大,交易强度也随之增加,但区块容量限制则保持不变,这就意味着问题会不断恶化。

SegWit的解决方案由两部分组成的:

  • 第一,它可以立即将区块容量限制增加到4兆字节。这里就有一点需要注意:4 MB是绝对最大值,而实际区块容量将取决于网络条件。SegWit激活后,专家预测区块容量将在2到2.1兆的范围内。
  • 第二,解决交易的可扩展性,将大量交易移出区块链使用雷电网络(Lightning Network)进行快速处理,预计将大大增加网络容量。

Segwit的优点

  • 增加块可以执行的事务数。
  • 降低交易费用。
  • 减少每笔交易的规模。
  • 现在可以更快地确认交易,因为等待时间将减少。
  • 有助于比特币的可扩展性。
  • 由于每个区块的交易数量将增加,因此可能会增加矿工可能收取的总费用。
  • 消除交易延展性。
  • 有助于激活雷电协议。

二、交易地址类型

地址是使用Base58check格式化的20字节哈希值,去生成P2PKH或P2SH比特币地址。目前最常用的方式是用户交换支付信息。

普通的比特币交易地址有两种类型:

  • P2PKH(Pay-to-Public-Key-Hash):支付给公钥哈希。是最常用的模板,它被中本聪定义,允许简单的支付给一个单一的公钥。
  • P2SH(Pay-to-Script-Hash):支付到脚本,这是多重签名交易输出。在BIP16定义,它允许付款到任意复杂的脚本。

隔离见证为比特币建立了两种新的交易地址:

  • P2WPKH(Pay-to-Witness-Public-Key-Hash):支付到隔离见证公钥哈希,类似P2PKH,在BIP141新定义的。它嵌入在P2SH脚本中,所以它可以被不知道segwit的钱包使用。
  • P2WSH(Pay-to-Witness-Script-Hash):支付到多重签名隔离见证脚本哈希,类似P2SH,是BIP141定义的另一个新的脚本格式。它可以嵌入到P2SH脚本和地址中,使得任何钱包都可以进行与segwit兼容的支付。

隔离见证不会在整个网络中同时实施,为了新老客户可以共存,钱包开发人员将应独立升级钱包软件以添加隔离见证功能。都升级为segwit的钱包后,使用P2WPKH和P2WSH付款类型,传统的钱包使用P2PKH和P2SH付款类型。两种形式的见证脚本P2WPKH和P2WSH都可以嵌入到P2SH地址中,是以“3”开始的地址。P2PKH是以“1”开头的地址。

举个例子,假设有两个人:lixu、zhangsan,lixu的钱包没有升级到segwit,但是zhangsan的钱包已经升级,可以处理segwit交易。lixu和zhangsan都可以使用正常地址交易,但是zhangsan很可能会使用segwit来降低交易费用。在这种情况下,zhangsan的钱包就需要构建一个包含一个segwit脚本的P2SH地址。lixu的钱包认为这是一个正常的P2SH地址,并可以在没有任何segwit的知识的情况下付款。然后,zhangsan的钱包可以通过隔离交易来支付这笔款项,充分利用隔离交易并降低交易费用。

因此我们需要构建segwit地址兼容普通地址。

三、编程实践:生成隔离见证地址

代码

输出

7EBFC423-8E93-471E-B336-C2AF46969391

7EBFC423-8E93-471E-B336-C2AF46969391

验证

4C5D6822-8F20-49A9-BFCC-9D3CCB933A42

4C5D6822-8F20-49A9-BFCC-9D3CCB933A42

C78D7E3D-CF91-4874-9C0E-5141956BAFA7

C78D7E3D-CF91-4874-9C0E-5141956BAFA7

代码解析

这里只解getSegWitAddress方法的实现,其它代码解析请查看上一章“从生成助记词到扩展子地址”的内容。

这是将p2wpkh地址嵌套在p2sh地址中,作为它的redeem字段。同时需要注意,在两种地址类型中都需要指定网络类型。上面的代码是在比特币正式网络中运行的,即指定了

const myNetwork = bitcoin.networks.bitcoin

上一篇: 关于2019加密经济发展的60个趋势预测(上)
下一篇: 第一个长期支持版本,Hyperledger推出Fabric v1.4 LTS
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
比特币
60975.18 USDT
¥442,838.34
-1.09%
Solana
141.76 USDT
¥1,029.55
-3.96%
Curve
0.2922 USDT
¥2.12
+1.32%
Beta Finance
0.079695 USDT
¥0.58
-16.02%
Filecoin
4.496 USDT
¥32.65
+0.32%
狗狗币
0.1248 USDT
¥0.91
+0.97%
柚子
0.5934 USDT
¥4.31
+1.8%
Conflux
0.1668 USDT
¥1.21
-0.54%
Shiba Inu
1.711E-5 USDT
¥0.00
-1.84%
Terra Classic
8.32E-5 USDT
¥0.00
+0.34%
dYdX
1.4071 USDT
¥10.22
+0.19%
波场
0.1233 USDT
¥0.90
+0.82%
最新快讯
更多
Coinbase报告:由于多重催化剂,Solana本周表现优于其余主要加密货币
2024-06-28 23:53:58
BitwiseCIO:加密市场面临短期逆风因素的打压,但存在多个长期且巨大的顺风因素
2024-06-28 23:47:52
2024上半年SolanaTPS均值约为2200
2024-06-28 23:38:46
某MEV机器人在单笔交易中花费49枚ETH交易费
2024-06-28 23:36:26
Bitfinex:美国总统选举辩论后比特币表现出不确定性和波动性
2024-06-28 23:35:26
币界网最新行情晚报:BCH比特现金价格达390.6美元/枚,日内跌幅-3.00%
2024-06-28 23:34:01
分析:通胀降温和股市上涨导致比特币价格停滞
2024-06-28 23:33:35
下载币界网APP