携带指定信息的地址编码方法及装置与流程

文档序号:23174007发布日期:2020-12-04 14:05阅读:130来源:国知局
携带指定信息的地址编码方法及装置与流程

本发明属于区块链技术领域,尤其涉及携带指定信息的地址编码方法及装置。



背景技术:

区块链技术基于其不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征,在现实生活中实现了各种各样的功能,不仅得到了安全、可靠的保障,而且极大地方便了现实生活的方方面面。

在区块链系统中,地址是核心的组件,所有的转账、交易等操作都和地址相关。区块链地址的基本推导过程为:私钥—>公钥—>地址。同时为了使地址具有可读性和可打印性,往往需要对地址进行一定的再处理,例如进行base58编码。base58编码的流程是:256进制的字符串序列—>10进制数(有可能非常大)—>58进制数—>base58编码表映射—>base58字符串。

但是正如上述base58编码的编码过程,由于开头的字符串序列是随机的,因此导致10进制的高位也是随机的,进而导致58进制数的高位也是随机的,最终导致生成的地址是完全随机的,其中,在不同的字符串序列中同一段字符生成得到的地址中对应的内容也是不同的。如此,这样使得地址本身无法携带指定的信息,更加无法在多个指定位置携带各种丰富的信息。



技术实现要素:

本发明为解决上述技术问题,提供了携带指定信息的地址编码方法及装置,其实现了区块链地址在地址不同的位置携带各种不同长短的信息,大大提高了地址编码携带信息的灵活性、丰富性、可读性,其技术方案为:

一种携带指定信息的地址编码方法,包括以下步骤:

s1:接收地址编码请求,其中,地址编码请求包括需要进行地址编码的字符串序列和需要携带的指定信息;

s2:根据指定信息,依次对字符串序列补充不同的若干字节,并通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址。

在其中一个实施例中,步骤s2进一步包括:

s21:将指定信息依次拆开成若干信息片段;

s22:按照信息片段在地址上从前至后的顺序,依次对字符串序列的对应位置补充不同的若干字节,并通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到携带各个信息片段的地址;

其中,通过暴力计算寻找到前一位置携带信息片段的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一位置携带信息片段的地址。

在其中一个实施例中,步骤s21中,信息片段对应补充入字符串序列的字节长度为1至3字节。

在其中一个实施例中,步骤s2中,对字符串序列补充一定字节之后,若通过暴力计算无法寻找到携带指定信息的地址,则扩展字符串序列的补充字节长度,并继续通过暴力计算依次对补充字节之后的字符串序列进行地址编码,直至寻找到携带指定信息的地址。

在其中一个实施例中,地址编码请求还包括功能性的逻辑信息;

步骤s1与步骤s2之间还包括步骤:

根据逻辑信息,对字符串序列进行功能扩展,其中,逻辑信息的扩展位置包括地址前缀和/或地址后缀和/或地址中间任意一位置。

在其中一个实施例中,指定信息包括用于用户进行地址识别的标识,逻辑信息包括用于防止地址输入错误的校验和。

在其中一个实施例中,步骤s2中,根据指定信息,依次对字符串序列补充不同的若干字节进一步包括:

根据指定信息的地址指定位置,依次对字符串序列的对应位置补充不同的若干字节,地址指定位置包括地址前缀和/或地址后缀和/或地址中间任意一位置。

在其中一个实施例中,步骤s2中,若地址指定位置具有多处位置时,通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址进一步包括:

按照从地址前缀到地址后缀的顺序,通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到不同的地址指定位置携带指定信息的地址;

其中,通过暴力计算寻找到前一地址指定位置携带指定信息的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一地址指定位置携带指定信息的地址。

在其中一个实施例中,需要进行地址编码的字符串序列通过对区块链中用户地址的公钥进行哈希计算得到。

一种携带指定信息的地址编码装置,包括:

接收模块,用于接收地址编码请求,其中,地址编码请求包括需要进行地址编码的字符串序列和需要携带的指定信息;

