摘要

这篇文章主要阐述用于bitcoin cash的地址格式。它是一种base32编码格式,使用BCH 代码作为校验和,可以直接用于链接或QR码。

这种格式重用了Bech32的工作,在某些方面类似,但在其他方面有所改进。

规范

新的bitcoin cash地址是由:

  1. 能够表示该地址有效的网络的前缀,一般为主网、测试网、回归测试网三种。
  2. 一个分隔符::
  3. 一个base32编码的payload,表示这个地址的目的地和包含的checksum(校验和)。

prefix

这个前缀标明了该address所属于的有效网络是哪一个,前缀的命名主要如下:

  • 主网:bitcoincash
  • 测试网:bchtest
  • 回归测试:bchreg

紧接着在前缀后面跟一个分隔符::

当用户在使用时,可以省略前缀,但这是校验和计算的一部分。校验和可确保不同网络上的地址相互之间不兼容,即使没有标明前缀也是如此。

payload

payload是base32编码的数据流:

  0 1 2 3 4 5 6 7
+0 q p z r y 9 x 8
+8 g f 2 t v d w 0
+16 s 3 j n 5 4 k h
+24 c e 6 m u a 7 l

payload由三个元素组成:

  1. 指示地址字节的版本类型。
  2. 一个hash值。
  3. 一个40字节的校验和。

Version byte

版本字节的 most signficant bit是保留的,必须为0。接下来的4位表示地址类型,3个最低有效位表示hash的大小。

Size bits Hash size in bits
0 160
1 192
2 224
3 256
4 320
5 384
6 448
7 512

在版本字段中,编码hash的大小可确保地址的长度是否正确。

Type bits Meaning Version byte value
0 P2KH 0
1 P2SH 8

随着新功能的添加,将添加更多类型。

Hash

hash含义取决于版本字段。它是表示数据的hash,即P2KH的pubkey hash和P2SH的reedemScript哈希。

Checksum

校验和是在GF(2 ^ 5)上定义的40比特BCH码。它可确保检测到地址中最多6到8个错误。结合长度检查,这可以非常有效地防止错误。

校验和根据以下代码计算:

uint64_t PolyMod(const data &v) {uint64_t c = 1;for (uint8_t d : v) {uint8_t c0 = c >> 35;c = ((c & 0x07ffffffff) << 5) ^ d;if (c0 & 0x01) c ^= 0x98f2bc8e61;if (c0 & 0x02) c ^= 0x79b76d99e2;if (c0 & 0x04) c ^= 0xf33e5fb3c4;if (c0 & 0x08) c ^= 0xae2eabe2a8;if (c0 & 0x10) c ^= 0x1e4f43e470;}return c ^ 1;
}

校验和是根据以下数据计算的(0-31范围内的整数列表):

  1. 前缀的每个字符的低5位。 - 例如“位...”变成2,9,20,......
  2. 分隔符为零(5个零位)
  3. payload由5位的块组成。如有必要,payload将以零位填充到右侧,以完成那些unfinished的块。
  4. 八个零作为校验和的“模板”。

PolyMod返回的40位数字被分成8个5位数字(msb优先)。然后根据base32字符表对payload和checksum进行编码。

要验证base32格式的地址,它将在冒号“:”中拆分为prefix和payload。 PolyMod功能的输入数据(整数列表)由以下部分组装而成:

  1. 前缀的每个字符的低5位。
  2. 分隔符为零(5个零位)。
  3. payload的每个base32字符映射到它的相应数字。如果PolyMod返回非零值,则地址被破坏。

以下地址可用作校验和计算的测试向量:

  • prefix:x64nx6hz
  • p:gpf8m4h7
  • bitcoincash:qpzry9x8gf2tvdw0s3jn54khce6mua7lcw20ayyn
  • bchtest:testnetaddress4d6njnut
  • bchreg:555555555555555555555555555555555555555555555udxmlmrz

注意:这些地址故意没有有效的payload。

Error correction

BCH码允许纠错。但是,强烈建议不要以自动方式进行纠错,因为如果做错了可能会导致资金无法恢复。然而,它可以用于暗示用户可能的错误。

Double prefix

在某些情况下,例如付款URL或QR码,地址目前以bitcoincash为前缀:在这些上下文中,地址不得重复添加前缀。

Examples of address translation

以下地址以旧格式和新格式给出。

Legacy CashAddr
1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a
1KXrWXciRDZUpQwQmuM1DbwsKDLYAYsVLR bitcoincash:qr95sy3j9xwd2ap32xkykttr4cvcu7as4y0qverfuy
16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r
3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq
3LDsS579y7sruadqu11beEJoTjdFiFCdX4 bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e
31nwvkZwyPdgzjBJZXfDmSWsC4ZLKpYyUw bitcoincash:pqq3728yw0y47sqn6l2na30mcw6zm78dzq5ucqzc37

