Paket Python yang dirancang untuk memfasilitasi integrasi dan adopsi token NFT (ERC721, ERC1155) dalam aplikasi perangkat lunak.
Dalam 1.2.2a1, kelas output terintegrasi tetapi semua fungsi mengembalikan mentah
NFTPY memungkinkan interaksi dengan Ethereum Virtual Machine (EVM) melalui RPC untuk mengambil rincian kontrak dan pemegang token. Ini menyediakan jalur komunikasi langsung antara klien dan blockchain. Saat ini, metode transaksional tidak didukung tetapi akan diimplementasikan dalam pembaruan mendatang. Metode berikut tersedia:
NFTPY mencakup fitur komprehensif untuk berinteraksi dengan dompet Ethereum, termasuk saldo kueri, mengambil harga gas, dan mentransfer NFT. Antarmuka dompet mendukung operasi hanya baca dan transaksional.
Fitur Dompet:
NFTPY termasuk antarmuka bawaan untuk berinteraksi dengan OpenSea melalui kunci API. Hal ini memungkinkan kueri dalam paket untuk OpenSea, memungkinkan akses ke informasi harga dan data khusus OpenSea lainnya. Antarmuka OpenSea dapat dikonfigurasi untuk fokus pada satu koleksi atau permintaan beberapa koleksi. Metode yang tersedia meliputi:
Kelas OpenSea:
Kelas OpenSeacollection:
Kelas OpenSeWallet:
NFTPY mencakup antarmuka yang komprehensif untuk berinteraksi dengan RAUBLE melalui kunci API. Hal ini memungkinkan kueri dalam paket agar dapat dijelaskan, memungkinkan akses ke informasi NFT, data pasar, dan banyak lagi. Metode yang tersedia meliputi:
Kelas Rangka:
NFTPY memungkinkan pembuatan rantai khusus dengan ID rantai spesifik, URL RPC, URL penjelajah, dan nama. Fitur ini meningkatkan fleksibilitas dengan memungkinkan penambahan jaringan blockchain yang tidak ditentukan sebelumnya di perpustakaan.
Membuat rantai khusus:
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
)Menggunakan nftpy.evm.nft kita akan menanyakan koleksi NFT Pixelmon di Ethereum Mainnet! Kami pertama -tama akan memulai dengan membuat kelas kami. Kami akan mendefinisikan kelas kami dengan tiga argumen:
import nftpy . EVM as EVM
Pixelmon = EVM . NFT ( "0x32973908FaeE0Bf825A343000fE412ebE56F802A" , abi = EVM . ABI . ERC721 , network = EVM . Chains . ETH )
# Contract Address ABI Network To Query (Ethereum)Sekarang kami telah membuat objek NFT kami, kami dapat menanyakannya. Kami akan mulai dengan mendapatkan metadata token. Saya hanya menempatkan token acak sebagai argumen.
print ( Pixelmon . get_token_metadata ( 5580 ))Setelah menjalankan ini kita harus melihat output menyerupai ini
{
"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 "
}
Kami dapat melakukan lebih banyak hal dengan ini. Misalnya:
print ( Pixelmon . get_token_uri ( 5580 ))
print ( Pixelmon . get_owner ( 5580 ))
print ( Pixelmon . get_balance ( "0x5AF7875766D1a50d144DF63E581c0764f6573487" ))
print ( Pixelmon . get_approved ( 5580 ))Untuk token ERC1155, Anda dapat meminta saldo untuk beberapa token ID dan memeriksa persetujuan:
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 } ' ) Membuat instance NFTWallet memerlukan kunci pribadi untuk akses penuh atau hanya alamat untuk akses hanya baca. Anda juga dapat menentukan beberapa rantai untuk terhubung ke berbagai jaringan secara bersamaan.
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'} Setelah kami mendapatkan hash transaksi, kami dapat memiliki penundaan program sampai proses transaksi di blockchain.
# 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 Saat menggunakan alamat hanya baca (yaitu, hanya memberikan alamat dan bukan kunci pribadi), Anda masih dapat berinteraksi dengan blockchain untuk meminta informasi, tetapi Anda tidak akan dapat melakukan transaksi. Ini berguna untuk memantau dompet dan mengambil data tanpa perlu kredensial sensitif.
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}Pertama -tama kita akan mulai dengan membuat kelas kami dengan argumen berikut:
Harap dicatat : Saat mendefinisikan rantai, itu harus dilakukan dengan nftpy.OpenSea.OpenSeaChain sebagai API memerlukan format khusus untuk definisi rantai.
from nftpy import OpenSea , OpenSeaChain
opensea = OpenSea ( api_key = 'your-opensea-api-key' , chain = OpenSeaChain . POLYGON )Untuk menanyakan statistik koleksi NFT, gunakan metode berikut:
opensea . get_collection_stats ( 'your-collection-slug' )Setelah menjalankan itu, kita harus melihat output menyerupai ini:
{
"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
}
}Untuk mengambil detail koleksi, gunakan metode berikut:
opensea . get_collection ( 'your-collection-slug' )Untuk mendapatkan detail NFT tertentu, gunakan metode berikut:
opensea . get_nft ( '0xYourContractAddress' , '1' )Untuk membuat daftar acara yang terkait dengan NFT tertentu, gunakan metode berikut:
opensea . list_events_by_nft ( '0xYourContractAddress' , '1' )Untuk mendaftar NFT yang dimiliki oleh akun tertentu, gunakan metode berikut:
opensea . list_nfts_by_account ( '0xYourWalletAddress' )Untuk mengelola koleksi, buat contoh kelas OpenSeacollection :
from nftpy import OpenSeaCollection
collection = OpenSeaCollection ( collection_name = 'your-collection-name' , api_key = 'your-api-key' )Untuk mendapatkan detail koleksi tertentu, gunakan metode berikut:
details = collection . get_collection_details ()Untuk mendaftar semua NFT dalam koleksi, gunakan metode berikut:
nfts = collection . get_nfts ()Untuk mengelola dompet, buat contoh kelas OpenSeAwallet :
from nftpy import OpenSeaWallet
wallet = OpenSeaWallet ( address = 'your-wallet-address' , api_key = 'your-api-key' )Untuk memeriksa keseimbangan dompet, gunakan metode berikut:
balance = wallet . get_balance ()Untuk mengambil semua NFT yang dimiliki oleh dompet, gunakan metode berikut:
nfts = wallet . get_nfts ()Pertama -tama kita akan mulai dengan membuat kelas kami dengan argumen berikut:
Harap dicatat : Saat mendefinisikan rantai, itu harus dilakukan dengan nftpy.rarible.rariblechain sebagai API memerlukan format khusus untuk definisi rantai.
from nftpy import Rarible , RaribleChain
rarible = Rarible ( api_key = 'your-rarible-api-key' , chain = RaribleChain . ETHEREUM )Untuk mengambil detail item tertentu dengan ID -nya, gunakan metode berikut:
rarible . get_item_by_id ( 'item_id' )Untuk mengambil detail beberapa item dengan ID mereka, gunakan metode berikut:
rarible . get_items_by_ids ([ 'item_id1' , 'item_id2' ])Untuk mengambil informasi royalti untuk item tertentu dengan ID -nya, gunakan metode berikut:
rarible . get_item_royalties_by_id ( 'item_id' )Untuk mengambil item yang dimiliki oleh alamat tertentu, gunakan metode berikut:
rarible . get_items_by_owner ( 'owner_address' )Untuk memvalidasi tanda tangan untuk set data yang diberikan, gunakan metode berikut:
rarible . validate_signature ( data = { 'your' : 'data' })Untuk mendapatkan data input yang diperlukan untuk menghasilkan tanda tangan, gunakan metode berikut:
rarible . get_signature_input ( data = { 'your' : 'data' })Untuk menyandikan data untuk protokol yang langka, gunakan metode berikut:
rarible . encode_data ( data = { 'your' : 'data' })Untuk mendapatkan nilai tukar USD untuk mata uang tertentu, gunakan metode berikut:
rarible . get_usd_rate ( 'currency' )Untuk mengambil semua mata uang yang didukung, gunakan metode berikut:
rarible . get_all_currencies ()Untuk mengambil saldo pengguna tertentu dalam mata uang yang ditentukan, gunakan metode berikut:
rarible . get_user_balance ( 'user_address' , 'currency' )