地址编码模块,用于根据指定信息,依次对字符串序列补充不同的若干字节,并通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址。

在其中一个实施例中,地址编码模块具体用于:

将指定信息依次拆开成若干信息片段;

按照信息片段在地址上从前至后的顺序,依次对字符串序列的对应位置补充不同的若干字节,并通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到携带各个信息片段的地址;

其中,通过暴力计算寻找到前一位置携带信息片段的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一位置携带信息片段的地址。

在其中一个实施例中,信息片段对应补充入字符串序列的字节长度为1至3字节。

在其中一个实施例中,地址编码请求还包括功能性的逻辑信息,地址编码模块还用于:根据逻辑信息,对字符串序列进行功能扩展,其中,逻辑信息的扩展位置包括地址前缀和/或地址后缀和/或地址中间任意一位置。

在其中一个实施例中,指定信息包括用于用户进行地址识别的标识,逻辑信息包括用于防止地址输入错误的校验和,需要进行地址编码的字符串序列通过对区块链中用户地址的公钥进行哈希计算得到。

在其中一个实施例中,地址编码模块具体用于:

根据指定信息的地址指定位置,依次对字符串序列的对应位置补充不同的若干字节,地址指定位置包括地址前缀和/或地址后缀和/或地址中间任意一位置;

以及若地址指定位置具有多处位置时,按照从地址前缀到地址后缀的顺序,通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到不同的地址指定位置携带指定信息的地址;

其中,通过暴力计算寻找到前一地址指定位置携带指定信息的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一地址指定位置携带指定信息的地址。

一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述携带指定信息的地址编码方法。

一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述携带指定信息的地址编码方法。

本发明与现有技术相比具有以下的优点和积极效果:

本发明通过在需要进行地址编码的字符串序列的基础上,补充不同的若干字节,通过暴力计算的方式依次对不同的字符串序列进行地址编码,在不同的字符串序列中,找寻到携带指定信息的地址,其中,根据指定信息的地址指定位置,从前至后地依次找寻携带指定信息的地址,并且每一处指定信息拆开成若干信息片段,信息片段的长度依据暴力计算处理的速度,从前至后依次找寻每一信息片段,以组成需要携带的指定信息,如此,分位置分片段的找寻方式大大提高了携带指定信息的整体地址编码速度,同时可以在地址不同的位置携带各种不同长短的信息,大大提高了地址编码携带信息的灵活性、丰富性、可读性。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。

图1为本发明一个实施例中携带指定信息的地址编码方法的整体流程图;

图2为本发明一个实施例中地址携带指定信息和逻辑信息的地址编码方法的流程图;

图3为本发明一个实施例中地址多处携带指定信息的地址编码方法的流程图;

图4为本发明一个实施例中进一步提高编码效率的携带指定信息的地址编码方法的流程图;

图5为本发明一个实施例中携带指定信息的地址编码装置的结构示意图。

附图标记说明:

1-接收模块;2-地址编码模块。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

区块链简单地说就是一种去中心化的分布式账本数据库,区块链技术本质上是一种数据库技术,每个区块就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,这些被保存的信息就无法被篡改。区块链具有去中心化、开放性、独立性、安全性、匿名性的特征,可以应用到生活的众多方面,其中,在众多应用中,交易、支付等是区块链的重要应用之一。

区块链地址是区块链系统中最重要的核心之一,其与转账、交易、支付息息相关。地址的基本推导过程为:私钥—>公钥—>地址。具体而言,例如,比特币的基本推导过程为私钥—>公钥—>ripemind-160(hash-256(公钥))—>base58编码—>地址,其中,base58编码是为了使地址具有可读性和可打印性进行的编码处理,base58编码的流程是:256进制的字符串序列—>10进制数(有可能非常大)—>58进制数—>base58编码表映射—>base58字符串。从base58的编码过程可知,由于开头的字符串序列是随机的,因此导致10进制的高位也是随机的,进而导致58进制数的高位也是随机的,最终导致生成的地址是完全随机的。其中,在不同的字符串序列中同一段字符生成得到的地址中对应的内容也是不同的,也就说同一段字符放在不同的字符串序列中最后得到的地址中对应的内容并不唯一,这就导致了要想在区块链地址的指定位置携带指定信息变得十分的困难,而多指定位置携带长短不一的各类指定信息则难上加难。

