PoC技术分析系列(四):谈谈BHD中的Base58编码

AIKing(微信号:aiking2018)

2019.7.16

      最近忙于写区块浏览器代码,文章没有心情写,BHD目前没有开源,所以需要我们多费一些精力去分析其数据格式,不过也正是一个深入学习的好机会,通过分析对Bitcoin又理解深刻了不少,例如BHD基于的Bitcoin版本激活了隔离验证,通过数据分析,对于Bitcoin交易生成过程,隔离验证,脚本等都有了一个更准确的理解。想要对Bitcoin理解的更深入,必备的基础知识是绕不过去的,只停留在科普水平是无法真正领会Bitcoin精髓的,今天这篇文章就分享一下一个应用很广的基础知识:Base58编码。

    Base58是什么鬼?看到名词不要怕,其实没那么复杂,如果我告诉你我们从小学习数学使用的是Base10,我们记录时间用的是Base60,你是不是马上就清楚了,所谓Base58,就是58进制。那么好好的10进制不用,或者计算机不是用二进制吗?为什么要又搞出来一个58进制。58进制的用处是可以使用更简短的方式表达一个非常大的数字。其实58进制早以在每一个玩BHD的朋友身边了,只不过你不知道而已,BHD钱包地址就是采用base58编码的,例如我的BHD地址:32esGUrk1S3BZeux7vLkBriY4r5BCvbbZt。后面我会写一篇文章详细讲解BHD地址中隐藏的秘密,因此本篇文章就算给后续文章打个基础。

    既然提到进制,大家想一下我们最熟悉的10进制就可以知道,每种进制都有一个使用的字符表,例如二进制是0,1,10进制是0-9。base58也不例外,上图中列出了常用的几种进制使用的字符表。大家仔细观察一下,会发现base58字符表中去掉了一些字符和数字,例如0和o,i,为什么这样?这就是base58的另一个特点,便于阅读,没有歧义,把容易混淆的字符和数字去掉了。从上图可以看到,在base58中,1是第一个字符,那么表示0,A表示9,以此类推。

    既然base58和我们平时使用的10进制类似,那就也能表达同样的数字,下图就是用不同进制表达的同一个数字,至于进制换算方法用小学数学知识就可以搞定,就是不断除58,然后把得到的结果用base58相应的符号表示。例如我们把10进制的123456789转化成base58,只需要五个字符即可。

下图是用不同进制来表示10进制的9999,大家可以看到使用base58来表达会更简短更易读。

    通过上面我们可以看到base58编码和解码还是挺麻烦的,其实这些功能已经都有现成的工具可以直接使用,上面的讲解是让大家懂得原理,达到知其然知i其所以然。使用python语言,我们可以引入base58模块,很方便的进行base58的编码和解码。python语言非常简单易学,即使是非专业人员也可以很快掌握,有空玩玩还是挺有趣的。

    上面我们提到BHD钱包地址就是使用base58编码,那么我们就可以对它进行base58的解码操作,看看里面到底隐藏着什么?BHD的钱包地址和我们平时使用的银行帐号是完全不同的,两者代表了去中心化和中心化完全不同的模式。BHD钱包地址可不简简单单是一串字符。我们先用Base58解码来看一下,我的BHD钱包地址是:32esGUrk1S3BZeux7vLkBriY4r5BCvbbZt。

    大家可以看到,我的钱包地址解开后是一串字符:050a90116771806b7027bc5c5fb0ddb62d5a4bcccb62725d3b,其中最后8个数字是校验位:62725d3b,这8个字符对前面的字符起到确认作用,也就是当你不小心写错了地址,程序是可以检查出来的,能够在一定程度上避免错误的出现,这也是使用base58编码比直接发送数字的好处之一。在我们验证正确之后,这8位字符就可以丢掉不管了。

    我们之前也提过,BHD钱包地址格式为Bitcoin最新标准地址格式:P2SH,即Pay-to-Script-Hash,除此之外Bitcoin还有其他地址格式,那么怎么进行区分呢,就通过地址中的第一个字符,凡是开头为3的地址就是P2SH地址,这种地址进行Base58解码之后,前两个字符一定是05,因此这是地址类型的标志位,那么其余的这串字符0a90116771806b7027bc5c5fb0ddb62d5a4bcccb,才是真正的关键。而且这串字符的长度一定是40个,否则就是错误的,不信你可以数一数。

    在其他人给你转账时,对方的钱包就是进行上面的解码操作提取出这个40个字符长度的内容,然后填写到交易里,而不是直接把你的地址填进去。同样,我进行反向操作,就是在前面补上05,在后面补上8位校验位,再用base58进行编码,我就可以得到一笔转账的地址了。大家从BHD官网的区块浏览器可以直接看到交易地址,背后就是要经过这样的操作才可以。

    好了,base58并不复杂,但是应用非常广,大家了解了这些基础知识才能逐步了解更深入的概念,例如隔离验证,闪电网络等,虽然炒币不需要技术,但是建议大家有空可以学习一点,这样可以建立自己的判断力,而不是人云亦云,只能根据网站是否漂亮,项目团队成员是否有外国人等这些信息来进行判断。

    我们解码后得到的40位字符串:0a90116771806b7027bc5c5fb0ddb62d5a4bcccb,有什么秘密,就是一串无意义的字符吗?欲知后事如何,且听下文分解!

    如果您觉得文章不错,请给作者打赏0.1BHD:32esGUrk1S3BZeux7vLkBriY4r5BCvbbZt

    欢迎加入”BHD技术派“微信群(5BHD),群内分享原创技术文章,讲解技术知识,定期发布BHD数据统计报告

    道德三皇五帝,

    功名夏后商周,

    五霸七雄闹春秋,

    顷刻兴亡过手。

    青史几行名姓,

    北邙无数荒丘,

    前人播种后人收,

    说甚龙争虎斗。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容