Python implementation of EIP 1577 content hash

content-hash的Python项目详细描述


python的contenthash

versiondownloadslicensepython

linux buildwindows buildcoveragequality

eip 1577内容哈希的python实现。

说明

这是一个简单的包,用于对EIP 1577中指定的内容哈希进行编码和解码。 这个包对于每个想要与EIP 1577兼容的ENS resolvers交互的Ethereum开发人员都很有用。

有关javascript实现,请参见^{}

安装

要求

ContentHash需要Python3.5或更高版本。

来自Pypi

建议使用pip从pypi安装contenthash。

pip install content-hash

来源

或者,也可以从源代码安装它。

git clone https://github.com/filips123/ContentHashPy.git
cd ContentHashPy
python setup.py install

用法

支持的编解码器

当前支持以下编解码器:

  • swarm-ns
  • ipfs-ns
  • ipns-ns
  • onion
  • onion3
  • zeronet

获取编解码器

可以使用get_codec函数从内容哈希中获取编解码器。

它将内容哈希作为十六进制字符串并返回编解码器名称。内容哈希可以以0x作为前缀,但它不是必需的。

importcontent_hashchash='bc037a716b746c776934666563766f367269'codec=content_hash.get_codec(chash)print(codec)# onion

解码

可以使用decode函数对内容哈希进行解码。

它将内容哈希作为十六进制字符串,并将解码的内容作为字符串返回。内容哈希可以以0x作为前缀,但它不是必需的。

importcontent_hashchash='e3010170122029f2d17be6139079dc48696d1f582a8530eb9805b561eda517e22a892c7e3f1f'value=content_hash.decode(chash)print(value)# QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4

编码

可以使用encode函数对内容哈希进行编码。

它将支持的编解码器作为字符串,将值作为字符串,并将相应的内容哈希作为十六进制字符串返回。输出的前缀不会是0x

importcontent_hashvalue='d1de9994b4d039f6548d191eb26786769f580809256b4685ef316805265ea162'chash=content_hash.encode(chash)print(chash)# e40101701b20d1de9994b4d039f6548d191eb26786769f580809256b4685ef316805265ea162

创建编解码器

所有支持的编解码器配置文件都可以在^{}中的PROFILES字典中找到。你需要在那里添加一个新的配置文件。

每个配置文件必须与multicodec库中相应的编解码器同名。

配置文件还必须具有解码和编码功能。它们应该作为包含所需解码或编码模块名称的字符串传递。所有这些模块都可以在^{}^{}中使用。

每个模块名称都应该尽可能地描述它。其名称只能包含python模块的有效字符。

每个解码模块必须有一个decode函数。它必须是接受bytes输入并返回str结果的函数。

每个编码模块必须有一个encode函数。它必须是接受str输入并返回bytes结果的函数。

所有输入和输出必须与JavaScript implementation中的相同。多个配置文件可以共享相同的解码和编码。

版本控制

此库使用SemVer进行版本控制。有关可用的版本,请参见此存储库上的the tags

许可证

这个图书馆是根据麻省理工学院的许可证授权的。有关详细信息,请参见LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法