Skip to content

Commit

Permalink
Merge pull request #3704 from OriginTrail/v6/prerelease/testnet
Browse files Browse the repository at this point in the history
8.0.1+hotfix.2 Testnet Release
  • Loading branch information
Mihajlo-Pavlovic authored Jan 31, 2025
2 parents 71f1a4c + 48099c8 commit b813117
Show file tree
Hide file tree
Showing 13 changed files with 2,996 additions and 9,258 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ and paste the following content inside (save and close):
NODE_ENV=development
RPC_ENDPOINT_BC1=http://localhost:8545
RPC_ENDPOINT_BC2=http://localhost:9545
REPOSITORY_PASSWORD=
```

Run the Triple Store.
Expand Down
15 changes: 13 additions & 2 deletions ot-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -331,16 +331,27 @@ class OTNode {
continue;
}

const { blockchain, contract, knowledgeCollectionId } =
const { blockchain, contract, knowledgeCollectionId, knowledgeAssetId } =
ualService.resolveUAL(paranetUAL);

if (!knowledgeAssetId) {
this.logger.warn(
`Invalid paranet UAL: ${paranetUAL} . Knowledge asset token id is required!`,
);
continue;
}
if (!blockchainModuleManager.getImplementationNames().includes(blockchain)) {
this.logger.warn(
`Unable to initialize Paranet with id ${paranetUAL} because of unsupported blockchain implementation`,
);
continue;
}

const paranetId = paranetService.constructParanetId(contract, knowledgeCollectionId);
const paranetId = paranetService.constructParanetId(
contract,
knowledgeCollectionId,
knowledgeAssetId,
);
// eslint-disable-next-line no-await-in-loop
const paranetExists = await blockchainModuleManager.paranetExists(
blockchain,
Expand Down
12,051 changes: 2,910 additions & 9,141 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "origintrail_node",
"version": "8.0.1+hotfix.1",
"version": "8.0.1+hotfix.2",
"description": "OTNode V8",
"main": "index.js",
"type": "module",
Expand Down Expand Up @@ -81,7 +81,7 @@
"axios": "^1.6.0",
"cors": "^2.8.5",
"deep-extend": "^0.6.0",
"dkg-evm-module": "^8.0.1",
"dkg-evm-module": "^8.0.2",
"dotenv": "^16.0.1",
"ethers": "^5.7.2",
"express": "^4.18.1",
Expand Down
20 changes: 18 additions & 2 deletions src/commands/common/validate-asset-command.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,26 @@ class ValidateAssetCommand extends Command {
const {
blockchain: paranetBlockchain,
contract: paranetContract,
tokenId: paranetTokenId,
knowledgeCollectionId: paranetKnowledgeCollectionId,
knowledgeAssetId: paranetKnowledgeAssetId,
} = this.ualService.resolveUAL(paranetUAL);

paranetId = this.paranetService.constructParanetId(paranetContract, paranetTokenId);
if (!paranetKnowledgeAssetId) {
await this.handleError(
operationId,
blockchain,
`Invalid paranet UAL: ${paranetUAL} . Knowledge asset token id is required!`,
this.errorType,
true,
);
return Command.empty();
}

paranetId = this.paranetService.constructParanetId(
paranetContract,
paranetKnowledgeCollectionId,
paranetKnowledgeAssetId,
);
const paranetExists = await this.blockchainModuleManager.paranetExists(
paranetBlockchain,
paranetId,
Expand Down
12 changes: 11 additions & 1 deletion src/commands/paranet/start-paranet-sync-commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,20 @@ class StartParanetSyncCommands extends Command {
OPERATION_ID_STATUS.PARANET.PARANET_SYNC_START,
);

const { blockchain, contract, knowledgeCollectionId } =
const { blockchain, contract, knowledgeCollectionId, knowledgeAssetId } =
this.ualService.resolveUAL(paranetUAL);

if (!knowledgeAssetId) {
this.logger.error(
`Invalid paranet UAL: ${paranetUAL} . Knowledge asset token id is required!`,
);
return Command.empty();
}

const paranetId = this.paranetService.constructParanetId(
contract,
knowledgeCollectionId,
knowledgeAssetId,
);

const paranetMetadata = await this.blockchainModuleManager.getParanetMetadata(
Expand All @@ -42,6 +51,7 @@ class StartParanetSyncCommands extends Command {
blockchain,
contract,
knowledgeCollectionId,
knowledgeAssetId,
paranetUAL,
paranetId,
paranetMetadata,
Expand Down
6 changes: 3 additions & 3 deletions src/commands/protocols/get/sender/get-find-shard-command.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class GetFindShardCommand extends FindShardCommand {
getOperationCommandSequence(nodePartOfShard, commandData) {
const sequence = ['localGetCommand'];
sequence.push(
commandData.paranetNodesAccessPolicy === 'OPEN'
? 'networkGetCommand'
: 'curatedParanetNetworkGetCommand',
commandData.paranetNodesAccessPolicy === 'CURATED'
? 'curatedParanetNetworkGetCommand'
: 'networkGetCommand',
);
return sequence;
}
Expand Down
13 changes: 13 additions & 0 deletions src/commands/protocols/get/sender/get-validate-asset-command.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,20 @@ class GetValidateAssetCommand extends ValidateAssetCommand {
blockchain: paranetBlockchain,
contract: paranetContract,
knowledgeCollectionId: paranetKnowledgeCollectionId,
knowledgeAssetId: paranetKnowledgeAssetId,
} = this.ualService.resolveUAL(paranetUAL);

if (!paranetKnowledgeAssetId) {
await this.handleError(
operationId,
paranetBlockchain,
`Invalid paranet UAL: ${paranetUAL} . Knowledge asset token id is required!`,
this.errorType,
true,
);
return Command.empty();
}

const isParanetUAL = this.ualService.isUAL(paranetUAL);

if (!isParanetUAL) {
Expand All @@ -77,6 +89,7 @@ class GetValidateAssetCommand extends ValidateAssetCommand {
const paranetId = this.paranetService.constructParanetId(
paranetContract,
paranetKnowledgeCollectionId,
paranetKnowledgeAssetId,
);

const paranetExists = await this.blockchainModuleManager.paranetExists(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
import ValidateAssetCommand from '../../../common/validate-asset-command.js';
import Command from '../../../command.js';
import {
OPERATION_ID_STATUS,
ERROR_TYPE,
LOCAL_STORE_TYPES,
PARANET_ACCESS_POLICY,
} from '../../../../constants/constants.js';
import { OPERATION_ID_STATUS, ERROR_TYPE } from '../../../../constants/constants.js';

class PublishValidateAssetCommand extends ValidateAssetCommand {
constructor(ctx) {
Expand All @@ -28,13 +22,7 @@ class PublishValidateAssetCommand extends ValidateAssetCommand {
* @param command
*/
async execute(command) {
const {
operationId,
blockchain,
storeType = LOCAL_STORE_TYPES.TRIPLE,
paranetUAL,
datasetRoot,
} = command.data;
const { operationId, blockchain, datasetRoot } = command.data;

await this.operationIdService.updateOperationIdStatus(
operationId,
Expand Down Expand Up @@ -80,87 +68,6 @@ class PublishValidateAssetCommand extends ValidateAssetCommand {
);

let paranetId;
if (storeType === LOCAL_STORE_TYPES.TRIPLE_PARANET) {
try {
const {
blockchain: paranetBlockchain,
contract: paranetContract,
tokenId: paranetTokenId,
} = this.ualService.resolveUAL(paranetUAL);

paranetId = this.paranetService.constructParanetId(paranetContract, paranetTokenId);

this.operationIdService.emitChangeEvent(
OPERATION_ID_STATUS.PUBLISH.PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_START,
operationId,
blockchain,
);
const paranetExists = await this.blockchainModuleManager.paranetExists(
paranetBlockchain,
paranetId,
);
this.operationIdService.emitChangeEvent(
OPERATION_ID_STATUS.PUBLISH.PUBLISH_VALIDATE_ASSET_PARANET_EXISTS_END,
operationId,
blockchain,
);

if (!paranetExists) {
await this.handleError(
operationId,
blockchain,
`Paranet: ${paranetId} doesn't exist.`,
this.errorType,
);
return Command.empty();
}

this.operationIdService.emitChangeEvent(
OPERATION_ID_STATUS.PUBLISH
.PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_START,
operationId,
blockchain,
);
const nodesAccessPolicy = await this.blockchainModuleManager.getNodesAccessPolicy(
blockchain,
paranetId,
);
if (nodesAccessPolicy === PARANET_ACCESS_POLICY.CURATED) {
const identityId = await this.blockchainModuleManager.getIdentityId(blockchain);
const isCuratedNode = await this.blockchainModuleManager.isCuratedNode(
blockchain,
paranetId,
identityId,
);
if (!isCuratedNode) {
await this.handleError(
operationId,
blockchain,
`Node is not part of curated paranet ${paranetId} because node with id ${identityId} is not a curated node.`,
this.errorType,
);
return Command.empty();
}
} else {
await this.handleError(
operationId,
blockchain,
`Paranet ${paranetId} is not curated paranet.`,
this.errorType,
);
return Command.empty();
}
this.operationIdService.emitChangeEvent(
OPERATION_ID_STATUS.PUBLISH
.PUBLISH_VALIDATE_ASSET_NODES_ACCESS_POLICY_CHECK_END,
operationId,
blockchain,
);
} catch (error) {
await this.handleError(operationId, blockchain, error.message, this.errorType);
return Command.empty();
}
}

await this.operationIdService.updateOperationIdStatus(
operationId,
Expand Down
6 changes: 1 addition & 5 deletions src/modules/network/implementation/libp2p-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -486,17 +486,13 @@ class Libp2pService {

let stringifiedData = '';
// read data the data

try {
for await (const chunk of source) {

stringifiedData += chunk;

}
message.data = JSON.parse(stringifiedData);

} catch (error) {

// If data parsing fails, return invalid message response
return { message, valid: false, busy: false };
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ class OtBlazegraph extends OtTripleStore {
return decodedString;
}

utfConverter(input) {
return Buffer.from(input, 'binary').toString('utf8');
}

async _executeQuery(repository, query, mediaType) {
const result = await this.queryEngine.query(
query,
Expand All @@ -79,6 +83,8 @@ class OtBlazegraph extends OtTripleStore {
response = this.decodeUnicodeCodePoints(response);
}

response = this.utfConverter(response);

return response;
}

Expand Down
11 changes: 6 additions & 5 deletions src/service/paranet-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ class ParanetService {
}
}

constructParanetId(contract, tokenId) {
constructParanetId(contract, knowledgeCollectionId, knowledgeAssetId) {
return this.cryptoService.keccak256EncodePacked(
['address', 'uint256'],
[contract, tokenId],
['address', 'uint256', 'uint256'],
[contract, knowledgeCollectionId, knowledgeAssetId],
);
}

Expand All @@ -50,8 +50,9 @@ class ParanetService {
}

getParanetIdFromUAL(paranetUAL) {
const { contract, tokenId } = this.ualService.resolveUAL(paranetUAL);
return this.constructParanetId(contract, tokenId);
const { contract, knowledgeCollectionId, knowledgeAssetId } =
this.ualService.resolveUAL(paranetUAL);
return this.constructParanetId(contract, knowledgeCollectionId, knowledgeAssetId);
}
}

Expand Down
12 changes: 10 additions & 2 deletions src/service/ual-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,11 @@ class UALService {
if (!this.isContract(contract)) {
throw new Error(`Invalid contract format: ${contract}`);
}
return { blockchain: parts2[0] + parts2[1], contract, tokenId: Number(parts[1]) };
return {
blockchain: parts2[0] + parts2[1],
contract,
knowledgeCollectionId: Number(parts[1]),
};
}
if (parts2.length === 2) {
let blockchainWithId;
Expand All @@ -110,7 +114,11 @@ class UALService {
if (!this.isContract(contract)) {
throw new Error(`Invalid contract format: ${contract}`);
}
return { blockchain: blockchainWithId, contract, tokenId: Number(parts[1]) };
return {
blockchain: blockchainWithId,
contract,
knowledgeCollectionId: Number(parts[1]),
};
}
}

Expand Down

0 comments on commit b813117

Please sign in to comment.