mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 11:45:50 +00:00
86 lines
2.5 KiB
JavaScript
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)
|