Larger Test Vectors

该表定义了具有各种前缀的各种大小为160-512位的有效载荷的测试向量。这些测试向量不以传统地址格式给出,因为传统格式限于160比特的有效载荷。

Payload Size (bytes) Type CashAddr Payload (hex)
20 0 bitcoincash:qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg2 F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9
20 1 bchtest:pr6m7j9njldwwzlg9v7v53unlr4jkmx6eyvwc0uz5t F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9
20 0 pref:pr6m7j9njldwwzlg9v7v53unlr4jkmx6ey65nvtks5 F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9
20 15 prefix:0r6m7j9njldwwzlg9v7v53unlr4jkmx6ey3qnjwsrf F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9
24 0 bitcoincash:q9adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2ws4mr9g0 7ADBF6C17084BC86C1706827B41A56F5CA32865925E946EA
24 1 bchtest:p9adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2u94tsynr 7ADBF6C17084BC86C1706827B41A56F5CA32865925E946EA
24 0 pref:p9adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2khlwwk5v 7ADBF6C17084BC86C1706827B41A56F5CA32865925E946EA
24 15 prefix:09adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2p29kc2lp 7ADBF6C17084BC86C1706827B41A56F5CA32865925E946EA
28 0 bitcoincash:qgagf7w02x4wnz3mkwnchut2vxphjzccwxgjvvjmlsxqwkcw59jxxuz 3A84F9CF51AAE98A3BB3A78BF16A6183790B18719126325BFC0C075B
28 1 bchtest:pgagf7w02x4wnz3mkwnchut2vxphjzccwxgjvvjmlsxqwkcvs7md7wt 3A84F9CF51AAE98A3BB3A78BF16A6183790B18719126325BFC0C075B
28 0 pref:pgagf7w02x4wnz3mkwnchut2vxphjzccwxgjvvjmlsxqwkcrsr6gzkn 3A84F9CF51AAE98A3BB3A78BF16A6183790B18719126325BFC0C075B
28 15 prefix:0gagf7w02x4wnz3mkwnchut2vxphjzccwxgjvvjmlsxqwkc5djw8s9g 3A84F9CF51AAE98A3BB3A78BF16A6183790B18719126325BFC0C075B
32 0 bitcoincash:qvch8mmxy0rtfrlarg7ucrxxfzds5pamg73h7370aa87d80gyhqxq5nlegake 3173EF6623C6B48FFD1A3DCC0CC6489B0A07BB47A37F47CFEF4FE69DE825C060
32 1 bchtest:pvch8mmxy0rtfrlarg7ucrxxfzds5pamg73h7370aa87d80gyhqxq7fqng6m6 3173EF6623C6B48FFD1A3DCC0CC6489B0A07BB47A37F47CFEF4FE69DE825C060
32 0 pref:pvch8mmxy0rtfrlarg7ucrxxfzds5pamg73h7370aa87d80gyhqxq4k9m7qf9 3173EF6623C6B48FFD1A3DCC0CC6489B0A07BB47A37F47CFEF4FE69DE825C060
32 15 prefix:0vch8mmxy0rtfrlarg7ucrxxfzds5pamg73h7370aa87d80gyhqxqsh6jgp6w 3173EF6623C6B48FFD1A3DCC0CC6489B0A07BB47A37F47CFEF4FE69DE825C060
40 0 bitcoincash:qnq8zwpj8cq05n7pytfmskuk9r4gzzel8qtsvwz79zdskftrzxtar994cgutavfklv39gr3uvz C07138323E00FA4FC122D3B85B9628EA810B3F381706385E289B0B25631197D194B5C238BEB136FB
40 1 bchtest:pnq8zwpj8cq05n7pytfmskuk9r4gzzel8qtsvwz79zdskftrzxtar994cgutavfklvmgm6ynej C07138323E00FA4FC122D3B85B9628EA810B3F381706385E289B0B25631197D194B5C238BEB136FB
40 0 pref:pnq8zwpj8cq05n7pytfmskuk9r4gzzel8qtsvwz79zdskftrzxtar994cgutavfklv0vx5z0w3 C07138323E00FA4FC122D3B85B9628EA810B3F381706385E289B0B25631197D194B5C238BEB136FB
40 15 prefix:0nq8zwpj8cq05n7pytfmskuk9r4gzzel8qtsvwz79zdskftrzxtar994cgutavfklvwsvctzqy C07138323E00FA4FC122D3B85B9628EA810B3F381706385E289B0B25631197D194B5C238BEB136FB
48 0 bitcoincash:qh3krj5607v3qlqh5c3wq3lrw3wnuxw0sp8dv0zugrrt5a3kj6ucysfz8kxwv2k53krr7n933jfsunqex2w82sl E361CA9A7F99107C17A622E047E3745D3E19CF804ED63C5C40C6BA763696B98241223D8CE62AD48D863F4CB18C930E4C
48 1 bchtest:ph3krj5607v3qlqh5c3wq3lrw3wnuxw0sp8dv0zugrrt5a3kj6ucysfz8kxwv2k53krr7n933jfsunqnzf7mt6x E361CA9A7F99107C17A622E047E3745D3E19CF804ED63C5C40C6BA763696B98241223D8CE62AD48D863F4CB18C930E4C
48 0 pref:ph3krj5607v3qlqh5c3wq3lrw3wnuxw0sp8dv0zugrrt5a3kj6ucysfz8kxwv2k53krr7n933jfsunqjntdfcwg E361CA9A7F99107C17A622E047E3745D3E19CF804ED63C5C40C6BA763696B98241223D8CE62AD48D863F4CB18C930E4C
48 15 prefix:0h3krj5607v3qlqh5c3wq3lrw3wnuxw0sp8dv0zugrrt5a3kj6ucysfz8kxwv2k53krr7n933jfsunqakcssnmn E361CA9A7F99107C17A622E047E3745D3E19CF804ED63C5C40C6BA763696B98241223D8CE62AD48D863F4CB18C930E4C
56 0 bitcoincash:qmvl5lzvdm6km38lgga64ek5jhdl7e3aqd9895wu04fvhlnare5937w4ywkq57juxsrhvw8ym5d8qx7sz7zz0zvcypqscw8jd03f D9FA7C4C6EF56DC4FF423BAAE6D495DBFF663D034A72D1DC7D52CBFE7D1E6858F9D523AC0A7A5C34077638E4DD1A701BD017842789982041
56 1 bchtest:pmvl5lzvdm6km38lgga64ek5jhdl7e3aqd9895wu04fvhlnare5937w4ywkq57juxsrhvw8ym5d8qx7sz7zz0zvcypqs6kgdsg2g D9FA7C4C6EF56DC4FF423BAAE6D495DBFF663D034A72D1DC7D52CBFE7D1E6858F9D523AC0A7A5C34077638E4DD1A701BD017842789982041
56 0 pref:pmvl5lzvdm6km38lgga64ek5jhdl7e3aqd9895wu04fvhlnare5937w4ywkq57juxsrhvw8ym5d8qx7sz7zz0zvcypqsammyqffl D9FA7C4C6EF56DC4FF423BAAE6D495DBFF663D034A72D1DC7D52CBFE7D1E6858F9D523AC0A7A5C34077638E4DD1A701BD017842789982041
56 15 prefix:0mvl5lzvdm6km38lgga64ek5jhdl7e3aqd9895wu04fvhlnare5937w4ywkq57juxsrhvw8ym5d8qx7sz7zz0zvcypqsgjrqpnw8 D9FA7C4C6EF56DC4FF423BAAE6D495DBFF663D034A72D1DC7D52CBFE7D1E6858F9D523AC0A7A5C34077638E4DD1A701BD017842789982041
64 0 bitcoincash:qlg0x333p4238k0qrc5ej7rzfw5g8e4a4r6vvzyrcy8j3s5k0en7calvclhw46hudk5flttj6ydvjc0pv3nchp52amk97tqa5zygg96mtky5sv5w D0F346310D5513D9E01E299978624BA883E6BDA8F4C60883C10F28C2967E67EC77ECC7EEEAEAFC6DA89FAD72D11AC961E164678B868AEEEC5F2C1DA08884175B
64 1 bchtest:plg0x333p4238k0qrc5ej7rzfw5g8e4a4r6vvzyrcy8j3s5k0en7calvclhw46hudk5flttj6ydvjc0pv3nchp52amk97tqa5zygg96mc773cwez D0F346310D5513D9E01E299978624BA883E6BDA8F4C60883C10F28C2967E67EC77ECC7EEEAEAFC6DA89FAD72D11AC961E164678B868AEEEC5F2C1DA08884175B
64 0 pref:plg0x333p4238k0qrc5ej7rzfw5g8e4a4r6vvzyrcy8j3s5k0en7calvclhw46hudk5flttj6ydvjc0pv3nchp52amk97tqa5zygg96mg7pj3lh8 D0F346310D5513D9E01E299978624BA883E6BDA8F4C60883C10F28C2967E67EC77ECC7EEEAEAFC6DA89FAD72D11AC961E164678B868AEEEC5F2C1DA08884175B
64 15 prefix:0lg0x333p4238k0qrc5ej7rzfw5g8e4a4r6vvzyrcy8j3s5k0en7calvclhw46hudk5flttj6ydvjc0pv3nchp52amk97tqa5zygg96ms92w6845 D0F346310D5513D9E01E299978624BA883E6BDA8F4C60883C10F28C2967E67EC77ECC7EEEAEAFC6DA89FAD72D11AC961E164678B868AEEEC5F2C1DA08884175B