值得注意的是,上述举例的比特币推导过程以及base58编码仅为了说明本发明所要解决的技术问题,本发明具体不限于上述具体举例的应用场景,更为广泛地,本发明能够适用各种类型的区块链地址的地址编码,以实现在地址不同的位置携带长短不一的各类指定信息。

第一实施例

为解决上述问题,参看图1,本实施例提出一种携带指定信息的地址编码方法,包括以下步骤:

s1:接收地址编码请求,其中,地址编码请求包括需要进行地址编码的字符串序列和需要携带的指定信息;

s2:根据指定信息,依次对字符串序列补充不同的若干字节,并通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址。

现对本实施例进行详细说明,但不仅限于此。

本实施例的方法适用于区块链系统中各种设备进行地址编码,以生成携带指定信息的区块链地址,其中,各种设备包括但不限于区块链网络中的负责维护网络运行的终端,例如手机、矿机、服务器、计算机等等。

1)具体介绍步骤s1

本实施例的地址编码请求中,字符串序列为地址的原始序列,一般通过“私钥—>公钥—>哈希运算”一步步推导得到,但是若直接使用字符串序列作为地址,适用于机器识别,但对于用户来讲,其可读性和可打印性十分差,因此需要进行地址编码,形成适合用户识别的地址,以使地址具有更好的可读性和可打印性。具体地,在区块链地址的地址编码中,字符串序列基于对区块链中用户地址的公钥的哈希计算得到,具体哈希计算可以是一次或多次迭代得到本实施例的字符串序列,例如,比特币的基本推导过程为私钥—>公钥—>ripemind-160(hash-256(公钥))—>base58编码—>地址,其中,ripemind-160(hash-256(公钥))就是需要进行地址编码的字符串序列。值得注意的是,base58编码是本实施例中适用的一种的地址编码方式,更为广泛地,本实施例也可以应用于例如base64编码等编码方式。为了更加清楚地说明本实施例的技术方案,本实施例具体以base58编码进行举例说明,但不仅限于此。

本实施例地址编码请求中,携带的指定信息,其包括地址携带信息的地址指定位置与信息内容,地址指定位置可以包括地址前缀和/或地址后缀和/或地址中间任意一位置,信息内容具体可以是任意长度、任意用途、任意意思的信息,本实施例可以实现在地址的任意一个或多个地址指定位置携带任意长度的各种不同信息内容。较优地,指定信息包括用于用户进行地址识别的标识,标识可以是用户的姓名、账户id、身份等等识别信息,一般优先放置在地址的前缀部分,以便于用户可以快速地识别所需信息。

较优地,本实施例的地址编码请求还包括功能性的逻辑信息,该逻辑信息不同于上述中的指定信息,指定信息为需要地址编码后地址所携带的信息,而逻辑信息为用于实现地址的相关功能而设定的信息,且具体地址编码后的对应生成内容可以任意,进一步地,参看图2,步骤s1与步骤s2之间还包括步骤:根据逻辑信息,对字符串序列进行功能扩展,将逻辑信息加入到字符串序列中,以使地址编码生成的地址实现一定的功能,其中,逻辑信息的扩展位置包括地址前缀和/或地址后缀和/或地址中间任意一位置。具体例如,逻辑信息可以为用于防止地址输入错误的校验和,一般可以放置在字符串序列的后半部分或结尾部分,如此生成的地址将携带校验和,通过地址校验和可以在使用、传输地址时进行地址检查,验证地址是否正确,保证数据传输的准确性。

