mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-14 00:35:50 +00:00
325 lines
12 KiB
JavaScript
325 lines
12 KiB
JavaScript
// *******************************************************
|
|
// *******************************************************
|
|
// ************** Broker Transactions ********************
|
|
// *******************************************************
|
|
// *******************************************************
|
|
|
|
// *******************************************************
|
|
// *************** Broker Get Offers *********************
|
|
// *******************************************************
|
|
|
|
async function brGetOffers() {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + getNet() + '...'
|
|
brokerResultField.value = results
|
|
await client.connect()
|
|
results += '\nConnected. Getting offers...'
|
|
brokerResultField.value = results
|
|
|
|
results += '\n\n***Sell Offers***\n'
|
|
let nftSellOffers
|
|
try {
|
|
nftSellOffers = await client.request({
|
|
method: "nft_sell_offers",
|
|
nft_id: brokerTokenIdField.value
|
|
})
|
|
} catch (err) {
|
|
nftSellOffers = 'No sell offers.'
|
|
}
|
|
results += JSON.stringify(nftSellOffers,null,2)
|
|
brokerResultField.value = results
|
|
|
|
results += '\n\n***Buy Offers***\n'
|
|
let nftBuyOffers
|
|
try {
|
|
nftBuyOffers = await client.request({
|
|
method: "nft_buy_offers",
|
|
nft_id: brokerTokenIdField.value
|
|
})
|
|
} catch (err) {
|
|
nftBuyOffers = 'No buy offers.'
|
|
}
|
|
results += JSON.stringify(nftBuyOffers,null,2)
|
|
brokerResultField.value = results
|
|
client.disconnect()
|
|
}// End of brGetOffers()
|
|
|
|
// *******************************************************
|
|
// ******************* Broker Sale ***********************
|
|
// *******************************************************
|
|
|
|
async function brokerSale() {
|
|
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
|
|
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
|
|
const broker_wallet = xrpl.Wallet.fromSeed (brokerSeedField.value)
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + getNet() + '...'
|
|
brokerResultField.value = results
|
|
await client.connect()
|
|
results += '\nConnected. Brokering sale...'
|
|
brokerResultField.value = results
|
|
|
|
// Prepare transaction -------------------------------------------------------
|
|
const transactionBlob = {
|
|
"TransactionType": "NFTokenAcceptOffer",
|
|
"Account": broker_wallet.classicAddress,
|
|
"NFTokenSellOffer": brokerTokenSellOfferIndexField.value,
|
|
"NFTokenBuyOffer": brokerTokenBuyOfferIndexField.value,
|
|
"NFTokenBrokerFee": brokerBrokerFeeField.value
|
|
}
|
|
// Submit transaction --------------------------------------------------------
|
|
const tx = await client.submitAndWait(transactionBlob,{wallet: broker_wallet})
|
|
|
|
// Check transaction results -------------------------------------------------
|
|
results += "\n\nTransaction result:\n" +
|
|
JSON.stringify(tx.result.meta.TransactionResult, null, 2)
|
|
results += "\nBalance changes:\n" +
|
|
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
|
operationalBalanceField.value = (await client.getXrpBalance(operational_wallet.address))
|
|
standbyBalanceField.value = (await client.getXrpBalance(standby_wallet.address))
|
|
brokerBalanceField.value = (await client.getXrpBalance(broker_wallet.address))
|
|
brokerResultField.value = results
|
|
client.disconnect()
|
|
}// End of brokerSale()
|
|
|
|
// *******************************************************
|
|
// ************* Broker Cancel Offer ****************
|
|
// *******************************************************
|
|
|
|
async function brCancelOffer() {
|
|
const wallet = xrpl.Wallet.fromSeed(brokerSeedField.value)
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + getNet() + '...'
|
|
brokerResultField.value = results
|
|
await client.connect()
|
|
results += "\nConnected. Cancelling offer..."
|
|
brokerResultField.value = results
|
|
|
|
const tokenOfferIDs = [brokerTokenBuyOfferIndexField.value]
|
|
|
|
// Prepare transaction -------------------------------------------------------
|
|
const transactionBlob = {
|
|
"TransactionType": "NFTokenCancelOffer",
|
|
"Account": wallet.classicAddress,
|
|
"NFTokenOffers": tokenOfferIDs
|
|
}
|
|
// Submit transaction --------------------------------------------------------
|
|
const tx = await client.submitAndWait(transactionBlob,{wallet})
|
|
|
|
results += "\n\n***Sell Offers***\n"
|
|
let nftSellOffers
|
|
try {
|
|
nftSellOffers = await client.request({
|
|
method: "nft_sell_offers",
|
|
nft_id: brokerTokenBuyOfferIndexField.value
|
|
})
|
|
} catch (err) {
|
|
nftSellOffers = "No sell offers."
|
|
}
|
|
results += JSON.stringify(nftSellOffers,null,2)
|
|
results += "\n\n***Buy Offers***\n"
|
|
let nftBuyOffers
|
|
try {
|
|
nftBuyOffers = await client.request({
|
|
method: "nft_buy_offers",
|
|
nft_id: brokerTokenBuyOfferIndexField.value })
|
|
} catch (err) {
|
|
nftBuyOffers = "No buy offers."
|
|
}
|
|
results += JSON.stringify(nftBuyOffers,null,2)
|
|
|
|
// Check transaction results -------------------------------------------------
|
|
|
|
results += "\nTransaction result:\n" +
|
|
JSON.stringify(tx.result.meta.TransactionResult, null, 2)
|
|
results += "\nBalance changes:\n" +
|
|
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
|
brokerResultField.value = results
|
|
client.disconnect()
|
|
}// End of brCancelOffer()
|
|
|
|
// ***************************************************************************
|
|
// ************** Revised Functions ******************************************
|
|
// ***************************************************************************
|
|
|
|
// *******************************************************
|
|
// ************* Get Account *****************************
|
|
// *******************************************************
|
|
|
|
|
|
async function getAccount(type) {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + net + '....'
|
|
|
|
// This uses the default faucet for Testnet/Devnet
|
|
let faucetHost = null
|
|
|
|
if (type == 'standby') {
|
|
standbyResultField.value = results
|
|
}
|
|
if (type == 'operational') {
|
|
operationalResultField.value = results
|
|
}
|
|
if (type == 'broker') {
|
|
brokerResultField.value = results
|
|
}
|
|
await client.connect()
|
|
|
|
results += '\nConnected, funding wallet.'
|
|
if (type == 'standby') {
|
|
standbyResultField.value = results
|
|
}
|
|
if (type == 'operational') {
|
|
operationalResultField.value = results
|
|
}
|
|
if (type == 'broker') {
|
|
brokerResultField.value = results
|
|
}
|
|
|
|
// -----------------------------------Create and fund a test account wallet
|
|
const my_wallet = (await client.fundWallet(null, { faucetHost })).wallet
|
|
|
|
results += '\nGot a wallet.'
|
|
if (type == 'standby') {
|
|
standbyResultField.value = results
|
|
}
|
|
if (type == 'operational') {
|
|
operationalResultField.value = results
|
|
}
|
|
if (type == 'broker') {
|
|
brokerResultField.value = results
|
|
}
|
|
|
|
// -----------------------------------Get the current balance.
|
|
const my_balance = (await client.getXrpBalance(my_wallet.address))
|
|
|
|
if (type == 'standby') {
|
|
standbyAccountField.value = my_wallet.address
|
|
standbyBalanceField.value = (await client.getXrpBalance(my_wallet.address))
|
|
standbySeedField.value = my_wallet.seed
|
|
results += '\nStandby account created.'
|
|
standbyResultField.value = results
|
|
}
|
|
if (type == 'operational') {
|
|
operationalAccountField.value = my_wallet.address
|
|
operationalSeedField.value = my_wallet.seed
|
|
operationalBalanceField.value = (await client.getXrpBalance(my_wallet.address))
|
|
results += '\nOperational account created.'
|
|
operationalResultField.value = results
|
|
}
|
|
if (type == 'broker') {
|
|
brokerAccountField.value = my_wallet.address
|
|
brokerSeedField.value = my_wallet.seed
|
|
brokerBalanceField.value = (await client.getXrpBalance(my_wallet.address))
|
|
results += '\nBroker account created.'
|
|
brokerResultField.value = results
|
|
}
|
|
// --------------- Capture the seeds for accounts for ease of reload.
|
|
seeds.value = standbySeedField.value + '\n' + operationalSeedField.value + "\n" +
|
|
brokerSeedField.value
|
|
client.disconnect()
|
|
} // End of getAccount()
|
|
|
|
// *******************************************************
|
|
// ********** Get Accounts from Seeds ********************
|
|
// *******************************************************
|
|
|
|
async function getAccountsFromSeeds() {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + getNet() + '....'
|
|
standbyResultField.value = results
|
|
await client.connect()
|
|
results += '\nConnected, finding wallets.\n'
|
|
standbyResultField.value = results
|
|
|
|
// -----------------------------------Find the test account wallets
|
|
var lines = seeds.value.split('\n');
|
|
const standby_wallet = xrpl.Wallet.fromSeed(lines[0])
|
|
const operational_wallet = xrpl.Wallet.fromSeed(lines[1])
|
|
const broker_wallet = xrpl.Wallet.fromSeed(lines[2])
|
|
|
|
// -----------------------------------Get the current balance.
|
|
const standby_balance = (await client.getXrpBalance(standby_wallet.address))
|
|
const operational_balance = (await client.getXrpBalance(operational_wallet.address))
|
|
const broker_balance = (await client.getXrpBalance(broker_wallet.address))
|
|
|
|
standbyAccountField.value = standby_wallet.address
|
|
standbyPubKeyField.value = standby_wallet.publicKey
|
|
standbyPrivKeyField.value = standby_wallet.privateKey
|
|
standbySeedField.value = standby_wallet.seed
|
|
standbyBalanceField.value = (await client.getXrpBalance(standby_wallet.address))
|
|
|
|
operationalAccountField.value = operational_wallet.address
|
|
operationalPubKeyField.value = operational_wallet.publicKey
|
|
operationalPrivKeyField.value = operational_wallet.privateKey
|
|
operationalSeedField.value = operational_wallet.seed
|
|
operationalBalanceField.value = (await client.getXrpBalance(operational_wallet.address))
|
|
|
|
brokerAccountField.value = broker_wallet.address
|
|
brokerPubKeyField.value = broker_wallet.publicKey
|
|
brokerPrivKeyField.value = broker_wallet.privateKey
|
|
brokerSeedField.value = broker_wallet.seed
|
|
brokerBalanceField.value = (await client.getXrpBalance(broker_wallet.address))
|
|
|
|
client.disconnect()
|
|
getBalances()
|
|
} // End of getAccountsFromSeeds()
|
|
|
|
// *******************************************************
|
|
// ****************** Get Balances ***********************
|
|
// *******************************************************
|
|
|
|
async function getBalances() {
|
|
let net = getNet()
|
|
const client = new xrpl.Client(net)
|
|
results = 'Connecting to ' + getNet() + '....'
|
|
standbyResultField.value = results
|
|
|
|
await client.connect()
|
|
|
|
results += '\nConnected.'
|
|
standbyResultField.value = results
|
|
|
|
const standby_wallet = xrpl.Wallet.fromSeed(standbySeedField.value)
|
|
const operational_wallet = xrpl.Wallet.fromSeed(operationalSeedField.value)
|
|
const broker_wallet = xrpl.Wallet.fromSeed(brokerSeedField.value)
|
|
|
|
results = "\nGetting standby account balances...\n"
|
|
const standby_balances = await client.request({
|
|
command: "gateway_balances",
|
|
account: standby_wallet.address,
|
|
ledger_index: "validated",
|
|
hotwallet: [operational_wallet.address]
|
|
})
|
|
results += JSON.stringify(standby_balances.result, null, 2)
|
|
standbyResultField.value = results
|
|
|
|
results= "\nGetting operational account balances...\n"
|
|
const operational_balances = await client.request({
|
|
command: "account_lines",
|
|
account: operational_wallet.address,
|
|
ledger_index: "validated"
|
|
})
|
|
results += JSON.stringify(operational_balances.result, null, 2)
|
|
operationalResultField.value = results
|
|
|
|
results= "\nGetting broker account balances...\n"
|
|
const broker_balances = await client.request({
|
|
command: "account_lines",
|
|
account: broker_wallet.address,
|
|
ledger_index: "validated"
|
|
})
|
|
results += JSON.stringify(broker_balances.result, null, 2)
|
|
brokerResultField.value = results
|
|
|
|
operationalBalanceField.value = (await client.getXrpBalance(operational_wallet.address))
|
|
standbyBalanceField.value = (await client.getXrpBalance(standby_wallet.address))
|
|
brokerBalanceField.value = (await client.getXrpBalance(broker_wallet.address))
|
|
|
|
client.disconnect()
|
|
} // End of getBalances()
|