Files
xrpl-dev-portal/content/_code-samples/nftoken-tester/js/nftoken-tester.html
Denis Angell b041b31057 NFT: Update Fields for v2.2.1 (#1400)
* update: 2.2.1

* fixup: nft field changes
2022-04-29 17:49:10 -07:00

421 lines
13 KiB
HTML

<html>
<head>
<script src='https://unpkg.com/xrpl@2.2.1/build/xrpl-latest-min.js'></script>
<script>
if (typeof module !== "undefined") var xrpl = require('xrpl')
//***************************
//** Mint Token *************
//***************************
async function mintToken() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Note that you must convert the token URL to a hexadecimal
// value for this transaction.
// ----------------------------------------------------------
const transactionBlob = {
TransactionType: "NFTokenMint",
Account: wallet.classicAddress,
URI: xrpl.convertStringToHex(tokenUrl.value),
Flags: parseInt(flags.value),
NFTokenTaxon: 0 //Required, but if you have no use for it, set to zero.
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
const nfts = await client.request({
method: "account_nfts",
account: wallet.classicAddress
})
console.log(nfts)
// Check transaction results -------------------------------------------------
console.log("Transaction result:", tx.result.meta.TransactionResult)
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
} //End of mintToken
//***************************
//** Get Tokens *************
//***************************
async function getTokens() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
const nfts = await client.request({
method: "account_nfts",
account: wallet.classicAddress
})
console.log(nfts)
client.disconnect()
} //End of getTokens
//***************************
//** Burn Token *************
//***************************
async function burnToken() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenBurn",
"Account": wallet.classicAddress,
"NFTokenID": tokenId.value
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
const nfts = await client.request({
method: "account_nfts",
account: wallet.classicAddress
})
console.log(nfts)
// Check transaction results -------------------------------------------------
console.log("Transaction result:", tx.result.meta.TransactionResult)
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
}
// End of burnToken()
//********************************
//** Create Sell Offer ***********
//********************************
async function createSellOffer() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenCreateOffer",
"Account": wallet.classicAddress,
"NFTokenID": tokenId.value,
"Amount": amount.value,
"Flags": parseInt(flags.value)
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})//AndWait
console.log("***Sell Offers***")
let nftSellOffers
try {
nftSellOffers = await client.request({
method: "nft_sell_offers",
nft_id:tokenId.value
})
} catch (err) {
console.log("No sell offers.")
}
console.log(JSON.stringify(nftSellOffers,null,2))
console.log("***Buy Offers***")
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: "nft_buy_offers",
nft_id:tokenId.value })
} catch (err) {
console.log("No buy offers.")
}
console.log(JSON.stringify(nftBuyOffers,null,2))
// Check transaction results -------------------------------------------------
console.log("Transaction result:",
JSON.stringify(tx.result.meta.TransactionResult, null, 2))
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
// End of createSellOffer()
}
//********************************
//** Create Buy Offer ***********
//********************************
async function createBuyOffer() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenCreateOffer",
"Account": wallet.classicAddress,
"Owner": owner.value,
"NFTokenID": tokenId.value,
"Amount": amount.value,
"Flags": parseInt(flags.value)
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
console.log("***Sell Offers***")
let nftSellOffers
try {
nftSellOffers = await client.request({
method: "nft_sell_offers",
nft_id: tokenId.value
})
} catch (err) {
console.log("No sell offers.")
}
console.log(JSON.stringify(nftSellOffers,null,2))
console.log("***Buy Offers***")
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: "nft_buy_offers",
nft_id: tokenId.value })
} catch (err) {
console.log("No buy offers.")
}
console.log(JSON.stringify(nftBuyOffers,null,2))
// Check transaction results -------------------------------------------------
console.log("Transaction result:",
JSON.stringify(tx.result.meta.TransactionResult, null, 2))
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
// End of createBuyOffer()
}
//***************************
//** Cancel Offer ***********
//***************************
async function cancelOffer() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
const tokenOfferID = tokenOfferIndex.value
const tokenOffers = [tokenOfferID]
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenCancelOffer",
"Account": wallet.classicAddress,
"NFTokenOffers": tokenOffers
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
console.log("***Sell Offers***")
let nftSellOffers
try {
nftSellOffers = await client.request({
method: "nft_sell_offers",
nft_id:tokenId.value
})
} catch (err) {
console.log("No sell offers.")
}
console.log(JSON.stringify(nftSellOffers,null,2))
console.log("***Buy Offers***")
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: "nft_buy_offers",
nft_id:tokenId.value })
} catch (err) {
console.log("No buy offers.")
}
console.log(JSON.stringify(nftBuyOffers,null,2))
// Check transaction results -------------------------------------------------
console.log("Transaction result:",
JSON.stringify(tx.result.meta.TransactionResult, null, 2))
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
// End of cancelOffer()
}
//***************************
//** Get Offers *************
//***************************
async function getOffers() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
console.log("***Sell Offers***")
let nftSellOffers
try {
nftSellOffers = await client.request({
method: "nft_sell_offers",
nft_id: tokenId.value
})
} catch (err) {
console.log("No sell offers.")
}
console.log(JSON.stringify(nftSellOffers,null,2))
console.log("***Buy Offers***")
let nftBuyOffers
try {
nftBuyOffers = await client.request({
method: "nft_buy_offers",
nft_id:tokenId.value })
} catch (err) {
console.log("No buy offers.")
}
console.log(JSON.stringify(nftBuyOffers,null,2))
client.disconnect()
// End of getOffers()
}
//***************************
//** Accept Sell Offer ******
//***************************
async function acceptSellOffer() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenAcceptOffer",
"Account": wallet.classicAddress,
"NFTokenSellOffer": tokenOfferIndex.value,
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
const nfts = await client.request({
method: "account_nfts",
account: wallet.classicAddress
})
console.log(JSON.stringify(nfts,null,2))
// Check transaction results -------------------------------------------------
console.log("Transaction result:",
JSON.stringify(tx.result.meta.TransactionResult, null, 2))
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
// End of acceptSellOffer()
}
//***************************
//** Accept Buy Offer ******
//***************************
async function acceptBuyOffer() {
const wallet = xrpl.Wallet.fromSeed(secret.value)
const client = new xrpl.Client("wss://xls20-sandbox.rippletest.net:51233")
await client.connect()
console.log("Connected to Sandbox")
// Prepare transaction -------------------------------------------------------
const transactionBlob = {
"TransactionType": "NFTokenAcceptOffer",
"Account": wallet.classicAddress,
"NFTokenBuyOffer": tokenOfferIndex.value
}
// Submit signed blob --------------------------------------------------------
const tx = await client.submitAndWait(transactionBlob,{wallet})
const nfts = await client.request({
method: "account_nfts",
account: wallet.classicAddress
})
console.log(JSON.stringify(nfts,null,2))
// Check transaction results -------------------------------------------------
console.log("Transaction result:",
JSON.stringify(tx.result.meta.TransactionResult, null, 2))
console.log("Balance changes:",
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2))
client.disconnect()
// End of submitTransaction()
}
</script>
<title>NFToken Tester</title>
</head>
<body>
<h1>NFToken Tester</h1>
<form id="theForm">
<p>
<button type="button" onClick="mintToken()">Mint Token</button>&nbsp;&nbsp;
<button type="button" onClick="getTokens()">Get Tokens</button>&nbsp;&nbsp;
<button type="button" onClick="burnToken()">Burn Token</button>&nbsp;&nbsp;
</p>
<p>
<button type="button" onClick="createSellOffer()">Create Sell Offer</button>&nbsp;&nbsp;
<button type="button" onClick="createBuyOffer()">Create Buy Offer</button>&nbsp;&nbsp;
<button type="button" onClick="getOffers()">Get Offers</button>
</p>
<p>
<button type="button" onClick="acceptSellOffer()">Accept Sell Offer</button>&nbsp;&nbsp;
<button type="button" onClick="acceptBuyOffer()">Accept Buy Offer</button>&nbsp;&nbsp;
<button type="button" onClick="cancelOffer()">Cancel Offer</button>&nbsp;&nbsp;
</p>
<table>
<tr>
<td align="right">Account</td>
<td><input type="text" id="account" value="" size="40" /></td>
</tr>
<tr>
<td align="right">Secret</td>
<td><input type="text" id="secret" value="" size="40" /></td>
</tr>
<tr>
<td align="right">Token URL</td>
<td><input type="text" id="tokenUrl"
value = "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf4dfuylqabf3oclgtqy55fbzdi" size="80"/>
</td>
</tr>
<tr>
<td align="right">Flags</td>
<td><input type="text" id="flags" value="1" size="10"/></td>
</tr>
<tr>
<td align="right">Token ID</td>
<td><input type="text" id="tokenId" value="" size="80"/></td>
</tr>
<tr>
<td align="right">Amount</td>
<td><input type="text" id="amount" value="1000000" size="20"/></td>
</tr>
<tr>
<td align="right">Token Offer Index</td>
<td><input type="text" id="tokenOfferIndex" value="" size="80"/></td>
</tr>
<tr>
<td align="right">Owner</td>
<td><input type="text" id="owner" value="" size="80"/></td>
</tr>
</table>
</form>
</body>
</html>