进一步地,例如在比特币的区块链当中,不带检验和的推导过程为:私钥—>公钥—>ripemind-160(hash-256(公钥))—>base58编码—>地址,而带校验和的推导过程,本实施例可以在进行地址编码的字符串序列中加入逻辑信息,具体而言,带校验和的推导过程为:私钥—>公钥—>ripemind-160(hash-256(公钥))+hash256(ripemind-160(hash-256(公钥)))[:4]—>base58编码—>地址,其中,本实施例通过在原字符串序列中增加了hash256(ripemind-160(hash-256(公钥)))[:4],使得生成的地址携带校验和,字符串序列增加的具体表示对ripemind-160(hash-256(公钥))进行哈希,再取哈希值的前4个字节。

2)具体介绍步骤s2

本实施例根据指定信息,依次对字符串序列补充不同的若干字节,其中,字符串序列补充的长度为指定信息的长度,字符串序列补充的位置为地址所需携带指定信息的位置,补充的每个字节的取值范围为[0,256)。例如,若想在地址的前缀部分携带“mo”的指定信息,则可以在字符串序列的前缀部分补充2个字节,具体地,依次对字符串序列的前缀部分补充不同取值的2个字节。值得注意的是,本实施例中携带的指定信息的长度与字符串序列的补充字节长度也可以是不一样的,本实施例在对字符串序列补充一定字节之后,若通过暴力计算无法寻找到携带指定信息的地址,则可以在当前补充的直接的前面继续增加字节,即对字符串序列的补充字节长度进一步扩展,以再次通过暴力计算找寻携带指定信息的地址。

本实施例通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址,其中,暴力计算即直接代入法,本实施例直接对每一种可能的字符串序列进行地址编码,通过地址编码的结果,直接找寻能够生成携带在指定信息的字符串序列以及地址。例如,若想在地址的后缀部分携带“le”的指定信息,则字符串序列后缀补充字节的情况总共就有2562种情况,通过暴力计算依次对每种补充字节之后的字符串序列进行地址编码,根据每次地址编码的结果,找寻携带指定信息的地址及字符串序列,若提前找到携带指定信息的地址,可停止当前的暴力计算,以减少不必要的计算时间,提高响应速度。

较优地,参看图3,指定信息的地址指定位置具有多处时,具体想要在地址前缀、地址后缀、地址中间任意一位置中的多个位置携带指定信息时,按照从地址前缀到地址后缀的顺序,本实施例依次对字符串序列的对应位置补充不同的若干字节,同时,按照从地址前缀到地址后缀的顺序,通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到不同的地址指定位置携带指定信息的地址。其中,通过暴力计算寻找到前一地址指定位置携带指定信息的地址之后,在对应的字符串序列的基础上,对字符串序列的下一地址指定位置补充不同的若干字节,通过暴力计算再寻找下一地址指定位置携带指定信息的地址。

具体通过一实例进行说明,若想要在地址前缀、地址中间、地址后缀的三个位置分别携带“mo”、“on”、“le”:本实施例先在字符串序列的地址前缀部分补充字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“mo”的地址之后,停止当前暴力计算过程;在找寻到携带“mo”的地址对应的字符串序列的基础上,进行字符串序列的地址中间部分补充字节,通过暴力计算对地址中间部分补充字节的不同字符串序列依次进行地址编码,找寻到地址中间部分携带“on”的地址之后,停止当前暴力计算过程;在找寻到携带“mo”、“on”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“le”的地址之后,停止当前暴力计算过程,如此,最后找寻得到的地址即可在地址前缀、地址中间、地址后缀的三个位置分别携带“mo”、“on”、“le”的指定信息。

由于本实施例采用暴力计算方式进行地址编码,所以其性能会随着补充字节长度n和地址编码长度lmax-lmin的增大而快速下降,时间复杂程度可以表示为:o(256n)*o(lmax-lmin)。例如,本实施例在普通笔记本电脑上(1个cpu、1g内存)进行base58地址编码测试,每个base58编码的计算时间为0.0002秒,此情况下,当补充两个字节长度(n=2)进行暴力计算的地址编码时,预计需要2562*0.0002秒(约13秒)之内能够计算出来,但补充四个字节长度(n=4)进行暴力计算的地址编码时,预计需要2564*0.0002秒(约10天)之内能够计算出来,这显然已经不是地址编码能够接受的处理速度。