bitcoin cash的地址格式 cash addr 简介相关推荐

  1. 比特币创世文 Bitcoin: A Peer-to-Peer Electronic Cash System 解读

    比特币创世文 Bitcoin: A Peer-to-Peer Electronic Cash System 解读 一夜之间,区块链再次火起来.网络上大量的讲解分析区块链比特币的文章蜂拥而出.我是一个考 ...

  2. 文献阅读笔记 # Bitcoin: A Peer-to-Peer Electronic Cash System

    这篇文献是比特币白皮书,区块链技术的原始论文,需要细品.本文是归纳核心内容的个人阅读笔记. Bitcoin: A Peer-to-Peer Electronic Cash System Author: ...

  3. 比特币白皮书 Bitcoin: A Peer-to-Peer Electronic Cash System

    摘要 纯粹的点对点电子现金将允许在线支付直接从一方发送到另一方,而无需通过金融机构.数字签名提供了部分解决方案,但是如果仍然需要可信的第三方来防止重复开销,那么主要的好处就丧失了.我们提出了一个使用点 ...

  4. 什么是隐私混币协议Tornado Cash?| Tokenview

    Tornado Cash工作原理 Tornado Cash (Tornado) 是一种在以太坊区块链上运行的虚拟货币混合器,通过混淆其来源.目的地和交易对手,不加选择地促进匿名交易,而不试图确定其来源 ...

  5. 图灵奖得主Sivio Micali的Algorand区块链协议简介

    2018年2月,图灵奖得主.MIT教授Sivio Micali募集400万美元开发Algorand区块链协议一事受到了国内外媒体的普遍关注.2017年春天,笔者有幸在MIT选修了Micali教授和MI ...

  6. Bitcoin比特币与BlockChain区块链技术

    一.比特币的历史 比特币现在大火,一枚7000多人民币,遥想当年1万枚才买一张价值25美元的披萨优惠券,如果上天能给我回到当年的机会的话,我一定买买买!!! 比特币有很高的开采及投资价值,被我们中国人 ...

  7. bitcoin区块结构分析

    https://zhuanlan.zhihu.com/p/42584683 bitcoin区块结构分析 Eric ​关注他 区块链 区块链是由一个个包含交易数据的区块按照时间顺序链接组成.它可以存储到 ...

  8. Algorand简介

    原文地址:http://www.360doc7.net/wxarticlenew/738011615.html?from=singlemessage&isappinstalled=0 2018 ...

  9. Brinson分析简介

    导语:收益归因是一个比较基础.同时相当重要的策略分析工具,本教程旨在帮助大家利用BigQuant人工智能量化投资平台自带的Brinson进策略进行绩效归因分析. 分析框架 Brinson的框架可以用来 ...

