Ein Python -Paket zur Erleichterung der Integration und Einführung von NFT -Token (ERC721, ERC1155) in Softwareanwendungen.
In 1.2.2A1 sind die Ausgangsklassen integriert, aber alle Funktionen geben RAW zurück
NFTPY ermöglicht die Interaktion mit der Ethereum Virtual Machine (EVM) über RPC, um Vertragsdetails und Token -Inhaber abzurufen. Es bietet einen direkten Kommunikationsweg zwischen dem Kunden und der Blockchain. Derzeit werden Transaktionsmethoden nicht unterstützt, sondern in zukünftigen Aktualisierungen implementiert. Die folgenden Methoden sind verfügbar:
NFTPY enthält umfassende Funktionen für die Interaktion mit Ethereum -Geldbörsen, einschließlich Abfragestalden, Abholen von Gaspreisen und Übertragung von NFTs. Die Brieftaschenschnittstelle unterstützt sowohl schreibgeschützte als auch Transaktionsvorgänge.
Brieftaschenmerkmale:
NFTPY enthält eine integrierte Schnittstelle zum Interagieren mit Opensea über einen API-Schlüssel. Dies ermöglicht In-Package-Abfragen zu Opensea, wodurch der Zugriff auf Preisinformationen und andere opensea-spezifische Daten ermöglicht wird. Die Opensea -Schnittstelle kann konfiguriert werden, um sich auf eine einzelne Sammlung zu konzentrieren oder mehrere Sammlungen abzufragen. Die verfügbaren Methoden umfassen:
Opensea -Klasse:
OpenSeAcollection -Klasse:
OpenEAWALLET -KLASSE:
NFTPY enthält eine umfassende Schnittstelle für die Interaktion mit seltenbar über einen API -Schlüssel. Dies ermöglicht in Package-Abfragen seltenbar und ermöglicht den Zugriff auf NFT-Informationen, Marktdaten und vieles mehr. Die verfügbaren Methoden umfassen:
Rarible Klasse:
NFTPY ermöglicht die Erstellung von benutzerdefinierten Ketten mit spezifischen Ketten -IDs, RPC -URLs, Explorer -URLs und Namen. Diese Funktion verbessert die Flexibilität, indem die Hinzufügung von Blockchain -Netzwerken aktiviert wird, die in der Bibliothek nicht vordefiniert sind.
Erstellen einer benutzerdefinierten Kette:
from nftpy . EVM import Chain
custom_chain = Chain (
name = "Ethereum" ,
symbol = "ETH" ,
chain_id = 1 ,
rpc_url = "https://eth.llamarpc.com" ,
explorer_url = "https://etherscan.io" ,
testnet = False
)Mit nftpy.evm.nft werden wir die Pixelmon NFT -Kollektion auf Ethereum Mainnet abfragen! Wir werden zunächst anfangen, indem wir unsere Klasse erstellen. Wir werden unsere Klasse mit drei Argumenten definieren:
import nftpy . EVM as EVM
Pixelmon = EVM . NFT ( "0x32973908FaeE0Bf825A343000fE412ebE56F802A" , abi = EVM . ABI . ERC721 , network = EVM . Chains . ETH )
# Contract Address ABI Network To Query (Ethereum)Nachdem wir unser NFT -Objekt erstellt haben, können wir es abfragen. Wir werden damit beginnen, die Metadaten eines Tokens zu bekommen. Ich setze nur ein zufälliges Token als Argument ein.
print ( Pixelmon . get_token_metadata ( 5580 ))Nachdem wir dies ausgeführt haben, sollten wir eine Ausgabe sehen, die dies ähnelt
{
"name" : " Pixelmon #5580 " ,
"image_url" : " https://pixelmon-training-rewards.s3-accelerate.amazonaws.com/0/Moler.jpg " ,
"external_url" : " https://pixelmon.club/ " ,
"reward_bitmask" : 6 ,
"attributes" : [
{ "trait_type" : " Species " , "value" : " Moler " },
{ "trait_type" : " Origin " , "value" : " Earth " },
{ "trait_type" : " Rarity " , "value" : " Uncommon " },
{ "trait_type" : " Evolution " , "value" : " Evolution 1 " },
{ "trait_type" : " Hatched On " , "display_type" : " date " , "value" : 1672272943 }
],
"animation_url" : " https://pixelmon-training-rewards.s3-accelerate.amazonaws.com/6/Moler.mp4 "
}
Wir können damit viel mehr tun. Zum Beispiel:
print ( Pixelmon . get_token_uri ( 5580 ))
print ( Pixelmon . get_owner ( 5580 ))
print ( Pixelmon . get_balance ( "0x5AF7875766D1a50d144DF63E581c0764f6573487" ))
print ( Pixelmon . get_approved ( 5580 ))Für ERC1155 -Token können Sie Balancen für mehrere Token -IDs abfragen und die Genehmigungen überprüfen:
erc1155_nft = EVM . NFT ( contract_address = '0xYourERC1155ContractAddress' , network = EVM . Chains . ETH , abi = EVM . ABI . ERC1155 )
wallet_address = '0xYourWalletAddress'
token_id = 1
token_ids = [ 1 , 2 , 3 , 4 , 5 ]
# Get the balance of a specific token owned by the wallet
token_balance = erc1155_nft . get_token_balance ( wallet_address , token_id )
print ( f'Token ID { token_id } Balance: { token_balance } ' )
# Get the balance of multiple tokens owned by the wallet
tokens_balance = erc1155_nft . get_tokens ( wallet_address , token_ids )
print ( f'Tokens Balance: { tokens_balance } ' )
# Check if an address is approved for all tokens (ERC1155)
is_approved_erc1155 = erc1155_nft . is_approved_for_all_erc1155 ( wallet_address , '0xOperatorAddress' )
print ( f'Is Approved For All (ERC1155): { is_approved_erc1155 } ' ) Erstellen einer Instanz von NFTWallet erfordert entweder einen privaten Schlüssel für den vollen Zugriff oder nur eine Adresse für schreibgeschützte Zugriff. Sie können auch mehrere Ketten angeben, um gleichzeitig eine Verbindung zu verschiedenen Netzwerken herzustellen.
from nftpy import *
# Initialize the wallet with a private key and specify chains
wallet = NFTWallet ( private_key = "0x9015a0eb4c1ceab5f5544ac6e0a75eabb37d7dec26f1dfcb09adb43632330736" , chains = [ Chains . ETH_SEPOLIA ])
# Get the balance of the wallet in Ether
print ( wallet . get_balance ())
# Output: {"Balances": {'Sepolia Testnet': Decimal('0.8341469847291797')}}
# Get the balance of the wallet in Wei
print ( wallet . get_balance_wei ())
# Output: {"Balances": {'Sepolia Testnet': 834146984729179700}}
# Get the current gas price in Wei
print ( wallet . get_gas_price_wei ())
# Output: {'Sepolia Testnet': 20000000000}
# Get the current gas price in Gwei
print ( wallet . get_gas_price_gwei ())
# Output: {'Sepolia Testnet': Decimal('20')}
# Transfer an NFT to another wallet
to_wallet = "0xa693190103733280E23055BE70C838d9b6708b9a"
contract = "0x725Ea5eEA79F1515e34A921b83D4307b325cC8b9"
gas_price = wallet . get_gas_price_gwei ()[ "Sepolia Testnet" ]
gas_limit = 65000 # Disclaimer! Gas Limit set for Sepolia, WILL fail on other networks
# Transfer the NFT and get the transaction hash and explorer URL
print ( wallet . transfer_nft ( to = to_wallet , contract_address = contract , amount = 1 , gas_limit = gas_limit ,
gas_price_gwei = gas_price , abi = ABI . OPENSEA_ERC1155 , token_id = 1 ))
# Output: {'transaction_hash': '0x18a076a4a30c1cc014b1620aa907db06a04e8a709bda47e9beed2233a23f532f', 'explorer_url': 'https://sepolia.etherscan.io/tx/0x18a076a4a30c1cc014b1620aa907db06a04e8a709bda47e9beed2233a23f532f'} Nachdem wir den Transaktions -Hash erhalten haben, können wir die Programmverzögerung bis zur Transaktionsprozesse auf der Blockchain durchführen.
# Wait until the transaction is processed
transaction_hash = "0xcd74c93bbf42cae24f329c45da995bde7e1c89ea848855d04db516c6460eda02"
print ( wallet . wait_until_transaction_processes ( transaction_hash , chain = Chains . ETH_SEPOLIA ))
# Output: True | When the transaction fully processes on the blockchain Wenn Sie eine schreibgeschützte Adresse verwenden (dh nur eine Adresse und nicht eine private Schlüssel), können Sie weiterhin mit der Blockchain interagieren, um Informationen abzufragen, aber Sie können keine Transaktionen durchführen. Dies ist nützlich, um Brieftaschen zu überwachen und Daten abzurufen, ohne dass sensible Anmeldeinformationen erforderlich sind.
from nftpy import *
# Initialize the wallet with an address and specify chains
readonly_wallet = NFTWallet ( address = "0xYourReadOnlyWalletAddress" , chains = [ Chains . ETH_SEPOLIA ])
# Get the balance of the wallet in Ether
print ( readonly_wallet . get_balance ())
# Output: {"Balances": {'Sepolia Testnet': Decimal('0.123456789012345678')}}
# Get the balance of the wallet in Wei
print ( readonly_wallet . get_balance_wei ())
# Output: {"Balances": {'Sepolia Testnet': 123456789012345678}}
# Get the current gas price in Wei
print ( readonly_wallet . get_gas_price_wei ())
# Output: {'Sepolia Testnet': 20000000000}Wir werden zunächst unsere Klasse mit den folgenden Argumenten erstellen:
Bitte beachten Sie : Wenn Sie die Kette definieren, sollte sie mit nftpy.OpenSea.OpenSeaChain erfolgen, da die API ein spezielles Format für die Kettendefinition erfordert.
from nftpy import OpenSea , OpenSeaChain
opensea = OpenSea ( api_key = 'your-opensea-api-key' , chain = OpenSeaChain . POLYGON )Verwenden Sie die folgende Methode, um die Statistiken einer NFT -Sammlung abzufragen:
opensea . get_collection_stats ( 'your-collection-slug' )Nachdem wir das ausgeführt haben, sollten wir eine Ausgabe sehen, die dem ähnelt:
{
"stats" : {
"one_day_volume" : 12.34 ,
"one_day_change" : 0.56 ,
"one_day_sales" : 78 ,
"one_day_average_price" : 0.16 ,
"total_volume" : 1234.56 ,
"total_sales" : 7890 ,
"total_supply" : 10000 ,
"count" : 10000 ,
"num_owners" : 2345 ,
"average_price" : 0.123 ,
"num_reports" : 0 ,
"market_cap" : 4567.89 ,
"floor_price" : 0.123
}
}Verwenden Sie die folgende Methode, um Details einer Sammlung abzurufen:
opensea . get_collection ( 'your-collection-slug' )Verwenden Sie die folgende Methode, um Details zu einem bestimmten NFT zu erhalten:
opensea . get_nft ( '0xYourContractAddress' , '1' )Verwenden Sie die folgende Methode, um Ereignisse in Bezug auf eine bestimmte NFT in Bezug auf eine bestimmte NFT aufzulisten:
opensea . list_events_by_nft ( '0xYourContractAddress' , '1' )Verwenden Sie die folgende Methode, um NFTs aufzulisten, die einem bestimmten Konto gehören, die folgende Methode:
opensea . list_nfts_by_account ( '0xYourWalletAddress' )Um eine Sammlung zu verwalten, erstellen Sie eine Instanz der OpenSeAcollection -Klasse:
from nftpy import OpenSeaCollection
collection = OpenSeaCollection ( collection_name = 'your-collection-name' , api_key = 'your-api-key' )Um Details einer bestimmten Sammlung zu erhalten, verwenden Sie die folgende Methode:
details = collection . get_collection_details ()Verwenden Sie die folgende Methode, um alle NFTs in einer Sammlung aufzulisten:
nfts = collection . get_nfts ()Um eine Brieftasche zu verwalten, erstellen Sie eine Instanz der OpenEAWallet -Klasse:
from nftpy import OpenSeaWallet
wallet = OpenSeaWallet ( address = 'your-wallet-address' , api_key = 'your-api-key' )Verwenden Sie die folgende Methode, um das Gleichgewicht der Brieftasche zu überprüfen:
balance = wallet . get_balance ()Verwenden Sie die folgende Methode, um alle NFTs der Brieftasche abzurufen:
nfts = wallet . get_nfts ()Wir werden zunächst unsere Klasse mit den folgenden Argumenten erstellen:
Bitte beachten Sie : Wenn Sie die Kette definieren, sollte sie mit nftpy.rarible.rariblechain durchgeführt werden, da die API ein spezielles Format für die Kettendefinition erfordert.
from nftpy import Rarible , RaribleChain
rarible = Rarible ( api_key = 'your-rarible-api-key' , chain = RaribleChain . ETHEREUM )Verwenden Sie die folgende Methode, um Details eines bestimmten Elements nach seiner ID abzurufen:
rarible . get_item_by_id ( 'item_id' )Verwenden Sie die folgende Methode, um Details mehrerer Elemente nach ihren IDs abzurufen:
rarible . get_items_by_ids ([ 'item_id1' , 'item_id2' ])Verwenden Sie die folgende Methode, um die Lizenzinformationen für einen bestimmten Element nach seiner ID abzurufen:
rarible . get_item_royalties_by_id ( 'item_id' )Verwenden Sie die folgende Methode, um Elemente zu holen, die einer bestimmten Adresse gehören, die folgende Methode:
rarible . get_items_by_owner ( 'owner_address' )Verwenden Sie die folgende Methode, um eine Signatur für einen bestimmten Datensatz zu validieren:
rarible . validate_signature ( data = { 'your' : 'data' })Verwenden Sie die folgende Methode, um Eingabedaten zu erhalten, die für die Generierung einer Signatur erforderlich sind:
rarible . get_signature_input ( data = { 'your' : 'data' })Verwenden Sie die folgende Methode, um Daten für das seltenbare Protokoll zu codieren:
rarible . encode_data ( data = { 'your' : 'data' })Verwenden Sie die folgende Methode, um den USD -Wechselkurs für eine bestimmte Währung zu erhalten:
rarible . get_usd_rate ( 'currency' )Verwenden Sie die folgende Methode, um alle unterstützten Währungen abzurufen:
rarible . get_all_currencies ()Verwenden Sie die folgende Methode, um den Restbetrag eines bestimmten Benutzers in einer bestimmten Währung abzurufen:
rarible . get_user_balance ( 'user_address' , 'currency' )