// ******************************************************* // ************* Create Conditional Escrow *************** // ******************************************************* async function createConditionalEscrow() { //------------------------------------------------------Connect to the Ledger let net = getNet() const client = new xrpl.Client(net) await client.connect() const wallet = xrpl.Wallet.fromSeed(accountSeedField.value) const sendAmount = amountField.value let results = `===Connected to ${net}===\n===Creating conditional escrow.===\n\n` resultField.value = results let escrow_cancel_date = new Date() escrow_cancel_date = addSeconds(parseInt(escrowCancelDateField.value)) // ------------------------------------------------------- Prepare transaction try { const escrowTx = await client.autofill({ TransactionType: 'EscrowCreate', Account: wallet.address, Amount: xrpl.xrpToDrops(sendAmount), Destination: destinationField.value, CancelAfter: escrow_cancel_date, Condition: escrowConditionField.value, }) // ------------------------------------------------ Sign prepared instructions const signed = wallet.sign(escrowTx) // -------------------------------------------------------- Submit signed blob const tx = await client.submitAndWait(signed.tx_blob) results = '\n=== *** Sequence Number (Save!): ' + tx.result.tx_json.Sequence results += '\n\n===Balance changes===\n' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2) xrpBalanceField.value = await client.getXrpBalance(wallet.address) resultField.value += results } catch (error) { results += '\n===Error: ' + error.message resultField.value = results } finally { // -------------------------------------------------------- Disconnect client.disconnect() } } // End of createTimeEscrow() // ******************************************************* // ************** Finish Conditional Escrow ************** // ******************************************************* async function finishConditionalEscrow() { let net = getNet() const client = new xrpl.Client(net) await client.connect() let results = `===Connected to ${net}===\n===Fulfilling conditional escrow.===\n` resultField.value = results const wallet = xrpl.Wallet.fromSeed(accountSeedField.value) try { // ------------------------------------------------------- Prepare transaction const prepared = await client.autofill({ TransactionType: 'EscrowFinish', Account: accountAddressField.value, Owner: escrowOwnerField.value, OfferSequence: parseInt(escrowSequenceNumberField.value), Condition: escrowConditionField.value, Fulfillment: escrowFulfillmentField.value, }) const signed = wallet.sign(prepared) const tx = await client.submitAndWait(signed.tx_blob) results += '\n===Balance changes===' + JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2) resultField.value = results xrpBalanceField.value = await client.getXrpBalance(wallet.address) } catch (error) { results += '\n===Error: ' + error.message + '.===\n' resultField.value = results } finally { // -------------------------------------------------------- Disconnect client.disconnect() } } // End of finisConditionalEscrow()