最新文章

  1. 牛逼!原来分布式事务可以这样玩!
  2. 对阿里云服务器(数据盘已分区并格式化)的数据盘进行扩容
  3. iOS: 在代码中使用Autolayout (1) - 按比例缩放和优先级
  4. 通过js引用外部脚本(方便直接在浏览器上调试抓取代码)
  5. DHCP : 网络世界身份的获取
  6. 简易 IM 双向通信电脑端 GUI 应用——基于 Netty、WebSocket、JavaFX 、多线程技术等
  7. 基于php5.6 php.ini详解
  8. js技巧收集(200多个)
  9. mysql创建的数据库在哪里_求助,mysql创建数据库找不到文件在哪问题
  10. Python程序设计学习笔记-概述
  11. 猎豹网校 ASP.NET全套教程
  12. 使用密码查看器查看软件的密码
  13. 这10个免费电子书网站合集赶紧收藏了!
  14. 秋意浪漫风景如画 诗情画意 谁能读懂一个浪子的心
  15. 俞敏洪:我和马云就差了8个字
  16. 手机端的日期选择的插件
  17. 仅需简单的文字描述,即可把文字转图片
  18. binlog redo log undo log
  19. 联想存储8GB缓存00MJ101大量现货做工精细
  20. 什么是物联网?定义和解释

热门文章

  1. C 语言编程 — 编程实践
  2. VMware 虚拟化编程(3) —VMware vSphere Web Service API 解析
  3. Linux_RHEL_设置网络
  4. Union定义变量进行外部调用的方法
  5. vue-cli3.0控制台体验
  6. Watcher 实现机制之client注冊
  7. iOS SDWebImage 缓存机制与缓存策略
  8. Python调用MySQL模块初试
  9. 关于异常处理的解决方案
  10. Android ProGuard使用要点!