diff --git a/mb-xrpl/lib/message-board.js b/mb-xrpl/lib/message-board.js index ee51116..4f6ba0f 100644 --- a/mb-xrpl/lib/message-board.js +++ b/mb-xrpl/lib/message-board.js @@ -113,7 +113,7 @@ class MessageBoard { // Expire the current lease agreement (Burn the instance NFT) and re-minting and creating sell offer for the same lease index. const nft = (await (new evernode.XrplAccount(x.tenant)).getNfts())?.find(n => n.TokenID == x.containerName); const uriInfo = evernode.UtilHelpers.decodeLeaseNftUri(nft.URI); - await this.destroyInstance(x.containerName, uriInfo.leaseIndex, this.cfg.xrpl.leaseAmount); + await this.destroyInstance(x.containerName, x.tenant, uriInfo.leaseIndex, this.cfg.xrpl.leaseAmount); await this.updateLeaseStatus(x.txHash, LeaseStatus.EXPIRED); console.log(`Destroyed ${x.containerName}`); } @@ -129,9 +129,9 @@ class MessageBoard { this.hostClient.on(evernode.HostEvents.ExtendLease, r => this.handleExtendLease(r)); } - async recreateLeaseOffer(nfTokenId, leaseIndex, leaseAmount) { + async recreateLeaseOffer(nfTokenId, tenantAddress, leaseIndex, leaseAmount) { // Burn the NFTs and recreate the offer and send back the lease amount back to the tenant. - await this.hostClient.expireLease(nfTokenId).catch(console.error); + await this.hostClient.expireLease(nfTokenId, tenantAddress).catch(console.error); await this.hostClient.offerLease(leaseIndex, leaseAmount, appenv.TOS_HASH).catch(console.error); } @@ -188,7 +188,7 @@ class MessageBoard { console.error(`Sashimono busy timeout. Took: ${diff} ledgers. Threshold: ${threshold}`); // Update the lease status of the request to 'SashiTimeout'. await this.updateAcquireStatus(acquireRefId, LeaseStatus.SASHI_TIMEOUT); - await this.recreateLeaseOffer(nfTokenId, leaseIndex, leaseAmount); + await this.recreateLeaseOffer(nfTokenId, tenantAddress, leaseIndex, leaseAmount); } else { const instanceRequirements = r.payload; @@ -202,7 +202,7 @@ class MessageBoard { console.error(`Instance creation timeout. Took: ${diff} ledgers. Threshold: ${threshold}`); // Update the lease status of the request to 'SashiTimeout'. await this.updateLeaseStatus(acquireRefId, LeaseStatus.SASHI_TIMEOUT); - await this.destroyInstance(createRes.content.name, leaseIndex, leaseAmount); + await this.destroyInstance(createRes.content.name, tenantAddress, leaseIndex, leaseAmount); } else { console.log(`Instance created for ${tenantAddress}`); @@ -229,7 +229,7 @@ class MessageBoard { // Re-create the lease offer (Only if the nft belongs to this request has a lease index). if (leaseIndex >= 0) - await this.recreateLeaseOffer(nfTokenId, leaseIndex, leaseAmount).catch(console.error); + await this.recreateLeaseOffer(nfTokenId, tenantAddress, leaseIndex, leaseAmount).catch(console.error); // Send error transaction with received leaseAmount. await this.hostClient.acquireError(acquireRefId, tenantAddress, leaseAmount, e.content || 'invalid_acquire_lease').catch(console.error); @@ -239,8 +239,8 @@ class MessageBoard { } } - async destroyInstance(containerName, leaseIndex, leaseAmount) { - await this.recreateLeaseOffer(containerName, leaseIndex, leaseAmount).catch(console.error); + async destroyInstance(containerName, tenantAddress, leaseIndex, leaseAmount) { + await this.recreateLeaseOffer(containerName, tenantAddress, leaseIndex, leaseAmount).catch(console.error); // Destroy the instance. await this.sashiCli.destroyInstance(containerName); } diff --git a/mb-xrpl/lib/setup.js b/mb-xrpl/lib/setup.js index 9b994a7..e02423c 100644 --- a/mb-xrpl/lib/setup.js +++ b/mb-xrpl/lib/setup.js @@ -258,7 +258,7 @@ class Setup { for (const instance of instances) { const nfTokenId = instance.container_name; - await xrplAcc.burnNft(nfTokenId); + await xrplAcc.burnNft(nfTokenId, instance.tenant_xrp_address); console.log(`Burnt sold hosting NFT (${nfTokenId}) of ${instance.tenant_xrp_address} tenant account`); } } diff --git a/mb-xrpl/package-lock.json b/mb-xrpl/package-lock.json index 6ac1e4c..851e269 100644 --- a/mb-xrpl/package-lock.json +++ b/mb-xrpl/package-lock.json @@ -772,9 +772,9 @@ "dev": true }, "evernode-js-client": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.4.24.tgz", - "integrity": "sha512-sRTr3bm94YyAU4R5+BpY1nwlHvXqpVgQIN0L3sjBv3XeP75IIwjshISWznvEZjUQV9DMbWIPjWlOUZit2X66ow==", + "version": "0.4.25", + "resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.4.25.tgz", + "integrity": "sha512-jlYYwuCRnEUtZ6QVDsjt2ZqYohVRJ8jF+wa0vbU0ZMQdGPlQU/+8gSam9rmANiOlgPawQ+6CNrb7rRQDvLYQ9A==", "requires": { "elliptic": "6.5.4", "ripple-address-codec": "4.2.0", diff --git a/mb-xrpl/package.json b/mb-xrpl/package.json index c467caf..6549bb4 100644 --- a/mb-xrpl/package.json +++ b/mb-xrpl/package.json @@ -5,7 +5,7 @@ "build": "npm run lint && ncc build app.js --minify -o dist" }, "dependencies": { - "evernode-js-client": "0.4.24", + "evernode-js-client": "0.4.25", "sqlite3": "5.0.2" }, "devDependencies": {