Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8.0.1+hotfix.2 Testnet Release #3704

Merged
merged 21 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
982eaa6
Add paranet ual fixes
Jan 28, 2025
9269d74
Update README.md
BogBogdan Jan 28, 2025
8776001
Changed the condition for command sequence for get
ilijaMar Jan 29, 2025
aaf8496
Merge branch 'v8/develop' into v8/paranet-ual-fixes
zsculac Jan 30, 2025
0c7a2af
Merge branch 'v8/develop' into v8/paranet-ual-fixes
zsculac Jan 30, 2025
bffcc91
Merge branch 'v8/develop' into v8/develop
BogBogdan Jan 30, 2025
3b496cb
Merge branch 'v8/develop' into fix/changing-command-sequnce-condision…
Mihajlo-Pavlovic Jan 30, 2025
6a3ee90
Merge pull request #3697 from OriginTrail/fix/changing-command-sequnc…
Mihajlo-Pavlovic Jan 30, 2025
b0b025e
remov validation for publish paranet, its not supported
Mihajlo-Pavlovic Jan 31, 2025
33fa333
Adding character encoding after fetching data from triple store
ilijaMar Jan 31, 2025
310c5ab
Merge branch 'v8/develop' into fix/adding-utf-encoding
Mihajlo-Pavlovic Jan 31, 2025
11526ee
Merge pull request #3702 from OriginTrail/fix/adding-utf-encoding
Mihajlo-Pavlovic Jan 31, 2025
d99a3f5
Merge branch 'v8/develop' into v8/develop
Mihajlo-Pavlovic Jan 31, 2025
61ada2b
Merge pull request #3696 from BogBogdan/v8/develop
Mihajlo-Pavlovic Jan 31, 2025
0c85360
Merge branch 'v8/develop' into v8/paranet-ual-fixes
zsculac Jan 31, 2025
6fb7092
Version bump
Mihajlo-Pavlovic Jan 31, 2025
5bc3337
Update package-lock
Mihajlo-Pavlovic Jan 31, 2025
ef42ab7
Merge pull request #3695 from OriginTrail/v8/paranet-ual-fixes
Mihajlo-Pavlovic Jan 31, 2025
9b6021a
Merge branch 'v6/prerelease/testnet' into v8/develop
Mihajlo-Pavlovic Jan 31, 2025
4fcefb9
Merge pull request #3703 from OriginTrail/v8/develop
Mihajlo-Pavlovic Jan 31, 2025
48099c8
Merge branch 'v6/release/testnet' into v6/prerelease/testnet
Mihajlo-Pavlovic Jan 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading