与 Hathor 区块链交互的 python 包。专门用于 NFT 项目。
项目描述
hathor-sdk
用于与哈索尔区块链交互的 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 的所有步骤。
基本步骤是:
- 创建 NFT 图像/视频(不在下面的管道代码中)
- 使用 pinata 上传图像/视频的 IPFS
- 创建 NFT 元数据
- 使用 pinata 将 NFT 元数据上传到 IPFS
- 铸造 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