mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 11:45:50 +00:00
421 lines
13 KiB
HTML
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>
|
|
<button type="button" onClick="getTokens()">Get Tokens</button>
|
|
<button type="button" onClick="burnToken()">Burn Token</button>
|
|
</p>
|
|
<p>
|
|
<button type="button" onClick="createSellOffer()">Create Sell Offer</button>
|
|
<button type="button" onClick="createBuyOffer()">Create Buy Offer</button>
|
|
<button type="button" onClick="getOffers()">Get Offers</button>
|
|
</p>
|
|
<p>
|
|
<button type="button" onClick="acceptSellOffer()">Accept Sell Offer</button>
|
|
<button type="button" onClick="acceptBuyOffer()">Accept Buy Offer</button>
|
|
<button type="button" onClick="cancelOffer()">Cancel Offer</button>
|
|
</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>
|