好好学习,天天向上

  • 后端开发
    • Rust
  • 区块链
    • BTC
    • Layer2
  • 经济投资
  • 文学创作
    • 哲学思考
    • 随笔
HhxxTtxs
人生到处知何似,应似飞鸿踏雪泥。
  1. 首页
  2. 区块链
  3. BTC
  4. 正文

BTC隔离见证SegWit

5 4 月, 2024 282点热度 0人点赞 0条评论

btc隔离见证升级又称 SegWit 升级,是将btc交易信息中的见证(witness)字段从交易信息中“挪出”,变相增加了一个区块可以包含的交易数量,提升btc的tps,同时解决了交易延展性的问题。

内容 隐藏
1 升级之前的交易
2 升级之后的交易
3 交易延展性问题
4 总结

升级之前的交易

在SegWit升级之前,btc的一个交易信息(P2PKH类型)如下所示:

{
  "txid": "b3ef9f3fc2f8536fd6b81c33f7be88f74029a172d6d0f3c252e5d44d71e6ed57",
  "size": 1373,
  "version": 1,
  "locktime": 0,
  "fee": 20000,
  "inputs": [
    {
      "coinbase": false,
      "txid": "ce3fadb648c069532365957e17fc455e2a0a3986ab15eb40fcda244989e880a9",
      "output": 14,
      "sigscript": "4730440220576385dd30b450b85fd8b4df1048ff9f24372ecaa4be92bf67f79306fa2c26270220055df2fde396599dc307d04cd3b58ab69181f82f239c71a945e3632e8f4622e301210296f1ff9d1d6e54eec5011435930fe63e524bd65ec57a1cd812d8715ef890a3e8",
      "sequence": 4294967295,
      "pkscript": "76a9141922d15c6aed5b4cdfb32fd5c190c981ccd7bc2588ac",
      "value": 10171507,
      "address": "13HubyquwtAUqfgbSLrVLNpH65QYeFPxxR",
      "witness": []
    },
    {
      "coinbase": false,
      "txid": "2cff6f77f066f1f4c0ed26761bbf0be32d75c10d7a906887d66663a8ba2b6865",
      "output": 0,
      "sigscript": "483045022100fbe659c62c8a37a6cdb6754f6b12f384b31c76abb2e3877dda30234b6e9597b7022052c5c3bcc4a7ab4eb868070ce237a3dbc1f3be7e1f241134095dbc65b04cd7c401210296f1ff9d1d6e54eec5011435930fe63e524bd65ec57a1cd812d8715ef890a3e8",
      "sequence": 4294967295,
      "pkscript": "76a9141922d15c6aed5b4cdfb32fd5c190c981ccd7bc2588ac",
      "value": 137642,
      "address": "13HubyquwtAUqfgbSLrVLNpH65QYeFPxxR",
      "witness": []
    },
    ......
  ],
  "outputs": [
    {
      "address": "1LsT9ohtgSdnRKACGFvbNfpxdG8WEsKZbF",
      "pkscript": "76a914d9f504b6f7c51553de900ecd40c84faeeb446e4388ac",
      "value": 162501596,
      "spent": false,
      "spender": null
    }
  ],
  "block": {
    "height": 333333,
    "position": 1
  },
  "deleted": false,
  "time": 1417999679,
  "rbf": false,
  "weight": 5492
}

交易数据获取来源

在以上的交易信息中,inputs字段包含了多个待花费的UTXO。每一个UTXO对应的都有一个pkscript加密脚本、一个sigscript解密脚本。加密脚本用来“锁住”对应的UTXO,而解密脚本则是用来解锁使用对应的UTXO。SegWit的重点就是将sigscript解密脚本放在一个新的字段witness中。

升级之后的交易

在SegWit升级之后的交易变成了下面这样:

{
  "txid": "c2f59c6fc8e812f5f1f00c8a0a9ab1929c1e796788c57f49001b8006a824ea17",
  "size": 205,
  "version": 2,
  "locktime": 0,
  "fee": 155500,
  "inputs": [
    {
      "coinbase": false,
      "txid": "c3e417e84950e955b523d02be6805955db547d1da6b49094d8357cc236bc5a50",
      "output": 1,
      "sigscript": "",
      "sequence": 4294967295,
      "pkscript": "5120de29b8c4065d2964457ca60860c5e69c19dd6b0108ca0b5383155966b1585f3b",
      "value": 3659879,
      "address": "bc1pmc5m33qxt55kg3tu5cyxp30xnsva66cppr9qk5urz4vkdv2ctuasy200qx",
      "witness": [
        "4654e1fa7622c41e4ca462a1d51f42dc34a987f2610dd6d163ffe98f85982e95e8c9468bad9f01f4b5544cc3504af747907ef687ab14cf12694fbcd14195040a"
      ]
    }
  ],
  "outputs": [
    {
      "address": "bc1p9zujs6f5sndugh6eufu5saynzmmwwwxnfusdytacj0e3enxsraaq03e430",
      "pkscript": "512028b928693484dbc45f59e27948749316f6e738d34f20d22fb893f31cccd01f7a",
      "value": 197000,
      "spent": true,
      "spender": {
        "txid": "965f866bf8623bbf956c1b2aeec1efc1ad162fd428ab7fb89f128a0754ebbc32",
        "input": 0
      }
    },
    {
      "address": "bc1pmc5m33qxt55kg3tu5cyxp30xnsva66cppr9qk5urz4vkdv2ctuasy200qx",
      "pkscript": "5120de29b8c4065d2964457ca60860c5e69c19dd6b0108ca0b5383155966b1585f3b",
      "value": 3307379,
      "spent": true,
      "spender": {
        "txid": "c2d6f84b13058b75a0cb02a748906e88f68b7cc2aa7991a6cb3cf0c264533d18",
        "input": 0
      }
    }
  ],
  "block": {
    "height": 800000,
    "position": 2
  },
  "deleted": false,
  "time": 1690168381,
  "rbf": false,
  "weight": 616
}

交易数据获取来源

可以看到在inputs数组项中sigscript变为空了,而新增了新的字段witness字段用来存储sigscript解密脚本。

除此外,BTC在SegWit升级之前做区块大小校验时,将区块大小限定在1M。SegWit升级之后区块大小限制的计算方式变成了这样:4*tx_size+witness_size < 4M ,这就变相的增加了一个区块可存储的交易数量,提升了btc的TPS。轻客户端在同步数据时,可不同步witness字段,减少其存储压力。

这里需要注意的是,SegWit 升级并不是减少了数据的存储,而是增加了区块的限制大小,同时可以减少轻客户端同步数据时的存储压力。

交易延展性问题

那SegWit如何解决交易延展性的问题?SegWit升级之前,交易IDtxid是通过计算交易信息哈希得出的,如果一笔交易发出后,但还被矿工打包前。可以通过修改解密脚本sigscript数据(里面可以加一些无关紧要的操作码),这样交易数据就发生了改变,同样的交易IDtxid也就发生了改变。同一笔交易但是却产生了不同的交易ID。在SegWit升级之后,witness字段(可以理解为就是上面的sigscript)不再计入txid的数据当中,那么就不会产生一个相同交易却可以出现两个不同交易ID的情况。

总结

2017 年8 月24 日,在区块高度 481824 处,SegWit 升级激活(软分叉)。虽然也遭遇到了矿工的反对,但最终取得了成功(可参见这篇文章),而 SegWit 的升级也为之后btc生态的发展,例如:铭文,闪电网络等提供了趁手的工具。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 加密货币 区块链 比特币
最后更新:5 4 月, 2024

hhxxttxs

五年服务端开发,现专职区块链,偏零知识Layer2工程方向

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Archives

  • 2026 年 2 月
  • 2025 年 9 月
  • 2025 年 8 月
  • 2025 年 7 月
  • 2025 年 1 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月

Categories

  • BTC
  • cuda
  • L2
  • rust
  • 其他
  • 区块链
  • 后端开发
  • 哲学思考
  • 文学创作
  • 算法
  • 经济投资
  • 链开发
  • 零知识

COPYRIGHT © 2024 好好学习,天天向上. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang