diff --git a/package-lock.json b/package-lock.json index f236d1d9..c62a6b21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dkg.js", - "version": "8.2.3", + "version": "8.2.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dkg.js", - "version": "8.2.3", + "version": "8.2.4", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index febbe4d1..3999db55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dkg.js", - "version": "8.2.3", + "version": "8.2.4", "description": "Javascript library for interaction with the OriginTrail Decentralized Knowledge Graph", "main": "index.js", "exports": { diff --git a/services/blockchain-service/blockchain-service-base.js b/services/blockchain-service/blockchain-service-base.js index f8936b1a..662c4e3a 100644 --- a/services/blockchain-service/blockchain-service-base.js +++ b/services/blockchain-service/blockchain-service-base.js @@ -510,6 +510,25 @@ export default class BlockchainServiceBase { if (requestData?.paymaster && requestData?.paymaster !== ZERO_ADDRESS) { // Handle the case when payer is passed } else { + const senderBalance = await this.callContractFunction( + 'Token', + 'balanceOf', + [sender], + blockchain, + ); + + if (BigInt(senderBalance) < BigInt(requestData.tokenAmount)) { + const balance = Number(senderBalance) / 1e18; + const required = Number(requestData.tokenAmount) / 1e18; + + throw new Error( + `Insufficient TRAC token balance to publish. ` + + `Wallet ${sender} has ${balance} TRAC, ` + + `but the publish operation requires ${required} TRAC. ` + + `Please fund your wallet with more TRAC tokens to proceed.`, + ); + } + await this.increaseKnowledgeCollectionAllowance( sender, requestData.tokenAmount,