dkg 8.0.0a3__py3-none-any.whl → 8.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dkg/__init__.py +1 -1
- dkg/assertion.py +2 -2
- dkg/clients/__init__.py +4 -0
- dkg/clients/async_dkg.py +109 -0
- dkg/{main.py → clients/dkg.py} +42 -21
- dkg/constants.py +117 -6
- dkg/data/interfaces/AskStorage.json +366 -0
- dkg/data/interfaces/Chronos.json +202 -0
- dkg/data/interfaces/Hub.json +294 -2
- dkg/data/interfaces/IdentityStorage.json +58 -0
- dkg/data/interfaces/{ContentAsset.json → KnowledgeCollection.json} +256 -343
- dkg/data/interfaces/KnowledgeCollectionStorage.json +2312 -0
- dkg/data/interfaces/Paranet.json +30 -214
- dkg/data/interfaces/ParanetIncentivesPoolFactory.json +18 -2
- dkg/data/interfaces/ParanetKnowledgeMinersRegistry.json +20 -4
- dkg/data/interfaces/{ParanetNeurowebIncentivesPool.json → ParanetNeuroIncentivesPool.json} +7 -7
- dkg/data/interfaces/ParanetsRegistry.json +102 -32
- dkg/data/interfaces/Token.json +146 -17
- dkg/managers/__init__.py +0 -0
- dkg/managers/async_manager.py +69 -0
- dkg/{manager.py → managers/manager.py} +5 -3
- dkg/method.py +5 -2
- dkg/modules/__init__.py +0 -0
- dkg/modules/asset/__init__.py +0 -0
- dkg/modules/asset/asset.py +739 -0
- dkg/modules/asset/async_asset.py +753 -0
- dkg/modules/async_module.py +66 -0
- dkg/modules/graph/__init__.py +0 -0
- dkg/modules/graph/async_graph.py +112 -0
- dkg/modules/graph/graph.py +87 -0
- dkg/{module.py → modules/module.py} +1 -1
- dkg/modules/network/__init__.py +0 -0
- dkg/{network.py → modules/network/network.py} +4 -4
- dkg/modules/node/__init__.py +0 -0
- dkg/modules/node/async_node.py +39 -0
- dkg/{node.py → modules/node/node.py} +2 -2
- dkg/modules/paranet/__init__.py +0 -0
- dkg/{paranet.py → modules/paranet/paranet.py} +2 -6
- dkg/providers/__init__.py +9 -2
- dkg/providers/blockchain/__init__.py +4 -0
- dkg/providers/blockchain/async_blockchain.py +245 -0
- dkg/providers/blockchain/base_blockchain.py +102 -0
- dkg/providers/{blockchain.py → blockchain/blockchain.py} +15 -96
- dkg/providers/node/__init__.py +4 -0
- dkg/providers/node/async_node_http.py +72 -0
- dkg/providers/node/base_node_http.py +25 -0
- dkg/providers/{node_http.py → node/node_http.py} +12 -10
- dkg/services/__init__.py +0 -0
- dkg/services/blockchain_services/__init__.py +0 -0
- dkg/services/blockchain_services/async_blockchain_service.py +180 -0
- dkg/services/blockchain_services/blockchain_service.py +174 -0
- dkg/services/input_service.py +181 -0
- dkg/services/node_services/__init__.py +0 -0
- dkg/services/node_services/async_node_service.py +184 -0
- dkg/services/node_services/node_service.py +167 -0
- dkg/types/__init__.py +11 -11
- dkg/utils/blockchain_request.py +76 -50
- dkg/utils/knowledge_asset_tools.py +5 -0
- dkg/utils/knowledge_collection_tools.py +248 -0
- dkg/utils/node_request.py +60 -14
- dkg/utils/rdf.py +9 -3
- {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/METADATA +28 -19
- dkg-8.0.2.dist-info/RECORD +82 -0
- {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/WHEEL +1 -1
- dkg/asset.py +0 -912
- dkg/data/interfaces/AssertionStorage.json +0 -229
- dkg/data/interfaces/ContentAssetStorage.json +0 -706
- dkg/data/interfaces/ServiceAgreementStorageProxy.json +0 -1314
- dkg/graph.py +0 -63
- dkg-8.0.0a3.dist-info/RECORD +0 -52
- {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/LICENSE +0 -0
- {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/NOTICE +0 -0
dkg/__init__.py
CHANGED
dkg/assertion.py
CHANGED
@@ -17,8 +17,8 @@
|
|
17
17
|
|
18
18
|
from typing import Literal
|
19
19
|
|
20
|
-
from dkg.manager import DefaultRequestManager
|
21
|
-
from dkg.module import Module
|
20
|
+
from dkg.managers.manager import DefaultRequestManager
|
21
|
+
from dkg.modules.module import Module
|
22
22
|
from dkg.types import JSONLD, HexStr
|
23
23
|
from dkg.utils.merkle import MerkleTree, hash_assertion_with_indexes
|
24
24
|
from dkg.utils.metadata import generate_assertion_metadata
|
dkg/clients/__init__.py
ADDED
dkg/clients/async_dkg.py
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
3
|
+
# distributed with this work for additional information
|
4
|
+
# regarding copyright ownership. The ASF licenses this file
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
6
|
+
# "License"); you may not use this file except in compliance
|
7
|
+
# with the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
from functools import wraps
|
19
|
+
|
20
|
+
|
21
|
+
from dkg.modules.asset.async_asset import AsyncKnowledgeAsset
|
22
|
+
from dkg.modules.graph.async_graph import AsyncGraph
|
23
|
+
from dkg.managers.async_manager import AsyncRequestManager
|
24
|
+
from dkg.modules.async_module import AsyncModule
|
25
|
+
from dkg.modules.node.async_node import AsyncNode
|
26
|
+
from dkg.types import UAL, Address, ChecksumAddress
|
27
|
+
from dkg.utils.ual import format_ual, parse_ual
|
28
|
+
from dkg.services.input_service import InputService
|
29
|
+
from dkg.providers.blockchain.async_blockchain import AsyncBlockchainProvider
|
30
|
+
from dkg.providers.node.async_node_http import AsyncNodeHTTPProvider
|
31
|
+
from dkg.services.node_services.async_node_service import AsyncNodeService
|
32
|
+
from dkg.services.blockchain_services.async_blockchain_service import (
|
33
|
+
AsyncBlockchainService,
|
34
|
+
)
|
35
|
+
|
36
|
+
|
37
|
+
class AsyncDKG(AsyncModule):
|
38
|
+
asset: AsyncKnowledgeAsset
|
39
|
+
node: AsyncNode
|
40
|
+
graph: AsyncGraph
|
41
|
+
|
42
|
+
def __init__(
|
43
|
+
self,
|
44
|
+
node_provider: AsyncNodeHTTPProvider,
|
45
|
+
blockchain_provider: AsyncBlockchainProvider,
|
46
|
+
config: dict = {},
|
47
|
+
):
|
48
|
+
self.manager = AsyncRequestManager(node_provider, blockchain_provider)
|
49
|
+
|
50
|
+
self.initialize_services(config)
|
51
|
+
|
52
|
+
modules = {
|
53
|
+
"asset": AsyncKnowledgeAsset(
|
54
|
+
self.manager,
|
55
|
+
self.input_service,
|
56
|
+
self.node_service,
|
57
|
+
self.blockchain_service,
|
58
|
+
),
|
59
|
+
"node": AsyncNode(self.manager, self.node_service),
|
60
|
+
"graph": AsyncGraph(self.manager, self.input_service, self.node_service),
|
61
|
+
}
|
62
|
+
self._attach_modules(modules)
|
63
|
+
|
64
|
+
self._setup_backwards_compatibility()
|
65
|
+
|
66
|
+
def _setup_backwards_compatibility(self):
|
67
|
+
# Create async wrapper methods
|
68
|
+
async def graph_get(*args, **kwargs):
|
69
|
+
return await self.asset.get(*args, **kwargs)
|
70
|
+
|
71
|
+
async def graph_create(*args, **kwargs):
|
72
|
+
return await self.asset.create(*args, **kwargs)
|
73
|
+
|
74
|
+
# Attach methods to graph
|
75
|
+
self.graph.get = graph_get
|
76
|
+
self.graph.create = graph_create
|
77
|
+
|
78
|
+
def initialize_services(self, config: dict = {}):
|
79
|
+
self.input_service = InputService(self.manager, config)
|
80
|
+
self.node_service = AsyncNodeService(self.manager)
|
81
|
+
self.blockchain_service = AsyncBlockchainService(self.manager)
|
82
|
+
|
83
|
+
@staticmethod
|
84
|
+
@wraps(format_ual)
|
85
|
+
def format_ual(
|
86
|
+
blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
|
87
|
+
) -> UAL:
|
88
|
+
return format_ual(blockchain, contract_address, token_id)
|
89
|
+
|
90
|
+
@staticmethod
|
91
|
+
@wraps(parse_ual)
|
92
|
+
def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
|
93
|
+
return parse_ual(ual)
|
94
|
+
|
95
|
+
@property
|
96
|
+
def node_provider(self) -> AsyncNodeHTTPProvider:
|
97
|
+
return self.manager.node_provider
|
98
|
+
|
99
|
+
@node_provider.setter
|
100
|
+
def node_provider(self, node_provider: AsyncNodeHTTPProvider) -> None:
|
101
|
+
self.manager.node_provider = node_provider
|
102
|
+
|
103
|
+
@property
|
104
|
+
def blockchain_provider(self) -> AsyncBlockchainProvider:
|
105
|
+
return self.manager.blockchain_provider
|
106
|
+
|
107
|
+
@blockchain_provider.setter
|
108
|
+
def blockchain_provider(self, blockchain_provider: AsyncBlockchainProvider) -> None:
|
109
|
+
self.manager.blockchain_provider = blockchain_provider
|
dkg/{main.py → clients/dkg.py}
RENAMED
@@ -18,16 +18,19 @@
|
|
18
18
|
from functools import wraps
|
19
19
|
|
20
20
|
from dkg.assertion import Assertion
|
21
|
-
from dkg.asset import KnowledgeAsset
|
22
|
-
from dkg.graph import Graph
|
23
|
-
from dkg.manager import DefaultRequestManager
|
24
|
-
from dkg.module import Module
|
25
|
-
from dkg.network import Network
|
26
|
-
from dkg.node import Node
|
27
|
-
from dkg.paranet import Paranet
|
21
|
+
from dkg.modules.asset.asset import KnowledgeAsset
|
22
|
+
from dkg.modules.graph.graph import Graph
|
23
|
+
from dkg.managers.manager import DefaultRequestManager
|
24
|
+
from dkg.modules.module import Module
|
25
|
+
from dkg.modules.network.network import Network
|
26
|
+
from dkg.modules.node.node import Node
|
27
|
+
from dkg.modules.paranet.paranet import Paranet
|
28
28
|
from dkg.providers import BlockchainProvider, NodeHTTPProvider
|
29
29
|
from dkg.types import UAL, Address, ChecksumAddress
|
30
30
|
from dkg.utils.ual import format_ual, parse_ual
|
31
|
+
from dkg.services.input_service import InputService
|
32
|
+
from dkg.services.node_services.node_service import NodeService
|
33
|
+
from dkg.services.blockchain_services.blockchain_service import BlockchainService
|
31
34
|
|
32
35
|
|
33
36
|
class DKG(Module):
|
@@ -38,34 +41,52 @@ class DKG(Module):
|
|
38
41
|
node: Node
|
39
42
|
graph: Graph
|
40
43
|
|
41
|
-
@staticmethod
|
42
|
-
@wraps(format_ual)
|
43
|
-
def format_ual(
|
44
|
-
blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
|
45
|
-
) -> UAL:
|
46
|
-
return format_ual(blockchain, contract_address, token_id)
|
47
|
-
|
48
|
-
@staticmethod
|
49
|
-
@wraps(parse_ual)
|
50
|
-
def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
|
51
|
-
return parse_ual(ual)
|
52
|
-
|
53
44
|
def __init__(
|
54
45
|
self,
|
55
46
|
node_provider: NodeHTTPProvider,
|
56
47
|
blockchain_provider: BlockchainProvider,
|
48
|
+
config: dict = {},
|
57
49
|
):
|
58
50
|
self.manager = DefaultRequestManager(node_provider, blockchain_provider)
|
51
|
+
|
52
|
+
self.initialize_services(config)
|
53
|
+
|
59
54
|
modules = {
|
60
55
|
"assertion": Assertion(self.manager),
|
61
|
-
"asset": KnowledgeAsset(
|
56
|
+
"asset": KnowledgeAsset(
|
57
|
+
self.manager,
|
58
|
+
self.input_service,
|
59
|
+
self.node_service,
|
60
|
+
self.blockchain_service,
|
61
|
+
),
|
62
62
|
"paranet": Paranet(self.manager),
|
63
63
|
"network": Network(self.manager),
|
64
64
|
"node": Node(self.manager),
|
65
|
-
"graph": Graph(self.manager),
|
65
|
+
"graph": Graph(self.manager, self.input_service, self.node_service),
|
66
66
|
}
|
67
67
|
self._attach_modules(modules)
|
68
68
|
|
69
|
+
# Backwards compatibility
|
70
|
+
self.graph.get = self.asset.get.__get__(self.asset)
|
71
|
+
self.graph.create = self.asset.create.__get__(self.asset)
|
72
|
+
|
73
|
+
def initialize_services(self, config):
|
74
|
+
self.input_service = InputService(self.manager, config)
|
75
|
+
self.node_service = NodeService(self.manager)
|
76
|
+
self.blockchain_service = BlockchainService(self.manager)
|
77
|
+
|
78
|
+
@staticmethod
|
79
|
+
@wraps(format_ual)
|
80
|
+
def format_ual(
|
81
|
+
blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
|
82
|
+
) -> UAL:
|
83
|
+
return format_ual(blockchain, contract_address, token_id)
|
84
|
+
|
85
|
+
@staticmethod
|
86
|
+
@wraps(parse_ual)
|
87
|
+
def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
|
88
|
+
return parse_ual(ual)
|
89
|
+
|
69
90
|
@property
|
70
91
|
def node_provider(self) -> NodeHTTPProvider:
|
71
92
|
return self.manager.node_provider
|
dkg/constants.py
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
from enum import Enum, auto
|
2
|
+
from dkg.types import AutoStrEnumUpperCase
|
3
|
+
|
1
4
|
# Licensed to the Apache Software Foundation (ASF) under one
|
2
5
|
# or more contributor license agreements. See the NOTICE file
|
3
6
|
# distributed with this work for additional information
|
@@ -15,10 +18,79 @@
|
|
15
18
|
# specific language governing permissions and limitations
|
16
19
|
# under the License.
|
17
20
|
|
21
|
+
DEFAULT_CANON_ALGORITHM = "URDNA2015"
|
22
|
+
DEFAULT_RDF_FORMAT = "application/n-quads"
|
23
|
+
|
18
24
|
PRIVATE_ASSERTION_PREDICATE = (
|
19
|
-
"https://ontology.origintrail.io/dkg/1.0#
|
25
|
+
"https://ontology.origintrail.io/dkg/1.0#privateMerkleRoot"
|
26
|
+
)
|
27
|
+
|
28
|
+
PRIVATE_HASH_SUBJECT_PREFIX = "https://ontology.origintrail.io/dkg/1.0#metadata-hash:"
|
29
|
+
|
30
|
+
PRIVATE_RESOURCE_PREDICATE = (
|
31
|
+
"https://ontology.origintrail.io/dkg/1.0#representsPrivateResource"
|
20
32
|
)
|
21
33
|
|
34
|
+
CHUNK_BYTE_SIZE = 32
|
35
|
+
|
36
|
+
MAX_FILE_SIZE = 10000000
|
37
|
+
|
38
|
+
|
39
|
+
class DefaultParameters(Enum):
|
40
|
+
ENVIRONMENT: str = "mainnet"
|
41
|
+
PORT: int = 8900
|
42
|
+
FREQUENCY: int = 5
|
43
|
+
MAX_NUMBER_OF_RETRIES: int = 5
|
44
|
+
HASH_FUNCTION_ID: int = 1
|
45
|
+
MIN_NUMBER_OF_FINALIZATION_CONFIRMATION: int = 3
|
46
|
+
IMMUTABLE: bool = False
|
47
|
+
VALIDATE: bool = True
|
48
|
+
OUTPUT_FORMAT: str = "JSON-LD"
|
49
|
+
STATE: None = None
|
50
|
+
INCLUDE_METADATA: bool = False
|
51
|
+
CONTENT_TYPE: str = "all"
|
52
|
+
HANDLE_NOT_MINED_ERROR: bool = False
|
53
|
+
SIMULATE_TXS: bool = False
|
54
|
+
FORCE_REPLACE_TXS: bool = False
|
55
|
+
GAS_LIMIT_MULTIPLIER: int = 1
|
56
|
+
PARANET_UAL: None = None
|
57
|
+
GET_SUBJECT_UAL: bool = False
|
58
|
+
REPOSITORY: str = "dkg"
|
59
|
+
|
60
|
+
|
61
|
+
class OutputTypes(Enum):
|
62
|
+
NQUADS: str = "N-QUADS"
|
63
|
+
JSONLD: str = "JSON-LD"
|
64
|
+
|
65
|
+
|
66
|
+
class Environments(Enum):
|
67
|
+
DEVELOPMENT: str = "development"
|
68
|
+
DEVNET: str = "devnet"
|
69
|
+
TESTNET: str = "testnet"
|
70
|
+
MAINNET: str = "mainnet"
|
71
|
+
|
72
|
+
|
73
|
+
class BlockchainIds(Enum):
|
74
|
+
HARDHAT_1: str = "hardhat1:31337"
|
75
|
+
HARDHAT_2: str = "hardhat2:31337"
|
76
|
+
BASE_DEVNET: str = "base:84532"
|
77
|
+
GNOSIS_DEVNET: str = "gnosis:10200"
|
78
|
+
NEUROWEB_DEVNET: str = "otp:2160"
|
79
|
+
BASE_TESTNET: str = "base:84532"
|
80
|
+
GNOSIS_TESTNET: str = "gnosis:10200"
|
81
|
+
NEUROWEB_TESTNET: str = "otp:20430"
|
82
|
+
BASE_MAINNET: str = "base:8453"
|
83
|
+
GNOSIS_MAINNET: str = "gnosis:100"
|
84
|
+
NEUROWEB_MAINNET: str = "otp:2043"
|
85
|
+
|
86
|
+
|
87
|
+
class OperationStatuses(str, Enum):
|
88
|
+
PENDING = "PENDING"
|
89
|
+
COMPLETED = "COMPLETED"
|
90
|
+
FAILED = "FAILED"
|
91
|
+
|
92
|
+
|
93
|
+
ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"
|
22
94
|
BLOCKCHAINS = {
|
23
95
|
"development": {
|
24
96
|
"hardhat1:31337": {
|
@@ -32,20 +104,40 @@ BLOCKCHAINS = {
|
|
32
104
|
},
|
33
105
|
"devnet": {
|
34
106
|
"base:84532": {
|
35
|
-
"hub": "
|
107
|
+
"hub": "0xE043daF4cC8ae2c720ef95fc82574a37a429c40A",
|
36
108
|
"rpc": "https://sepolia.base.org",
|
37
109
|
}
|
38
110
|
},
|
39
111
|
"testnet": {
|
40
112
|
"base:84532": {
|
41
|
-
"hub": "
|
113
|
+
"hub": "0xf21CE8f8b01548D97DCFb36869f1ccB0814a4e05",
|
42
114
|
"rpc": "https://sepolia.base.org",
|
43
|
-
}
|
115
|
+
},
|
116
|
+
"gnosis:10200": {
|
117
|
+
"hub": "0x2c08AC4B630c009F709521e56Ac385A6af70650f",
|
118
|
+
"rpc": "https://rpc.chiadochain.net",
|
119
|
+
},
|
120
|
+
"otp:20430": {
|
121
|
+
"hub": "0xd7d073b560412c6A7F33dD670d323D01061E5DEb",
|
122
|
+
"rpc": "https://lofar-testnet.origin-trail.network",
|
123
|
+
},
|
124
|
+
},
|
125
|
+
"mainnet": {
|
126
|
+
"base:8453": {
|
127
|
+
"hub": "0x99Aa571fD5e681c2D27ee08A7b7989DB02541d13",
|
128
|
+
"rpc": "https://mainnet.base.org",
|
129
|
+
},
|
130
|
+
"gnosis:100": {
|
131
|
+
"hub": "0x882D0BF07F956b1b94BBfe9E77F47c6fc7D4EC8f",
|
132
|
+
"rpc": "https://rpc.gnosischain.com/",
|
133
|
+
},
|
134
|
+
"otp:2043": {
|
135
|
+
"hub": "0x0957e25BD33034948abc28204ddA54b6E1142D6F",
|
136
|
+
"rpc": "https://astrosat-parachain-rpc.origin-trail.network",
|
137
|
+
},
|
44
138
|
},
|
45
|
-
"mainnet": {},
|
46
139
|
}
|
47
140
|
|
48
|
-
DEFAULT_HASH_FUNCTION_ID = 1
|
49
141
|
DEFAULT_PROXIMITY_SCORE_FUNCTIONS_PAIR_IDS = {
|
50
142
|
"development": {"hardhat1:31337": 2, "hardhat2:31337": 2, "otp:2043": 2},
|
51
143
|
"devnet": {
|
@@ -67,3 +159,22 @@ DEFAULT_PROXIMITY_SCORE_FUNCTIONS_PAIR_IDS = {
|
|
67
159
|
|
68
160
|
PRIVATE_HISTORICAL_REPOSITORY = "privateHistory"
|
69
161
|
PRIVATE_CURRENT_REPOSITORY = "privateCurrent"
|
162
|
+
|
163
|
+
|
164
|
+
class Operations(Enum):
|
165
|
+
PUBLISH = "publish"
|
166
|
+
GET = "get"
|
167
|
+
QUERY = "query"
|
168
|
+
PUBLISH_PARANET = "publishParanet"
|
169
|
+
FINALITY = "finality"
|
170
|
+
|
171
|
+
|
172
|
+
class Status(AutoStrEnumUpperCase):
|
173
|
+
ERROR = auto()
|
174
|
+
NOT_FINALIZED = auto()
|
175
|
+
FINALIZED = auto()
|
176
|
+
NETWORK_ERROR = auto()
|
177
|
+
|
178
|
+
|
179
|
+
class ErrorType(AutoStrEnumUpperCase):
|
180
|
+
DKG_CLIENT_ERROR = auto()
|