为进一步解决上述地址编码速度慢的问题,较优地,参看图4,本实施例的步骤s2进一步包括:

s21:将指定信息依次拆开成若干信息片段,信息片段对应补充入字符串序列的字节长度为1至3字节;

s22:按照信息片段在地址上从前至后的顺序,依次对字符串序列的对应位置补充不同的若干字节,并通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到携带各个信息片段的地址;其中,通过暴力计算寻找到前一位置携带信息片段的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一位置携带信息片段的地址。

具体地,本实施例若想地址携带2k个字节的指定信息,可以将指定信息平均拆解成k个信息片段,每个信息片段对应补充入字符串序列的字节长度为2个字节,然后依次对每个信息片段进行暴力计算找寻,如此,由整个地址编码的复杂程度有之前的o(2562k)降低为了o(k*2562),大大提高了地址编码的处理速度。例如,若想地址携带6个字节的指定信息,本实施例可以平均拆解成3个信息片段,每个信息片段2个字节,按照信息片段在地址上从前至后的顺序,现对第一个信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第一个信息片段的地址后,在其字符串序列的基础上,对第二信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第二个信息片段的地址后,在其字符串序列的基础上,对第三信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第三个信息片段的地址,如此,实现了地址携带6个字节的指定信息,并且采用上述方法整个地址编码的复杂程度有之前的o(2566)降低为了o(2562)+o(2562)+o(2562),大大降低了本实施例地址编码所需的时间,实现了地址携带任意长度的指定信息,提高了地址编码的灵活性和丰富性。

值得注意的是,本实施例中信息片段对应补充入字符串序列的字节长度建议为1至3字节,以保证本实施例的地址编码方法的处理时间在一个合理能够接受的范围,而对于一些具有更强大计算能力的设备而言,此补充入字符串序列的字节长度的建议范围可以更为宽泛,但是无论是何种计算设备,通过本实施例的地址编码方法,将指定信息进行拆解进行分别地址编码,都能够显著降低地址携带指定信息的编码复杂程度。

具体通过一实例进行说明,若想要地址前缀、地址后缀分别携带“moon”、“lemon”:

本实施例先对地址前缀部分、地址后缀部分需要携带的指定信息系进行拆解,例如拆成“mo”、“on”、“le”、“mon”,本实施例对指定信息的拆解具体不作限制,具体还可其他拆解形式;

按照信息片段在地址上从前至后的顺序,本实施例现在字符串序列的前缀部分补充“mo”对应的字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“mo”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“mo”的指定信息;

在找寻到携带“mo”的地址对应的字符串序列的基础上,进行字符串序列的地址前缀部分补充“on”对应的字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“on”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息;

在找寻到携带“on”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充“le”对应的字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“le”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息,后缀携带了“le”的指定信息;

在找寻到携带“le”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充“mon”对应的字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“mon”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息,后缀携带了“lemon”的指定信息。

本实施例通过在需要进行地址编码的字符串序列的基础上,补充不同的若干字节,通过暴力计算的方式依次对不同的字符串序列进行地址编码,在不同的字符串序列中,找寻到携带指定信息的地址,其中,根据指定信息的地址指定位置,从前至后地依次找寻携带指定信息的地址,并且每一处指定信息拆开成若干信息片段,信息片段的长度依据暴力计算处理的速度,从前至后依次找寻每一信息片段,以组成需要携带的指定信息,如此,分位置分片段的找寻方式大大提高了携带指定信息的整体地址编码速度,同时可以在地址不同的位置携带各种不同长短的信息,大大提高了地址编码携带信息的灵活性、丰富性、可读性。

第二实施例

参看图5,本发明提出了一种基于第一实施例的携带指定信息的地址编码装置,包括:

接收模块1,用于接收地址编码请求,其中,地址编码请求包括需要进行地址编码的字符串序列和需要携带的指定信息;

地址编码模块2,用于根据指定信息,依次对字符串序列补充不同的若干字节,并通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址。

现具体对本实施例进行详细说明,但不仅限于此。

本实施例的接收模块接收的地址编码请求中,字符串序列为地址的原始序列,一般通过“私钥—>公钥—>哈希运算”一步步推导得到,但是若直接使用字符串序列作为地址,适用于机器识别,但对于用户来讲,其可读性和可打印性十分差,因此需要进行地址编码,形成适合用户识别的地址,以使地址具有更好的可读性和可打印性。具体地,在区块链地址的地址编码中,字符串序列基于对区块链中用户地址的公钥的哈希计算得到,具体哈希计算可以是一次或多次迭代得到本实施例的字符串序列,例如,比特币的基本推导过程为私钥—>公钥—>ripemind-160(hash-256(公钥))—>base58编码—>地址,其中,ripemind-160(hash-256(公钥))就是需要进行地址编码的字符串序列。值得注意的是,base58编码是本实施例中适用的一种的地址编码方式,更为广泛地,本实施例也可以应用于例如base64编码等编码方式。为了更加清楚地说明本实施例的技术方案,本实施例具体以base58编码进行举例说明,但不仅限于此。

本实施例的接收模块接收的地址编码请求中,携带的指定信息,其包括地址携带信息的地址指定位置与信息内容,地址指定位置可以包括地址前缀和/或地址后缀和/或地址中间任意一位置,信息内容具体可以是任意长度、任意用途、任意意思的信息,本实施例可以实现在地址的任意一个或多个地址指定位置携带任意长度的各种不同信息内容。较优地,指定信息包括用于用户进行地址识别的标识,标识可以是用户的姓名、账户id、身份等等识别信息,一般优先放置在地址的前缀部分,以便于用户可以快速地识别所需信息。

较优地,本实施例的地址编码请求还包括功能性的逻辑信息,该逻辑信息不同于上述中的指定信息,指定信息为需要地址编码后地址所携带的信息,而逻辑信息为用于实现地址的相关功能而设定的信息,且具体地址编码后的对应生成内容可以任意,进一步地,本实施例的地址编码模块还根据逻辑信息,对字符串序列进行功能扩展,将逻辑信息加入到字符串序列中,以使地址编码生成的地址实现一定的功能,其中,逻辑信息的扩展位置包括地址前缀和/或地址后缀和/或地址中间任意一位置。具体例如,逻辑信息可以为用于防止地址输入错误的校验和,一般可以放置在字符串序列的后半部分或结尾部分,如此生成的地址将携带校验和,通过地址校验和可以在使用、传输地址时进行地址检查,验证地址是否正确,保证数据传输的准确性。

进一步地,例如在比特币的区块链当中,不带检验和的推导过程为:私钥—>公钥—>ripemind-160(hash-256(公钥))—>base58编码—>地址,而带校验和的推导过程,本实施例可以在进行地址编码的字符串序列中加入逻辑信息,具体而言,带校验和的推导过程为:私钥—>公钥—>ripemind-160(hash-256(公钥))+hash256(ripemind-160(hash-256(公钥)))[:4]—>base58编码—>地址,其中,本实施例通过在原字符串序列中增加了hash256(ripemind-160(hash-256(公钥)))[:4],使得生成的地址携带校验和,字符串序列增加的具体表示对ripemind-160(hash-256(公钥))进行哈希,再取哈希值的前4个字节。

本实施例的地址编码模块根据指定信息,依次对字符串序列补充不同的若干字节,其中,字符串序列补充的长度为指定信息的长度,字符串序列补充的位置为地址所需携带指定信息的位置,补充的每个字节的取值范围为[0,256)。例如,若想在地址的前缀部分携带“mo”的指定信息,则可以在字符串序列的前缀部分补充2个字节,具体地,依次对字符串序列的前缀部分补充不同取值的2个字节。值得注意的是,本实施例中携带的指定信息的长度与字符串序列的补充字节长度也可以是不一样的,本实施例在对字符串序列补充一定字节之后,若通过暴力计算无法寻找到携带指定信息的地址,则可以在当前补充的直接的前面继续增加字节,即对字符串序列的补充字节长度进一步扩展,以再次通过暴力计算找寻携带指定信息的地址。

本实施例的地址编码模块通过暴力计算依次对补充有不同的若干字节的字符串序列进行地址编码,直至寻找到携带指定信息的地址,其中,暴力计算即直接代入法,本实施例直接对每一种可能的字符串序列进行地址编码,通过地址编码的结果,直接找寻能够生成携带在指定信息的字符串序列以及地址。例如,若想在地址的后缀部分携带“le”的指定信息,则字符串序列后缀补充字节的情况总共就有2562种情况,通过暴力计算依次对每种补充字节之后的字符串序列进行地址编码,根据每次地址编码的结果,找寻携带指定信息的地址及字符串序列,若提前找到携带指定信息的地址,可停止当前的暴力计算,以减少不必要的计算时间,提高响应速度。

较优地,指定信息的地址指定位置具有多处时,具体想要在地址前缀、地址后缀、地址中间任意一位置中的多个位置携带指定信息时,按照从地址前缀到地址后缀的顺序,本实施例的地址编码模块依次对字符串序列的对应位置补充不同的若干字节,同时,按照从地址前缀到地址后缀的顺序,通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到不同的地址指定位置携带指定信息的地址。其中,通过暴力计算寻找到前一地址指定位置携带指定信息的地址之后,在对应的字符串序列的基础上,对字符串序列的下一地址指定位置补充不同的若干字节,通过暴力计算再寻找下一地址指定位置携带指定信息的地址。

具体通过一实例进行说明,若想要在地址前缀、地址中间、地址后缀的三个位置分别携带“mo”、“on”、“le”:本实施例先在字符串序列的地址前缀部分补充字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“mo”的地址之后,停止当前暴力计算过程;在找寻到携带“mo”的地址对应的字符串序列的基础上,进行字符串序列的地址中间部分补充字节,通过暴力计算对地址中间部分补充字节的不同字符串序列依次进行地址编码,找寻到地址中间部分携带“on”的地址之后,停止当前暴力计算过程;在找寻到携带“mo”、“on”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“le”的地址之后,停止当前暴力计算过程,如此,最后找寻得到的地址即可在地址前缀、地址中间、地址后缀的三个位置分别携带“mo”、“on”、“le”的指定信息。

由于本实施例采用暴力计算方式进行地址编码,所以其性能会随着补充字节长度n和地址编码长度lmax-lmin的增大而快速下降,时间复杂程度可以表示为:o(256n)*o(lmax-lmin)。例如,本实施例在普通笔记本电脑上(1个cpu、1g内存)进行base58地址编码测试,每个base58编码的计算时间为0.0002秒,此情况下,当补充两个字节长度(n=2)进行暴力计算的地址编码时,预计需要2562*0.0002秒(约13秒)之内能够计算出来,但补充四个字节长度(n=4)进行暴力计算的地址编码时,预计需要2564*0.0002秒(约10天)之内能够计算出来,这显然已经不是地址编码能够接受的处理速度。

为进一步解决上述地址编码速度慢的问题,较优地,本实施例的地址编码模块进一步用于:

将指定信息依次拆开成若干信息片段,信息片段对应补充入字符串序列的字节长度为1至3字节;

按照信息片段在地址上从前至后的顺序,依次对字符串序列的对应位置补充不同的若干字节,并通过暴力计算依次对不同位置补充有不同的若干字节的字符串序列进行地址编码,依次寻找到携带各个信息片段的地址;其中,通过暴力计算寻找到前一位置携带信息片段的地址之后,在对应的字符串序列的基础上,通过暴力计算再寻找下一位置携带信息片段的地址。

