Files
xrpl-dev-portal/content/_code-samples/freeze/set-individual-freeze.js
2021-10-18 10:32:08 -07:00

86 lines
2.5 KiB
JavaScript

const xrpl = require('xrpl')
async function main() {
// Connect -------------------------------------------------------------------
const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233')
await client.connect()
client.on('error', (errorCode, errorMessage) => {
console.log(errorCode + ': ' + errorMessage)
})
// Get credentials from the Testnet Faucet ------------------------------------
console.log("Requesting an address from the Testnet faucet...")
const { wallet, balance } = await client.fundWallet()
// Look up current state of a trust line --------------------------------------
const issuing_address = wallet.address
const address_to_freeze = 'rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v'
const currency_to_freeze = 'USD'
const account_lines = {
command: 'account_lines',
account: issuing_address,
peer: address_to_freeze,
}
console.log('Looking up', currency_to_freeze, 'trust line from',
issuing_address, 'to', address_to_freeze)
const data = await client.request(account_lines)
const trustlines = data.result.lines
// Find the trust line for our currency_to_freeze ------------------------------
let trustline = null
for (let i = 0; i < trustlines.length; i++) {
if(trustlines[i].currency === currency_to_freeze) {
trustline = trustlines[i]
break
}
}
// Prepare a TrustSet transaction to create or modify the target trust line ----
let trust_set = null
if(trustline === null) {
console.log('Trustline not found, making a default one')
trust_set = {
TransactionType: 'TrustSet',
Account: issuing_address,
LimitAmount: {
value: '0',
currency: currency_to_freeze,
issuer: address_to_freeze,
},
}
} else {
console.log('Found existing trustline: ', trustline)
trust_set = {
TransactionType: 'TrustSet',
Account: issuing_address,
LimitAmount: {
value: trustline.limit,
currency: trustline.currency,
issuer: trustline.account
},
}
}
// Set a flag to freeze the trust line --------------------------------------------
trust_set.Flags = xrpl.TrustSetFlags.tfSetFreeze
// Submit a TrustSet transaction to set an individual freeze ----------------------
console.log('Submitting TrustSet tx:', trust_set)
const result = await client.submitReliable(wallet, trust_set)
console.log("Finished submitting. Now disconnecting.")
await client.disconnect()
//End main()
}
main().catch(console.error)