Skip to main content

与 Hathor 区块链交互的 python 包。专门用于 NFT 项目。

项目描述

hathor-sdk

pytest

用于与哈索尔区块链交互的 Python sdk。欢迎请求请求。

用法

该软件包包含一组实用功能。

get_nft_owner

获取当前持有特定 NFT 的地址

from hathorsdk.get_nft_owner import get_nft_owner

nft_uid = "000000002be1e670ea340bfa244eb87b23970197852a800b68619748eb810c8b"

get_nft_owner(nft_uid)

get_received_htr_amount

获取通过交易发送到特定钱包的 hathor 数量。如果 tx 不包含 hathor,该函数将返回错误。

from hathorsdk.get_received_htr_amount import get_received_htr_amount

# tx contains 0.01 HTR
tx_id = "00000000f1e5259986d3182982afb2c535a02e45635739ee2e4033812369a919"
target_wallet = "HFVpboLjDKXjukGs5ddkp1fkmegR5wsfWE"

get_received_htr_amount(tx_id, target_wallet)

获取配置字符串

从铸造的 NFT 中获取配置字符串。

from hathorsdk.get_configuration_string import get_configuration_string

uid = "000000002be1e670ea340bfa244eb87b23970197852a800b68619748eb810c8b"
name = "Anubian #1631"
symbol = "A1631"

get_configuration_string(uid, name, symbol)

无头钱包

有关启动无头钱包的更多信息,请参阅Hathor Headless-Wallet Github 存储库

连接到在后台本地运行的无头 hathor 钱包。

from hathorsdk.headless_wallet import HeadlessWallet

headless_wallet = HeadlessWallet(base_url="http://localhost:8000")
headless_wallet.start()
headless_wallet.status

发送 1 个 HTR

from hathorsdk.headless_wallet import HeadlessWallet

headless_wallet = HeadlessWallet(base_url="http://localhost:8000")
headless_wallet.start()

post_data = {
    "address": "HFEkN7Wu6X6AoeF4CvwfLGCgviUqifvnoG",
    "value": 100,
}
res = headless_wallet.send_simple_htr_tx(post_data)

发送 NFT

from hathorsdk.headless_wallet import HeadlessWallet

headless_wallet = HeadlessWallet(base_url="http://localhost:8000")
headless_wallet.start()

nft_uid = "An NFT contained in the headless wallet that was started in the background."
transaction_data = {
    "address": "HFEkN7Wu6X6AoeF4CvwfLGCgviUqifvnoG",
    "value": 1,
    "token": nft_uid,
}

# send out the NFT
res = headless_wallet.send_simple_htr_tx(transaction_data)

皮纳塔

拥有去中心化的存储和可信的 NFT。您可以使用 IPFS 来存储 NFT 内容。 pinata.cloud提供了一项服务,大大简化了与 IPFS 的交互,值得。

您需要在 pinata 网站上创建一个 JWT 令牌并使用它来初始化 Pinata 类。

from hathorsdk.pinata import Pinata

token_string = "tokenstring "

pinata = Pinata(jwt_token=token_string)
pinata.check_api_connection()

使用 pinata 将本地图像上传到 ipfs

from hathorsdk.pinata import Pinata

token_string = "tokenstring "
pinata = Pinata(jwt_token=token_string)

local_path = "path/to/local/nft/image.png"
res_image_upload = pinata.ipfs_upload(local_path)

使用 pinata 将整个目录上传到 ipfs。

from hathorsdk.pinata import Pinata

token_string = "tokenstring "
pinata = Pinata(jwt_token=token_string)

local_path = "path/to/local/nft/"
res_image_upload = pinata.ipfs_upload_directory(local_path)

提供这样的路径将在 ipfs 上创建一个类似的嵌套文件夹。如果您只想拥有一个级别,您可以更改上传的工作目录,如下例所示。

import os

from pathlib import Path

from hathorsdk.pinata import Pinata

token_string = "tokenstring "
pinata = Pinata(jwt_token=token_string)

local_path = "path/to/local/nft/"

# save current working directory
workdir = os.getcwd()

# change the working directory to "path/to/local/"
video_directory_path = Path(local_path)
os.chdir(video_directory_path.parent)

# upload the "/nft/" directory to ipfs
ipfs_pin_response = pinata.ipfs_upload_directory(video_directory_path.name)
ipfs_hash_json = ipfs_pin_response.json()

# change back to the original working directory
os.chdir(workdir)

将它们放在一种方法中进行铸造和 NFT

对于我的 ai-nubians 项目

https://t.me/ai_nubians_chat,薄荷 01.01.2022 - 31.01.2022)

我创建了一个处理函数,它完成了为给定的 anubian id 铸造 NFT 的所有步骤。

基本步骤是:

  1. 创建 NFT 图像/视频(不在下面的管道代码中)
  2. 使用 pinata 上传图像/视频的 IPFS
  3. 创建 NFT 元数据
  4. 使用 pinata 将 NFT 元数据上传到 IPFS
  5. 铸造 NFT 到 Hathor

您必须自己创建自己的函数版本以匹配您的 NFT 项目。

# Pseudocode, do not run
def process_ainubian_nft(anub_id, nft_type, headless_wallet):

    # 1. create NFT image/video in another process
    
    # 2. ipfs upload NFT image
    print("IPFS upload NFT image / video.")
    ipfs_hash_json = ipfs_upload_nft_content(anub_id, nft_type)

    # 3. create the nft metadata in the format required (validate via NftMetadata class)
    print("Create NFT metadata.")
    attributes = get_ainubian_nft_metadata(anub_id)
    name = get_name(anub_id, nft_type)
    description = get_description(anub_id, nft_type)
    ipfs_hash = ipfs_hash_json["IpfsHash"]
    metadata = nft_metadata(name, description, ipfs_hash, attributes)

    # 4. ipfs upload nft metadata
    print("IPFS upload NFT metadata.")
    ipfs_hash_metadata_json = ipfs_upload_file(metadata)

    # 5. mint hft to hathor by linking to the metadata saved on ipfs.  (validate via NftMint class)
    print("HATHOR MINT NFT.")
    ipfs_hash = ipfs_hash_metadata_json["IpfsHash"]
    prefix = get_prefix(nft_type)
    nft_resp_json = mint_ainubian_nft(ipfs_hash, headless_wallet, prefix=prefix)

    return nft_resp_json

地方发展

对于虚拟环境管理,使用 Pipenv。

克隆 repo,安装 pipenv 并运行pipenv install --dev以在开发模式下安装包。

打包并推送到pypi

不要忘记将日历版本调整为当前日期。

pipenv run python -m build --sdist

测试皮皮:

pipenv run twine upload --repository testpypi dist/* -u __token__ -p $TEST_PYPI_TOKEN --verbose

真正的 PyPi:

pipenv run twine upload dist/* -u __token__ -p $PYPI_TOKEN --verbose

去做:

切换到更成熟的自述文件结构,例如https://github.com/KatherineMichel/setting-up-an-open-source-project/blob/master/example-README-structure.md

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

hathorsdk-2021.12.29.tar.gz (11.9 kB 查看哈希

已上传 source