具体地,本实施例的地址编码模块若想地址携带2k个字节的指定信息,可以将指定信息平均拆解成k个信息片段,每个信息片段对应补充入字符串序列的字节长度为2个字节,然后依次对每个信息片段进行暴力计算找寻,如此,由整个地址编码的复杂程度有之前的o(2562k)降低为了o(k*2562),大大提高了地址编码的处理速度。例如,若想地址携带6个字节的指定信息,本实施例可以平均拆解成3个信息片段,每个信息片段2个字节,按照信息片段在地址上从前至后的顺序,现对第一个信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第一个信息片段的地址后,在其字符串序列的基础上,对第二信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第二个信息片段的地址后,在其字符串序列的基础上,对第三信息片段进行字符串序列的字节补充与暴力计算地址编码,找寻到携带第三个信息片段的地址,如此,实现了地址携带6个字节的指定信息,并且采用上述装置整个地址编码的复杂程度有之前的o(2566)降低为了o(2562)+o(2562)+o(2562),大大降低了本实施例地址编码所需的时间,实现了地址携带任意长度的指定信息,提高了地址编码的灵活性和丰富性。

值得注意的是,本实施例中信息片段对应补充入字符串序列的字节长度建议为1至3字节,以保证本实施例的地址编码装置的处理时间在一个合理能够接受的范围,而对于一些具有更强大计算能力的设备而言,此补充入字符串序列的字节长度的建议范围可以更为宽泛,但是无论是何种计算设备,通过本实施例的地址编码装置,将指定信息进行拆解进行分别地址编码,都能够显著降低地址携带指定信息的编码复杂程度。

具体通过一实例进行说明,本实施例的地址编码模块若想要地址前缀、地址后缀分别携带“moon”、“lemon”:

本实施例先对地址前缀部分、地址后缀部分需要携带的指定信息系进行拆解,例如拆成“mo”、“on”、“le”、“mon”,本实施例对指定信息的拆解具体不作限制,具体还可其他拆解形式;

按照信息片段在地址上从前至后的顺序,本实施例现在字符串序列的前缀部分补充“mo”对应的字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“mo”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“mo”的指定信息;

在找寻到携带“mo”的地址对应的字符串序列的基础上,进行字符串序列的地址前缀部分补充“on”对应的字节,通过暴力计算对地址前缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址前缀部分携带“on”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息;

在找寻到携带“on”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充“le”对应的字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“le”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息,后缀携带了“le”的指定信息;

在找寻到携带“le”的地址对应的字符串序列的基础上,进行字符串序列的地址后缀部分补充“mon”对应的字节,通过暴力计算对地址后缀部分补充字节的不同字符串序列依次进行地址编码,找寻到地址后缀部分携带“mon”的地址之后,停止当前暴力计算过程,如此,目前获取的地址的前缀携带了“moon”的指定信息,后缀携带了“lemon”的指定信息。

本实施例通过在需要进行地址编码的字符串序列的基础上,补充不同的若干字节,通过暴力计算的方式依次对不同的字符串序列进行地址编码,在不同的字符串序列中,找寻到携带指定信息的地址,其中,根据指定信息的地址指定位置,从前至后地依次找寻携带指定信息的地址,并且每一处指定信息拆开成若干信息片段,信息片段的长度依据暴力计算处理的速度,从前至后依次找寻每一信息片段,以组成需要携带的指定信息,如此,分位置分片段的找寻方式大大提高了携带指定信息的整体地址编码速度,同时可以在地址不同的位置携带各种不同长短的信息,大大提高了地址编码携带信息的灵活性、丰富性、可读性。

第三实施例

本发明还提出了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如上述第一实施例所提及的携带指定信息的地址编码方法。

第四实施例

本发明提出了一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述第一实施例中所提及的携带指定信息的地址编码方法。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1