Klaytn’de Tatum-SDK nasıl kullanılır (Bölüm 1)
Tatum, geliştiricilerin web teknolojilerini oluşturmalarına ve projelerine entegre etmelerine olanak tanıyan, kullanımı kolay bir platform olan entegre bir araç ve SDK’dır. Tatum, hemen kullanılabilen ve kullanıcının tercih ettiği blok zincirine dağıtılabilen standart bir token akıllı sözleşmesi sağlar.Tek bir API çağrısı ile dağıtılabilir, böylece kullanıcıların ayrı bir sözleşme oluşturması ve dağıtması gerekmez. Bu kılavuzda, aşağıdakiler de dahil olmak üzere Tatum SDK’nın bazı akıllı sözleşme özelliklerini keşfedeceğiz:
- Değiştirilebilir Jeton (FT) (ERC20)
- Değiştirilemez Jeton (NFT) (ERC721)
- Çoklu Jeton (ERC1155)
- Mevcut sözleşme yöntemini çağırma
Bu öğreticiyi başarıyla tamamlamak için, Bölüm 1Tatum-js’yi zaten kurmuş ve dizinleri . Bu kılavuz, Tatum-SDK’nın Klaytn’de nasıl kullanılacağı ile devam ediyor.
Bu bölümde değişken belirteçler (ERC20), değişmez belirteç (ERC721) ve çoklu belirteç (ERC1155) ele alınacak ve Tatum SDK akıllı sözleşme işlevlerinden bazıları ele alınacaktır.
Ek olarak, mevcut adresi ve ABI’yi dikkate alarak mevcut sözleşme yöntemini çağırmanın yanı sıra, token sözleşmesi başına nane, aktarım ve yazma işlevlerini yürütmek için Tatum SDK’nın nasıl kullanılacağını ele alacağız.
BuradaBu özellikle ilgili daha fazla bilgi görmek için tıklayın.
Bir ERC20 Simgesi Oluşturun
Adım adım kılavuzu izlerseniz, gerekli parametreler sağlanırsa ERC20 Birkaç satır kodla belirteçleri dağıtabilir ve temel işlevleri çağırabilirsiniz.
ayar
- Mevcut proje dizininde gezinme
- Mevcut betikler klasörünü girin
- Kodu kaydetmek için yeni bir ‘erc20.js’ dosyası oluşturun
Tatum SDK’yı başlatma
Projenizde Tatum’da yerleşik olarak bulunan özellikleri kullanmak için SDK’yı API Anahtarınızla başlatmanız gerekir. API Anahtarınız yoksa, bu yerbir anahtar oluştur
import TatumKlaytnSDK from '@tatumio/klaytn'
const klaytnSDK = TatumKlaytnSDK( apiKey: '’ )
değişkeni ayarla
Aşağıdaki değişkenleri kopyalayıp yeni oluşturulan “erc20.js” dosyasına yapıştırın. Meta MaskeKullanıcının cüzdan adresini ve özel anahtarını ile aynı cüzdan altyapısına yapıştırabilir veya önceki Bölüm 1’de açıklandığı gibi Tatum SDK’yı kullanarak yeni bir tane oluşturabilirsiniz.
// This address will DEPLOY, MINT and TRANSFER ERC20 to Receiver Address
const senderAddress = ‘’const senderPrivateKey = ‘’
// This address will RECEIVE ERC20 token and BURN it
const receiverAddress = ‘’
const receiverPrivateKey = ‘’
referans : özel anahtarınızı kullanın
Bu oturumda kullanacağınız kod sadece test ve tanıtım amaçlıdır.
Ancak, gerçek bir işletim ortamında kullanıldığında, kullanıcının özel anahtarı ve anımsatıcı güvenlik sınırı içinde olmalıdır. Yani, komut satırında Tatum CLI’sıveya bir bileşik anahtar yönetim sistemi kullanarak; Tatum KMSCüzdanınızı düzgün ve güvenli bir şekilde yapılandırmanız ve özel anahtarınızla yönetmeniz önerilir.
A.) ERC-20 akıllı sözleşmesini devreye alın
Önceden oluşturulmuş bir ERC20 sözleşmesini Klaytn’de konuşlandırmak için ‘erc20.js’ dosyanızın kod parçasını yapıştırmanız gerekir. Yanıt, dağıtılan akıllı sözleşmenin adresinin türetilebileceği bir işlem kimliği içerir.
// deploys erc20 (fungible token) transactionconst erc20Deployed = await klaytnSDK.erc20.send.deploySignedTransaction(
symbol: 'MTK',
name: 'MyToken',
address: senderAddress,
supply: '10000',
fromPrivateKey: senderPrivateKey,
digits: 18,
)
console.log(`Here is the transaction id $erc20Deployed.txId`);
// This timer is used to ensure the transaction above is confirmed and added to the block
// In a real application, the wait mechanism must be implemented properly without using this.
setTimeout(() =>
getContractAddress(erc20Deployed.txId)
, 10000);
}
async function getContractAddress(erc20Deployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", erc20Deployed)
console.log(`Here is the contract address $transaction.contractAddress`);
erc20Deploy() async function erc20Deploy () {
async function erc20Deploy () {
İşlemin sonucunu kontrol etmek için aşağıdaki komutu yürütün.
node scripts/erc20.js
B.) Bu adrese bir belirteç verin
Yeni oluşturulan değişken bir belirteç, belirtilen bir blockchain adresine verilebilir. Yeni bir belirteç vermek için dağıttığınız ERC20 belirtecinin sözleşme adresini vermelisiniz. Yukarıdaki örnekten türetilen sözleşme adresini de kullanabilirsiniz.
Yanıt, işlem kimliğini ve “alıcının bakiyesini” içerir. Aşağıdaki kod parçacığını erc20.js dosyanıza yapıştırarak işlemi çalışırken görebilirsiniz.
async function erc20Minted(contractAddress)
// mint erc20(fungible token) to a specified addressconst erc20Mint = await klaytnSDK.erc20.send.mintSignedTransaction(
to: receiverAddress,
contractAddress: contractAddress,
amount: '1',
fromPrivateKey: senderPrivateKey,
)
console.log(`Minted erc20 token/s with txID $erc20Mint.txId`)
// This timer is used to ensure the transaction above is confirmed and added to the block
// In a real application, the wait mechanism must be implemented properly without using this.
setTimeout(() =>
getErc20Balance(receiverAddress, contractAddress)
, 10000);
async function getErc20Balance(address, contractAddress)
// gets the number of the fungible tokens minted on a specific smart contract that a blockchain address holds.
const erc20Balance = await klaytnSDK.erc20.getErc20AccountBalance("KLAY", address, contractAddress);
console.log(erc20Balance);
Const contractAddress = “”
erc20Minted(contractAddress)
Kullanıcının işlem kimliğini ve alıcının yeni basılan jeton bakiyesini kontrol etmek için aşağıdaki komutu çalıştırın.
node scripts/erc20.js
C.) ERC20 Jetonlarını Aktarma
`Aktar()Değişken belirteci belirtilen blockchain adresine aktarma yöntemi. yöntem. sözleşmeAdresi alanı, önceki örnekten türetilen adresle değiştirilebilir.
Aktarımı gerçekleştirdikten sonra Yanıt, işlem kimliğini ve ‘gönderenin’ bakiyesini içerir. Aşağıdaki kod parçasını erc20.js dosyanıza yapıştırarak gerçek işlemi kontrol edebilirsiniz.
async function er20Transferred(contractAddress)
// send erc20 (fungible token) transactionconst erc20Transfer = await klaytnSDK.erc20.send.transferSignedTransaction(
to: receiverAddress,
amount: '1',
contractAddress,
fromPrivateKey: senderPrivateKey,
digits: 18,
)
console.log(`Transferred erc20 token/s with txID $erc20Transfer.txId`)
// This timer is used to ensure the transaction above is confirmed and added to the block
// In a real application, the wait mechanism must be implemented properly without using this.
setTimeout(() =>
getErc20Balance(senderAddress, contractAddress)
, 10000);
er20Transferred(contractAddress)
Transferden sonra kullanıcının işlem kimliğini ve göndericinin bakiyesini kontrol etmek için lütfen aşağıdaki komutu uygulayın.
node scripts/erc20.js
D.) ERC20 Jetonlarının Yazılması
Değiştirilebilir bir jeton yakmak, akıllı sözleşmedeki belirli bir arzı azaltır. sözleşmeAdresi alanı, önceki örnekten türetilen adresle değiştirilebilir.
Yanıt, işlem kimliğini ve “alıcının belirteç yakma işleminden sonraki bakiyesini” içerir. Aşağıdaki kod parçacığını erc20.js dosyanıza yapıştırarak işlemi çalışırken görebilirsiniz.
async function erc20Burned(contractAddress)
// burn erc20 (fungible token) transactionconst erc20Burn = await klaytnSDK.erc20.send.burnSignedTransaction(
contractAddress: contractAddress,
amount: '1',
fromPrivateKey: receiverPrivateKey,
)
console.log(`Burned erc20 token/s with txID $erc20Burn.txId`)
// This timer is used to ensure the transaction above is confirmed and added to the block
// In a real application, the wait mechanism must be implemented properly without using this.
setTimeout(() =>
getErc20Balance(receiverAddress, contractAddress)
, 10000);
erc20Burned(contractAddress)
Belirteç yaktıktan sonra kullanıcının işlem kimliğini ve alıcının bakiyesini görüntülemek için lütfen aşağıdaki komutu çalıştırın.
node scripts/erc20.js
tam kod
import TatumKlaytnSDK from '@tatumio/klaytn'
const klaytnSDK = TatumKlaytnSDK( apiKey: '’ )// This address will DEPLOY, MINT and TRANSFER ERC20 to Receiver Address
const senderAddress = ‘’
const senderPrivateKey = ‘’
// This address will RECEIVE ERC20 token and BURN it
const receiverAddress = ‘’
const receiverPrivateKey = ‘’
async function erc20Deploy ()
// deploys erc20 (fungible token) transaction
const erc20Deployed = await klaytnSDK.erc20.send.deploySignedTransaction(
symbol: 'MTK',
name: 'MyToken',
address: senderAddress,
supply: '10000',
fromPrivateKey: senderPrivateKey,
digits: 18,
)
console.log(`Here is the transaction id $erc20Deployed.txId`);
setTimeout(() =>
getContractAddress(erc20Deployed.txId)
, 10000);
async function getContractAddress(erc20Deployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", erc20Deployed)
console.log(`Here is the contract address $transaction.contractAddress`);
async function er20Transferred(contractAddress)
// send erc20 (fungible token) transaction
const erc20Transfer = await klaytnSDK.erc20.send.transferSignedTransaction(
to: receiverAddress,
amount: '1',
contractAddress,
fromPrivateKey: senderPrivateKey,
digits: 18,
)
console.log(`Transferred erc20 token/s with txID $erc20Transfer.txId`)
setTimeout(() =>
getErc20Balance(senderAddress, contractAddress)
, 10000);
async function erc20Minted(contractAddress)
// mint erc20(fungible token) to a specified address
const erc20Mint = await klaytnSDK.erc20.send.mintSignedTransaction(
to: receiverAddress,
contractAddress: contractAddress,
amount: '1',
fromPrivateKey: senderPrivateKey,
)
console.log(`Minted erc20 token/s with txID $erc20Mint.txId`)
setTimeout(() =>
getErc20Balance(receiverAddress, contractAddress)
, 10000);
async function erc20Burned(contractAddress)
// burn erc20 (fungible token) transaction
const erc20Burn = await klaytnSDK.erc20.send.burnSignedTransaction(
contractAddress: contractAddress,
amount: '3',
fromPrivateKey: receiverPrivateKey,
)
console.log(`Burned erc20 token/s with txID $erc20Burn.txId`)
setTimeout(() =>
getErc20Balance(receiverAddress, contractAddress)
, 10000);
async function getErc20Balance(address,contractAddress)
// gets the number of the fungible tokens minted on a specific smart contract that a blockchain address holds.
const erc20Balance = await klaytnSDK.erc20.getErc20AccountBalance("KLAY", address, contractAddress);
console.log(erc20Balance);
const contractAddress = “”
erc20Deploy()
er20Transferred(contractAddress);
getErc20Balance(receiverAddress,contractAddress);
erc20Burned(contractAddress);
erc20Minted(contractAddress);
Bir ERC721 Simgesi Oluşturun
Adım adım kılavuzu takip ederseniz, gerekli parametreler girilirse ERC721 Birkaç satır kodla belirteçleri dağıtın ve temel işlevleri çağırın.
Bu bölümde şunları ele alacağız:
- ERC721 sözleşmesini dağıtın
- Tekli ve çoklu ERC721 belirteçleri verme
- NFT Token Meta Verilerinin Güvenliğini Sağlama
- NFT’leri aktarın
- NFT’leri yazma
İlk olarak, ‘ERC20 Simgesi Oluşturun’ bölümünde yaptığımız gibi Kodlar Klasörde yeni bir “erc721.js” dosyası oluşturun, Tatum SDK’yı başlatın ve değişkenleri ayarlayın.
Ardından, aşağıdaki kodu erc721.js dosyasına yapıştırın ve her işlevin sonucunu kontrol etmek için aşağıdaki komutu çalıştırın.
node scripts/erc721.js
A. NFT akıllı sözleşmesini dağıtın
Aşağıdaki kod parçacığı ile Klaytn blok zincirinde bir NFT akıllı sözleşmesi dağıtın. Dağıtılan NFT akıllı sözleşmeleri, NFT’lerin (bir seferde bir veya daha fazla) basılmasına, yazılmasına ve aktarılmasına olanak tanır.
async function erc721Deploy ()
// deploys erc721 (non-fungible token) transactionconst nftDeploy = await klaytnSDK.nft.send.deploySignedTransaction(
name: 'My NFT',
symbol: 'MNFT',
// your private key of the address that has coins
fromPrivateKey: senderPrivateKey,
)
console.log(`Here is the transaction id $nftDeploy.txId`);
setTimeout(() =>
getContractAddress(nftDeploy.txId)
, 10000);
async function getContractAddress(erc721Deployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", erc721Deployed)
console.log(`Here is the contract address $transaction.contractAddress`);
erc721Deploy()
sonuç
B. NFT yayınlama
Bir kod satırıyla, sözleşme adresinize ve Token Kimliğinize dayalı olarak Klaytn blok zincirinde yerel bir NFT düzenleyebilirsiniz.
referans: bu işlev kullanıcılar meta veri IPFS hash bilgisi gerekli. rehberAşağıdakileri izleyerek bir kullanıcının meta verilerini IPFS’ye yükleyebilirsiniz.
async function nftMint(contractAddress)
// Mint NFTs on your own smart contract// Put any number here. For a start 1
const tokenId = '';
const nftMinted = await klaytnSDK.nft.send.mintSignedTransaction(
chain: "KLAY",
tokenId,
contractAddress,
fromPrivateKey: senderPrivateKey,
to: senderAddress,
// uploaded metadata from ipfs
url: '’,
)
console.log(`Minted nft with txID: $nftMinted.txId`)
Const contractAddress = “”
nftMint(contractAddress)
sonuç
C. Birden fazla NFT düzenlemek
Aşağıdaki yöntemi kullanarak belirli bir blockchain adresine birden çok NFT belirteci verebilirsiniz.
async function nftMintBatch(contractAddress)
// Mint multiple NFTs on your own smart contractconst nftMinted = await klaytnSDK.nft.send.mintMultipleSignedTransaction(
chain: "KLAY",
tokenId: (“", ""),
contractAddress,
fromPrivateKey: senderPrivateKey,
to: (senderAddress, receiverAddress),
// uploaded metadata from ipfs
url: (“”, “PASTE IPFS HASH HERE”)
)
console.log(`Minted multiple nft with txID: $nftMinted.txId`)
sonuç
D. Çıkarılan tüm NFT’lerin koleksiyona alınması
async function getContractNftBalance(contractAddress)
// Get all minted NFTs in the collection. Returns all NFTs this contract minted.const nftAccountBalance = await klaytnSDK.nft.getNFTAccountBalance(
"KLAY",
senderAddress,
contractAddress,
)
console.log(`Nfts on $contractAddress:`, nftAccountBalance)
getContractNftBalance(contractAddress)
sonuç
E. NFT Token Meta Verilerinin Elde Edilmesi
async function getNFTMetadata(contractAddress, tokenId)
// Get NFT token metadataconst response = await klaytnSDK.nft.getNFTMetadataURI("KLAY", contractAddress, tokenId)
console.log(`Token metadata: $JSON.stringify(response)`)
Const tokenId = <”VALID TOKEN ID”>
getNFTMetadata(contractAddress, tokenId)
sonuç
F. NFT’lerin Aktarılması
Akıllı sözleşme adresine bağlı olarak NFT, akıllı sözleşmede belirtilen blok zinciri adresine aktarılır.
async function transferNFT(contractAddress, tokenId)
const nftTransferred = await klaytnSDK.nft.send.transferSignedTransaction(to: receiverAddress,
tokenId,
contractAddress,
fromPrivateKey: senderPrivateKey,
)
console.log(`Transferred nft with transaction hash: $nftTransferred.txId`)
transferNFT(contractAddress, tokenId)
Not: Gönderenin, o belirteç kimliğine bağlı bir NFT’si olmalıdır.
sonuç
G. NFT’leri Yazma
Yanmış NFT’yi kimsenin erişemeyeceği 0 adresine aktarın.
async function burnNFT(contractAddress, tokenId)
// Burn one NFT Token. This method destroys any NFT token from smart contract defined in contractAddress.const nftBurned = await klaytnSDK.nft.send.burnSignedTransaction(
tokenId,
contractAddress,
fromPrivateKey: receiverPrivateKey,
)
console.log(`NFT burn transaction sent with txID: $nftBurned.txId`)
burnNFT(contractAddress, tokenId)
Not: Alıcının, o belirteç kimliğine bağlı bir NFT’si olmalıdır.
sonuç
tam kod
import TatumKlaytnSDK from '@tatumio/klaytn'
const klaytnSDK = TatumKlaytnSDK( apiKey: '’ )// This address will DEPLOY, MINT and TRANSFER ERC20 to Receiver Address
const senderAddress = ‘’
const senderPrivateKey = ‘’
// This address will RECEIVE ERC20 token and BURN it
const receiverAddress = ‘’
const receiverPrivateKey = ‘’
async function erc721Deploy ()
// deploys erc721 (non fungible token) transaction
const nftDeploy = await klaytnSDK.nft.send.deploySignedTransaction(
name: 'My NFT',
symbol: 'MNFT',
// your private key of the address that has coins
fromPrivateKey: senderPrivateKey,
)
console.log(`Here is the transaction id $nftDeploy.txId`);
setTimeout(() =>
getContractAddress(nftDeploy.txId)
, 10000);
async function getContractAddress(erc721Deployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", erc721Deployed)
console.log(`Here is the contract address $transaction.contractAddress`);
async function nftMint(contractAddress)
// Mint NFTs on your own smart contract
// Put any number here. For a start 1
const tokenId = '';
const nftMinted = await klaytnSDK.nft.send.mintSignedTransaction(
chain: "KLAY",
tokenId,
contractAddress,
fromPrivateKey: senderPrivateKey,
to: senderAddress,
// uploaded metadata from ipfs
url: '’,
)
console.log(`Minted nft with txID: $nftMinted.txId`)
async function nftMintBatch(contractAddress)
// Mint multiple NFTs on your own smart contract
const nftMinted = await klaytnSDK.nft.send.mintMultipleSignedTransaction(
chain: "KLAY",
tokenId: (“", ""),
contractAddress,
fromPrivateKey: senderPrivateKey,
to: (senderAddress, receiverAddress),
// uploaded metadata from ipfs
url: (“”, “PASTE IPFS HASH HERE”)
)
console.log(`Minted multiple nft with txID: $nftMinted.txId`)
async function getContractNftBalance(contractAddress)
// Get all minted NFTs in the collection. Returns all NFTs this contract minted.
const nftAccountBalance = await klaytnSDK.nft.getNFTAccountBalance(
"KLAY",
senderAddress,
contractAddress,
)
console.log(`Nfts on $contractAddress:`, nftAccountBalance)
async function getNFTMetadata(contractAddress, tokenId)
// Get NFT token metadata
const response = await klaytnSDK.nft.getNFTMetadataURI("KLAY", contractAddress, tokenId)
console.log(`Token metadata: $JSON.stringify(response)`)
async function transferNFT(contractAddress, tokenId)
// Transfer an NFT from the smart contract (the contractAddress parameter in the request body) to the specified blockchain address (the to parameter in the request body).
const nftTransferred = await klaytnSDK.nft.send.transferSignedTransaction(
to: receiverAddress,
tokenId,
contractAddress,
fromPrivateKey: senderPrivateKey,
)
console.log(`Transferred nft with transaction hash: $nftTransferred.txId`)
async function burnNFT(contractAddress, tokenId)
// Burn one NFT Token. This method destroys any NFT token from smart contract defined in contractAddress.
const nftBurned = await klaytnSDK.nft.send.burnSignedTransaction(
tokenId,
contractAddress,
fromPrivateKey: receiverPrivateKey,
)
console.log(`NFT burn transaction sent with txID: $nftBurned.txId`)
const contractAddress = "";
const tokenId = "";
erc721Deploy();
nftMint(contractAddress);
nftMintBatch(contractAddress);
getContractNftBalance(contractAddress);
getNFTMetadata(contractAddress, tokenId);
transferNFT(contractAddress, tokenId);
burnNFT(contractAddress, tokenId);
ERC1155 Simgesi Oluşturun
Adım adım kılavuzu izlerseniz, Klaytn blok zinciri KIP37ERC1155 jetonlarını eşit olarak dağıtabilirsiniz. Ayrıca gerekli parametreler girilirse birkaç satır kod ile çekirdek fonksiyonlar çağrılabilir.
Bu bölüm, kullanıcıların şunları yapmasına izin verecektir:
- ERC1155 sözleşmesini dağıtın
- ERC1155 Jetonlarının Verilmesi
- Çoklu Jeton Transferi (MT)
- Çoklu Token Yazma (MT)
İlk olarak, ‘ERC20 Simgesi Oluşturun’ bölümünde yaptığımız gibi Kodlar Klasörde yeni bir “erc1155.js” dosyası oluşturun, Tatum SDK’yı başlatın ve değişkenleri ayarlayın.
Ardından, aşağıdaki kodu erc721.js dosyasına yapıştırın ve her işlevin sonucunu kontrol etmek için aşağıdaki komutu çalıştırın.
node scripts/erc1155.js
A. ERC1155 sözleşmesini dağıtın
Bu yöntemle, Klaytn blok zincirinde yeni bir ERC1155 akıllı sözleşmesi (çoklu tokenler için) oluşturulabilir. ERC1155 sözleşmesini dağıttıktan sonra belirteçler verilebilir, yakılabilir ve aktarılabilir.
async function erc1155Deploy ()
// deploys Multi token transactionconst multiTokenDeployed = await klaytnSDK.multiToken.send.deployMultiTokenTransaction(
// your private key of the address that has coins
fromPrivateKey: senderPrivateKey,
// uploaded metadata from ipfs
uri: 'ipfs://bafkreidinxo4cuds5ybcl72al5sywstc3m6i7lwmkz5wcdna7ccadjssm4',
)
console.log(`Deployed multi token with txID $multiTokenDeployed.txId`)
setTimeout(() =>
getContractAddress(multiTokenDeployed.txId)
, 10000);
async function getContractAddress(multiTokenDeployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", multiTokenDeployed)
console.log(`Here is the contract address $transaction.contractAddress`);
erc1155Deploy()
referans: bu fonksiyon kullanıcılar meta veri IPFS hash bilgisi gerekli. rehberAşağıdakileri izleyerek bir kullanıcının meta verilerini IPFS’ye yükleyebilirsiniz.
sonuç
B. Çoklu token yayınlama
Bu şekilde, belirlenmiş bir blok zinciri adresine belirli sayıda çoklu belirteç verebilirsiniz.
async function mintmultiToken(contractAddress)
// Paste a number lets say 1 const tokenId = ""
const multiTokenMinted = await klaytnSDK.multiToken.send.mintMultiTokenTransaction(
to: senderAddress,
tokenId,
amount: '1000',
fromPrivateKey: senderPrivateKey,
contractAddress,
)
console.log(`Multi Token mint transaction sent with txID: $multiTokenMinted.txId`)
const contractAddress = “”
mintmultiToken(contractAddress)
sonuç
C. Çoklu jeton transferi
Bir hesaptan diğerine belirli miktarda çoklu jeton aktarmak için bu yöntemi kullanabilirsiniz.
async function transferMT(contractAddress, tokenId)
// Transfer multi-token from the smart contract to the specified blockchain addressconst multiTokenTransferred = await klaytnSDK.multiToken.send.transferMultiTokenTransaction(
to: receiverAddress,
tokenId,
amount: '10',
fromPrivateKey: senderPrivateKey,
contractAddress,
)
console.log(`Sent Multi Token with txID: $multiTokenTransferred.txId`)
const tokenId=“”
transferMT(contractAddress, tokenId)
sonuç
D. Çoklu jetonları yakma
Bu şekilde, her kimlik için sabit sayıda çoklu belirteç yakılır. SözleşmeAdresi tarafından tanımlanan akıllı sözleşmeden çoklu belirteci silin.
async function burnMT(contractAddress, tokenId)
// Burn one multi-token. This method destroys any MT token from smart contract defined in contractAddress.const multiTokenBurned = await klaytnSDK.multiToken.send.burnMultiTokenTransaction(
tokenId,
amount: '1',
fromPrivateKey: receiverPrivateKey,
contractAddress,
account: receiverAddress,
)
console.log(`Burned Multi Token/s with txID: $multiTokenBurned.txId`)
burnMT(contractAddress, tokenId)
sonuç
tam kod
import TatumKlaytnSDK from '@tatumio/klaytn'
const klaytnSDK = TatumKlaytnSDK( apiKey: '’ )// This address will DEPLOY, MINT and TRANSFER ERC20 to Receiver Address
const senderAddress = ‘’
const senderPrivateKey = ‘’
// This address will RECEIVE ERC20 token and BURN it
const receiverAddress = ‘’
async function erc1155Deploy ()
// deploys Multi token transaction
const multiTokenDeployed = await klaytnSDK.multiToken.send.deployMultiTokenTransaction(
// your private key of the address that has coins
fromPrivateKey: senderPrivateKey,
// uploaded metadata from ipfs
uri: '’,
)
console.log(`Deployed multi token with txID $multiTokenDeployed.txId`)
setTimeout(() =>
getContractAddress(multiTokenDeployed.txId)
, 10000);
async function getContractAddress(multiTokenDeployed)
// fetch deployed contract address from transaction hash
const transaction = await klaytnSDK.blockchain.smartContractGetAddress("KLAY", multiTokenDeployed)
console.log(`Here is the contract address $transaction.contractAddress`);
async function mintmultiToken(contractAddress)
// Paste a number lets say 1
const tokenId = ""
const multiTokenMinted = await klaytnSDK.multiToken.send.mintMultiTokenTransaction(
to: senderAddress,
tokenId,
amount: '1000',
fromPrivateKey: senderPrivateKey,
contractAddress,
)
console.log(`Multi Token mint transaction sent with txID: $multiTokenMinted.txId`)
async function transferMT(contractAddress, tokenId)
// Transfer multi-token from the smart contract to the specified blockchain address
const multiTokenTransferred = await klaytnSDK.multiToken.send.transferMultiTokenTransaction(
to: receiverAddress,
tokenId,
amount: '10',
fromPrivateKey: senderPrivateKey,
contractAddress,
)
console.log(`Sent Multi Token with txID: $multiTokenTransferred.txId`)
async function burnMT(contractAddress, tokenId)
// Burn one multi-token. This method destroys any MT token from the smart contract defined in contractAddress.
const multiTokenBurned = await klaytnSDK.multiToken.send.burnMultiTokenTransaction(
tokenId,
amount: '1',
fromPrivateKey: receiverPrivateKey,
contractAddress,
account: receiverAddress,
)
console.log(`Burned Multi Token/s with txID: $multiTokenBurned.txId`)
const contractAddress = "0x5C128284F7846698134228e4a197664DE075AcDB";
const tokenId = "1"
erc1155Deploy();
mintmultiToken(contractAddress)
transferMT(contractAddress, tokenId);
burnMT(contractAddress, tokenId);
Klaytn’de akıllı sözleşme yöntemini çağırma
Bu bölüm, Klaytn’de mevcut bir akıllı sözleşmeyi yüklemek için Tatum SDK’nın nasıl kullanılacağını kapsar. Kapsamlı bir bakış açısıyla, Tatum-js, sözleşme adresi ve ABI’ya dayalı olarak önceden konuşlandırılmış sözleşme yöntemlerini yürütmek için kullanılabilir.
Kullanıcılar salt okunur veya yazmak yöntem çalıştırılabilir. Sadece oku Yöntem çağrılan yöntemin sonucunu gösterirken, yazmak Yöntem, işlem kimliği değerini gösterir.
ayar
- Mevcut proje dizininde gezinme
- Mevcut betikler klasörünü girin
- Kodu kaydetmek için yeni bir “invoke.js” dosyası oluşturun
Tatum SDK’yı başlatma
Projenizde Tatum’da yerleşik olarak bulunan özellikleri kullanmak için SDK’yı API Anahtarınızla başlatmanız gerekir. API Anahtarınız yoksa, bu yerbir anahtar oluştur
import TatumKlaytnSDK from '@tatumio/klaytn'
const klaytnSDK = TatumKlaytnSDK( apiKey: '’ )
değişkeni ayarla
Aşağıdaki değişkenleri kopyalayıp yeni oluşturulan ‘invoke.js’ dosyasına yapıştırın. Meta MaskeKullanıcının cüzdan adresini ve özel anahtarını ile aynı cüzdan altyapısına yapıştırabilir veya önceki Bölüm 1’de açıklandığı gibi Tatum SDK’yı kullanarak yeni bir tane oluşturabilirsiniz.
const senderPrivateKey = “”
hızlı başlangıç
Mevcut bir akıllı sözleşme yöntemini çağırmak için ilgili sözleşme adresini ve ABI’yı bilmeniz gerekir. Bu öğreticide mevcut bir banka sözleşmesini devreye aldığımız için, dengeyi sağlamak Ve Depozito tüm fonksiyonları arayacak. .
Banka sözleşmenizi dağıtmak için, bağlantıtıklayarak remikslütfen şuradan aç Sözleşme dağıtıldığında, Dağıtılan Sözleşmeler Sekmede, sözleşme adresi ve Remix IDE Sağlamlık Derleyici ABI’yi sekmeden kopyalayın.
Her işlevin sonucunu kontrol etmek için aşağıdaki komutu yürütün.
node scripts/invoke.js
A. Okuma yöntemi
Akıllı sözleşmenizde Read yöntemini çağırmak için aşağıdaki kod satırını kullanın.
async function readFromSmartContract ()
const address = “”// your previously deployed contract address
const contractAddress = “”
// smart contract read method
const data = await klaytnSDK.smartContract.send.smartContractReadMethodInvocationTransaction(
contractAddress: contractAddress,
methodABI:
"inputs": (
"internalType": "address",
"name": "_addr",
"type": "address"
),
"name": "getBalance",
"outputs": (
"internalType": "uint256",
"name": "",
"type": "uint256"
),
"stateMutability": "view",
"type": "function"
,
methodName: "getBalance",
params: (address)
)
console.log(`Smart contract data: $data.data`)
sonuç
B. Yazma yöntemi
Akıllı sözleşmenizde Yazma yöntemini çağırmak için aşağıdaki kod satırını kullanın.
async function invokeWriteMethod ()
// your previously deployed contract addressconst contractAddress = “”
// smart contract read method
const data = await klaytnSDK.smartContract.send.smartContractMethodInvocationTransaction(
amount: "2",
contractAddress: contractAddress,
methodABI:
"inputs": (),
"name": "deposit",
"outputs": (),
"stateMutability": "payable",
"type": "function"
,
methodName: "deposit",
fromPrivateKey: senderPrivateKey,
params: ()
)
console.log(`Smart contract tx id: $ data.txId `)
sonuç
tatumkendisini çoklu blok zincirleri için açık kaynaklı bir geliştirme platformu olarak konumlandırarak geliştiricileri çeşitli şekillerde destekler. Bu eğitimde, akıllı sözleşmelerin ve token sözleşmelerinin (ERC20, ERC721 ve ERC1155) nasıl kullanılacağını ve ayrıca Klaytn’de mevcut akıllı sözleşmelerin nasıl çağrılacağını gördük. Bu, kullanıcıların internet üzerinden hassas veriler göndermeden işlemleri güvenli bir şekilde imzalamasına ve yerel olarak yaymasına olanak tanır. Buna göre, özel anahtarlar ve anımsatıcılar işlenirken yüksek derecede güvenlik sağlanır.
Daha fazla bilgi için Klaytn BelgeleriVe tatumHerhangi bir sorunuz varsa lütfen bakın Klaytn Forumuaçık bırak
Ek olarak, Klaytn blok zincirindeki işlemleri güvenli bir şekilde imzalamak ve yaymak için, Tatum Anahtar Yönetim Sistemi(KMS)Lütfen bir bak.