ваше сообщение коммита
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../../../build-info/29c61b08eb590d8fc12c8139671115f4.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-dbg-1",
|
"_format": "hh-sol-dbg-1",
|
||||||
"buildInfo": "../../build-info/3e12480a731f7a845287f0f150241bb4.json"
|
"buildInfo": "../../build-info/ae6e57b918547db576362d7ba12641eb.json"
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
460
backend/cache/solidity-files-cache.json
vendored
460
backend/cache/solidity-files-cache.json
vendored
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-cache-2",
|
"_format": "hh-sol-cache-2",
|
||||||
"files": {
|
"files": {
|
||||||
"/app/contracts/DLE.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/contracts/DLE.sol": {
|
||||||
"lastModificationDate": 1755001745034,
|
"lastModificationDate": 1755277189432,
|
||||||
"contentHash": "a77cbe367dec496f574716fd50e1ef07",
|
"contentHash": "03b4ac83148b5b1246f64c54fa0e959c",
|
||||||
"sourceName": "contracts/DLE.sol",
|
"sourceName": "contracts/DLE.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.20",
|
"version": "0.8.20",
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
"DLE"
|
"DLE"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": {
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "190613e556d509d9e9a0ea43dc5d891d",
|
"contentHash": "190613e556d509d9e9a0ea43dc5d891d",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
|
"sourceName": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
"ReentrancyGuard"
|
"ReentrancyGuard"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "227a6eb2225701c12d9c959b758b6333",
|
"contentHash": "227a6eb2225701c12d9c959b758b6333",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
|
||||||
@@ -123,7 +123,44 @@
|
|||||||
"ERC20"
|
"ERC20"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
|
||||||
|
"lastModificationDate": 1754306764456,
|
||||||
|
"contentHash": "81de029d56aa803972be03c5d277cb6c",
|
||||||
|
"sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.20",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"viaIR": true,
|
||||||
|
"evmVersion": "paris",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"ECDSA"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol": {
|
||||||
"lastModificationDate": 1754306768254,
|
"lastModificationDate": 1754306768254,
|
||||||
"contentHash": "51c2083b160453420aaa0a046c16d5ca",
|
"contentHash": "51c2083b160453420aaa0a046c16d5ca",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol",
|
||||||
@@ -164,7 +201,7 @@
|
|||||||
"ERC20Votes"
|
"ERC20Votes"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol": {
|
||||||
"lastModificationDate": 1754306768254,
|
"lastModificationDate": 1754306768254,
|
||||||
"contentHash": "b1a8fc63b83ce00408e0c9ed1230b717",
|
"contentHash": "b1a8fc63b83ce00408e0c9ed1230b717",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol",
|
||||||
@@ -207,44 +244,7 @@
|
|||||||
"ERC20Permit"
|
"ERC20Permit"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/Context.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
|
||||||
"contentHash": "81de029d56aa803972be03c5d277cb6c",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.20",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"viaIR": true,
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"ECDSA"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/Context.sol": {
|
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "67bfbc07588eb8683b3fd8f6f909563e",
|
"contentHash": "67bfbc07588eb8683b3fd8f6f909563e",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Context.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Context.sol",
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
"Context"
|
"Context"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
|
||||||
"lastModificationDate": 1754306760460,
|
"lastModificationDate": 1754306760460,
|
||||||
"contentHash": "267d92fe4de67b1bdb3302c08f387dbf",
|
"contentHash": "267d92fe4de67b1bdb3302c08f387dbf",
|
||||||
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
|
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
|
||||||
@@ -320,7 +320,7 @@
|
|||||||
"IERC721Errors"
|
"IERC721Errors"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "8f19f64d2adadf448840908bbaf431c8",
|
"contentHash": "8f19f64d2adadf448840908bbaf431c8",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
|
||||||
@@ -357,7 +357,7 @@
|
|||||||
"IERC20"
|
"IERC20"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
|
||||||
"lastModificationDate": 1754306768254,
|
"lastModificationDate": 1754306768254,
|
||||||
"contentHash": "794db3115001aa372c79326fcfd44b1f",
|
"contentHash": "794db3115001aa372c79326fcfd44b1f",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
|
||||||
@@ -396,46 +396,7 @@
|
|||||||
"IERC20Metadata"
|
"IERC20Metadata"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/governance/utils/Votes.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
|
||||||
"contentHash": "657c6dfea3bae1af948de6113ba01cea",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/structs/Checkpoints.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.20",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"viaIR": true,
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [
|
|
||||||
"../math/Math.sol"
|
|
||||||
],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"Checkpoints"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/app/node_modules/@openzeppelin/contracts/governance/utils/Votes.sol": {
|
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "95aceafdc639babdd22576e5e3774d64",
|
"contentHash": "95aceafdc639babdd22576e5e3774d64",
|
||||||
"sourceName": "@openzeppelin/contracts/governance/utils/Votes.sol",
|
"sourceName": "@openzeppelin/contracts/governance/utils/Votes.sol",
|
||||||
@@ -481,10 +442,10 @@
|
|||||||
"Votes"
|
"Votes"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "2b2665ae9bdb1af440658741a77fe213",
|
"contentHash": "657c6dfea3bae1af948de6113ba01cea",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
|
"sourceName": "@openzeppelin/contracts/utils/structs/Checkpoints.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.20",
|
"version": "0.8.20",
|
||||||
"settings": {
|
"settings": {
|
||||||
@@ -511,91 +472,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
"../Panic.sol",
|
"../math/Math.sol"
|
||||||
"./SafeCast.sol"
|
|
||||||
],
|
],
|
||||||
"versionPragmas": [
|
"versionPragmas": [
|
||||||
"^0.8.20"
|
"^0.8.20"
|
||||||
],
|
],
|
||||||
"artifacts": [
|
"artifacts": [
|
||||||
"Math"
|
"Checkpoints"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/Nonces.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
|
||||||
"contentHash": "2adca1150f58fc6f3d1f0a0f22ee7cca",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.20",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"viaIR": true,
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"SafeCast"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/Panic.sol": {
|
|
||||||
"lastModificationDate": 1754306760451,
|
|
||||||
"contentHash": "2133dc13536b4a6a98131e431fac59e1",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Panic.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.20",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"viaIR": true,
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"Panic"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/Nonces.sol": {
|
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "c32d108058718efb9061b88e83a83f79",
|
"contentHash": "c32d108058718efb9061b88e83a83f79",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Nonces.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Nonces.sol",
|
||||||
@@ -632,7 +518,47 @@
|
|||||||
"Nonces"
|
"Nonces"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol": {
|
||||||
|
"lastModificationDate": 1754306760460,
|
||||||
|
"contentHash": "65ba9f89b1057e2192e341b286d4e261",
|
||||||
|
"sourceName": "@openzeppelin/contracts/interfaces/IERC5805.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.20",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"viaIR": true,
|
||||||
|
"evmVersion": "paris",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"../governance/utils/IVotes.sol",
|
||||||
|
"./IERC6372.sol"
|
||||||
|
],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"IERC5805"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "8dbb261c55f358342798c4d1803d4f8e",
|
"contentHash": "8dbb261c55f358342798c4d1803d4f8e",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
|
"sourceName": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
|
||||||
@@ -673,10 +599,10 @@
|
|||||||
"EIP712"
|
"EIP712"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
|
||||||
"lastModificationDate": 1754306760460,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "65ba9f89b1057e2192e341b286d4e261",
|
"contentHash": "2adca1150f58fc6f3d1f0a0f22ee7cca",
|
||||||
"sourceName": "@openzeppelin/contracts/interfaces/IERC5805.sol",
|
"sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.20",
|
"version": "0.8.20",
|
||||||
"settings": {
|
"settings": {
|
||||||
@@ -702,18 +628,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [],
|
||||||
"../governance/utils/IVotes.sol",
|
|
||||||
"./IERC6372.sol"
|
|
||||||
],
|
|
||||||
"versionPragmas": [
|
"versionPragmas": [
|
||||||
"^0.8.20"
|
"^0.8.20"
|
||||||
],
|
],
|
||||||
"artifacts": [
|
"artifacts": [
|
||||||
"IERC5805"
|
"SafeCast"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/types/Time.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/types/Time.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "d83e7814a059fc1287fd765f424ce004",
|
"contentHash": "d83e7814a059fc1287fd765f424ce004",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/types/Time.sol",
|
"sourceName": "@openzeppelin/contracts/utils/types/Time.sol",
|
||||||
@@ -753,7 +676,81 @@
|
|||||||
"Time"
|
"Time"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol": {
|
||||||
|
"lastModificationDate": 1754306764456,
|
||||||
|
"contentHash": "905ffceb29869fee4b5a649abe7e2927",
|
||||||
|
"sourceName": "@openzeppelin/contracts/governance/utils/IVotes.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.20",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"viaIR": true,
|
||||||
|
"evmVersion": "paris",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"IVotes"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol": {
|
||||||
|
"lastModificationDate": 1754306760460,
|
||||||
|
"contentHash": "414cd6acf090e4009cf016ff62ecbd88",
|
||||||
|
"sourceName": "@openzeppelin/contracts/interfaces/IERC6372.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.20",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"viaIR": true,
|
||||||
|
"evmVersion": "paris",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"IERC6372"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": {
|
||||||
"lastModificationDate": 1754306760460,
|
"lastModificationDate": 1754306760460,
|
||||||
"contentHash": "94364524cb1a39dcbc3d3afff6d8e53e",
|
"contentHash": "94364524cb1a39dcbc3d3afff6d8e53e",
|
||||||
"sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol",
|
"sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol",
|
||||||
@@ -790,7 +787,7 @@
|
|||||||
"IERC5267"
|
"IERC5267"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/ShortStrings.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/ShortStrings.sol": {
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "94e7feaf138d08fb736e43ca0be9bf26",
|
"contentHash": "94e7feaf138d08fb736e43ca0be9bf26",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/ShortStrings.sol",
|
"sourceName": "@openzeppelin/contracts/utils/ShortStrings.sol",
|
||||||
@@ -829,7 +826,7 @@
|
|||||||
"ShortStrings"
|
"ShortStrings"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
|
||||||
"lastModificationDate": 1754306764465,
|
"lastModificationDate": 1754306764465,
|
||||||
"contentHash": "86fd93657e4e27ff76c38699e9b9fcef",
|
"contentHash": "86fd93657e4e27ff76c38699e9b9fcef",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
|
"sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
|
||||||
@@ -868,7 +865,7 @@
|
|||||||
"MessageHashUtils"
|
"MessageHashUtils"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": {
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "e656d64c4ce918f3d13030b91c935134",
|
"contentHash": "e656d64c4ce918f3d13030b91c935134",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol",
|
"sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol",
|
||||||
@@ -905,7 +902,7 @@
|
|||||||
"StorageSlot"
|
"StorageSlot"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/Strings.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/Strings.sol": {
|
||||||
"lastModificationDate": 1754306760451,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "a55fef2557b35bac18a1880d3c2e6740",
|
"contentHash": "a55fef2557b35bac18a1880d3c2e6740",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Strings.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Strings.sol",
|
||||||
@@ -946,7 +943,47 @@
|
|||||||
"Strings"
|
"Strings"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
|
||||||
|
"lastModificationDate": 1754306764456,
|
||||||
|
"contentHash": "2b2665ae9bdb1af440658741a77fe213",
|
||||||
|
"sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.20",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"viaIR": true,
|
||||||
|
"evmVersion": "paris",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"../Panic.sol",
|
||||||
|
"./SafeCast.sol"
|
||||||
|
],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"Math"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306764456,
|
||||||
"contentHash": "ae3528afb8bdb0a7dcfba5b115ee8074",
|
"contentHash": "ae3528afb8bdb0a7dcfba5b115ee8074",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol",
|
"sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol",
|
||||||
@@ -985,10 +1022,10 @@
|
|||||||
"SignedMath"
|
"SignedMath"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/utils/Panic.sol": {
|
||||||
"lastModificationDate": 1754306764456,
|
"lastModificationDate": 1754306760451,
|
||||||
"contentHash": "905ffceb29869fee4b5a649abe7e2927",
|
"contentHash": "2133dc13536b4a6a98131e431fac59e1",
|
||||||
"sourceName": "@openzeppelin/contracts/governance/utils/IVotes.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Panic.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.20",
|
"version": "0.8.20",
|
||||||
"settings": {
|
"settings": {
|
||||||
@@ -1019,47 +1056,10 @@
|
|||||||
"^0.8.20"
|
"^0.8.20"
|
||||||
],
|
],
|
||||||
"artifacts": [
|
"artifacts": [
|
||||||
"IVotes"
|
"Panic"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
|
||||||
"lastModificationDate": 1754306760460,
|
|
||||||
"contentHash": "414cd6acf090e4009cf016ff62ecbd88",
|
|
||||||
"sourceName": "@openzeppelin/contracts/interfaces/IERC6372.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.20",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"viaIR": true,
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"IERC6372"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/app/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": {
|
|
||||||
"lastModificationDate": 1754306768254,
|
"lastModificationDate": 1754306768254,
|
||||||
"contentHash": "94ec15baf0d5df863f45b8f351937ec7",
|
"contentHash": "94ec15baf0d5df863f45b8f351937ec7",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
|
||||||
@@ -1096,7 +1096,7 @@
|
|||||||
"IERC20Permit"
|
"IERC20Permit"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/app/contracts/FactoryDeployer.sol": {
|
"/home/alex/Digital_Legal_Entity(DLE)/backend/contracts/FactoryDeployer.sol": {
|
||||||
"lastModificationDate": 1754685617489,
|
"lastModificationDate": 1754685617489,
|
||||||
"contentHash": "6161bbb21af830bc05d6acd8682d9678",
|
"contentHash": "6161bbb21af830bc05d6acd8682d9678",
|
||||||
"sourceName": "contracts/FactoryDeployer.sol",
|
"sourceName": "contracts/FactoryDeployer.sol",
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
struct DLEInfo {
|
struct DLEInfo {
|
||||||
string name;
|
string name;
|
||||||
string symbol;
|
string symbol;
|
||||||
|
string tokenImage; // Картинка токена (base64 или URL)
|
||||||
string location;
|
string location;
|
||||||
string coordinates;
|
string coordinates;
|
||||||
uint256 jurisdiction;
|
uint256 jurisdiction;
|
||||||
uint256 oktmo;
|
|
||||||
string[] okvedCodes;
|
string[] okvedCodes;
|
||||||
uint256 kpp;
|
uint256 kpp;
|
||||||
uint256 creationTimestamp;
|
uint256 creationTimestamp;
|
||||||
@@ -39,10 +39,10 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
struct DLEConfig {
|
struct DLEConfig {
|
||||||
string name;
|
string name;
|
||||||
string symbol;
|
string symbol;
|
||||||
|
string tokenImage; // Картинка токена (base64 или URL)
|
||||||
string location;
|
string location;
|
||||||
string coordinates;
|
string coordinates;
|
||||||
uint256 jurisdiction;
|
uint256 jurisdiction;
|
||||||
uint256 oktmo;
|
|
||||||
string[] okvedCodes;
|
string[] okvedCodes;
|
||||||
uint256 kpp;
|
uint256 kpp;
|
||||||
uint256 quorumPercentage;
|
uint256 quorumPercentage;
|
||||||
@@ -91,10 +91,10 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
event DLEInitialized(
|
event DLEInitialized(
|
||||||
string name,
|
string name,
|
||||||
string symbol,
|
string symbol,
|
||||||
|
string tokenImage,
|
||||||
string location,
|
string location,
|
||||||
string coordinates,
|
string coordinates,
|
||||||
uint256 jurisdiction,
|
uint256 jurisdiction,
|
||||||
uint256 oktmo,
|
|
||||||
string[] okvedCodes,
|
string[] okvedCodes,
|
||||||
uint256 kpp,
|
uint256 kpp,
|
||||||
address tokenAddress,
|
address tokenAddress,
|
||||||
@@ -112,7 +112,7 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
event ProposalExecutionApprovedInChain(uint256 proposalId, uint256 chainId);
|
event ProposalExecutionApprovedInChain(uint256 proposalId, uint256 chainId);
|
||||||
event ChainAdded(uint256 chainId);
|
event ChainAdded(uint256 chainId);
|
||||||
event ChainRemoved(uint256 chainId);
|
event ChainRemoved(uint256 chainId);
|
||||||
event DLEInfoUpdated(string name, string symbol, string location, string coordinates, uint256 jurisdiction, uint256 oktmo, string[] okvedCodes, uint256 kpp);
|
event DLEInfoUpdated(string name, string symbol, string tokenImage, string location, string coordinates, uint256 jurisdiction, string[] okvedCodes, uint256 kpp);
|
||||||
event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage);
|
event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage);
|
||||||
event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
|
event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
|
||||||
|
|
||||||
@@ -129,10 +129,10 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
dleInfo = DLEInfo({
|
dleInfo = DLEInfo({
|
||||||
name: config.name,
|
name: config.name,
|
||||||
symbol: config.symbol,
|
symbol: config.symbol,
|
||||||
|
tokenImage: config.tokenImage,
|
||||||
location: config.location,
|
location: config.location,
|
||||||
coordinates: config.coordinates,
|
coordinates: config.coordinates,
|
||||||
jurisdiction: config.jurisdiction,
|
jurisdiction: config.jurisdiction,
|
||||||
oktmo: config.oktmo,
|
|
||||||
okvedCodes: config.okvedCodes,
|
okvedCodes: config.okvedCodes,
|
||||||
kpp: config.kpp,
|
kpp: config.kpp,
|
||||||
creationTimestamp: block.timestamp,
|
creationTimestamp: block.timestamp,
|
||||||
@@ -166,10 +166,10 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
emit DLEInitialized(
|
emit DLEInitialized(
|
||||||
config.name,
|
config.name,
|
||||||
config.symbol,
|
config.symbol,
|
||||||
|
config.tokenImage,
|
||||||
config.location,
|
config.location,
|
||||||
config.coordinates,
|
config.coordinates,
|
||||||
config.jurisdiction,
|
config.jurisdiction,
|
||||||
config.oktmo,
|
|
||||||
config.okvedCodes,
|
config.okvedCodes,
|
||||||
config.kpp,
|
config.kpp,
|
||||||
address(this),
|
address(this),
|
||||||
@@ -509,11 +509,11 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
// Декодируем операцию
|
// Декодируем операцию
|
||||||
(bytes4 selector, bytes memory data) = abi.decode(_operation, (bytes4, bytes));
|
(bytes4 selector, bytes memory data) = abi.decode(_operation, (bytes4, bytes));
|
||||||
|
|
||||||
if (selector == bytes4(keccak256("updateDLEInfo(string,string,string,string,uint256,uint256,string[],uint256)"))) {
|
if (selector == bytes4(keccak256("updateDLEInfo(string,string,string,string,string,uint256,uint256,string[],uint256)"))) {
|
||||||
// Операция обновления информации DLE
|
// Операция обновления информации DLE
|
||||||
(string memory name, string memory symbol, string memory location, string memory coordinates,
|
(string memory name, string memory symbol, string memory tokenImage, string memory location, string memory coordinates,
|
||||||
uint256 jurisdiction, uint256 oktmo, string[] memory okvedCodes, uint256 kpp) = abi.decode(data, (string, string, string, string, uint256, uint256, string[], uint256));
|
uint256 jurisdiction, string[] memory okvedCodes, uint256 kpp) = abi.decode(data, (string, string, string, string, string, uint256, string[], uint256));
|
||||||
_updateDLEInfo(name, symbol, location, coordinates, jurisdiction, oktmo, okvedCodes, kpp);
|
_updateDLEInfo(name, symbol, tokenImage, location, coordinates, jurisdiction, okvedCodes, kpp);
|
||||||
} else if (selector == bytes4(keccak256("updateQuorumPercentage(uint256)"))) {
|
} else if (selector == bytes4(keccak256("updateQuorumPercentage(uint256)"))) {
|
||||||
// Операция обновления процента кворума
|
// Операция обновления процента кворума
|
||||||
(uint256 newQuorumPercentage) = abi.decode(data, (uint256));
|
(uint256 newQuorumPercentage) = abi.decode(data, (uint256));
|
||||||
@@ -550,20 +550,20 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
* @dev Обновить информацию DLE
|
* @dev Обновить информацию DLE
|
||||||
* @param _name Новое название
|
* @param _name Новое название
|
||||||
* @param _symbol Новый символ
|
* @param _symbol Новый символ
|
||||||
|
* @param _tokenImage Новая картинка токена
|
||||||
* @param _location Новое местонахождение
|
* @param _location Новое местонахождение
|
||||||
* @param _coordinates Новые координаты
|
* @param _coordinates Новые координаты
|
||||||
* @param _jurisdiction Новая юрисдикция
|
* @param _jurisdiction Новая юрисдикция
|
||||||
* @param _oktmo Новый ОКТМО
|
|
||||||
* @param _okvedCodes Новые коды ОКВЭД
|
* @param _okvedCodes Новые коды ОКВЭД
|
||||||
* @param _kpp Новый КПП
|
* @param _kpp Новый КПП
|
||||||
*/
|
*/
|
||||||
function _updateDLEInfo(
|
function _updateDLEInfo(
|
||||||
string memory _name,
|
string memory _name,
|
||||||
string memory _symbol,
|
string memory _symbol,
|
||||||
|
string memory _tokenImage,
|
||||||
string memory _location,
|
string memory _location,
|
||||||
string memory _coordinates,
|
string memory _coordinates,
|
||||||
uint256 _jurisdiction,
|
uint256 _jurisdiction,
|
||||||
uint256 _oktmo,
|
|
||||||
string[] memory _okvedCodes,
|
string[] memory _okvedCodes,
|
||||||
uint256 _kpp
|
uint256 _kpp
|
||||||
) internal {
|
) internal {
|
||||||
@@ -571,19 +571,18 @@ contract DLE is ERC20, ERC20Permit, ERC20Votes, ReentrancyGuard {
|
|||||||
require(bytes(_symbol).length > 0, "Symbol cannot be empty");
|
require(bytes(_symbol).length > 0, "Symbol cannot be empty");
|
||||||
require(bytes(_location).length > 0, "Location cannot be empty");
|
require(bytes(_location).length > 0, "Location cannot be empty");
|
||||||
require(_jurisdiction > 0, "Invalid jurisdiction");
|
require(_jurisdiction > 0, "Invalid jurisdiction");
|
||||||
require(_oktmo > 0, "Invalid OKTMO");
|
|
||||||
require(_kpp > 0, "Invalid KPP");
|
require(_kpp > 0, "Invalid KPP");
|
||||||
|
|
||||||
dleInfo.name = _name;
|
dleInfo.name = _name;
|
||||||
dleInfo.symbol = _symbol;
|
dleInfo.symbol = _symbol;
|
||||||
|
dleInfo.tokenImage = _tokenImage;
|
||||||
dleInfo.location = _location;
|
dleInfo.location = _location;
|
||||||
dleInfo.coordinates = _coordinates;
|
dleInfo.coordinates = _coordinates;
|
||||||
dleInfo.jurisdiction = _jurisdiction;
|
dleInfo.jurisdiction = _jurisdiction;
|
||||||
dleInfo.oktmo = _oktmo;
|
|
||||||
dleInfo.okvedCodes = _okvedCodes;
|
dleInfo.okvedCodes = _okvedCodes;
|
||||||
dleInfo.kpp = _kpp;
|
dleInfo.kpp = _kpp;
|
||||||
|
|
||||||
emit DLEInfoUpdated(_name, _symbol, _location, _coordinates, _jurisdiction, _oktmo, _okvedCodes, _kpp);
|
emit DLEInfoUpdated(_name, _symbol, _tokenImage, _location, _coordinates, _jurisdiction, _okvedCodes, _kpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ async function main() {
|
|||||||
const dleConfig = {
|
const dleConfig = {
|
||||||
name: params.name,
|
name: params.name,
|
||||||
symbol: params.symbol,
|
symbol: params.symbol,
|
||||||
|
tokenImage: params.tokenImage || '',
|
||||||
location: params.location,
|
location: params.location,
|
||||||
coordinates: params.coordinates,
|
coordinates: params.coordinates,
|
||||||
jurisdiction: params.jurisdiction,
|
jurisdiction: params.jurisdiction,
|
||||||
oktmo: params.oktmo,
|
|
||||||
okvedCodes: params.okvedCodes || [],
|
okvedCodes: params.okvedCodes || [],
|
||||||
kpp: params.kpp,
|
kpp: params.kpp,
|
||||||
quorumPercentage: params.quorumPercentage,
|
quorumPercentage: params.quorumPercentage,
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ class DLEV2Service {
|
|||||||
location: deployParams.location,
|
location: deployParams.location,
|
||||||
coordinates: deployParams.coordinates,
|
coordinates: deployParams.coordinates,
|
||||||
jurisdiction: deployParams.jurisdiction,
|
jurisdiction: deployParams.jurisdiction,
|
||||||
oktmo: deployParams.oktmo,
|
|
||||||
okvedCodes: deployParams.okvedCodes || [],
|
okvedCodes: deployParams.okvedCodes || [],
|
||||||
kpp: deployParams.kpp,
|
kpp: deployParams.kpp,
|
||||||
quorumPercentage: deployParams.quorumPercentage,
|
quorumPercentage: deployParams.quorumPercentage,
|
||||||
@@ -225,6 +224,19 @@ class DLEV2Service {
|
|||||||
if (!params.supportedChainIds || !Array.isArray(params.supportedChainIds) || params.supportedChainIds.length === 0) {
|
if (!params.supportedChainIds || !Array.isArray(params.supportedChainIds) || params.supportedChainIds.length === 0) {
|
||||||
throw new Error('Должна быть выбрана хотя бы одна сеть для деплоя');
|
throw new Error('Должна быть выбрана хотя бы одна сеть для деплоя');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Проверяем размер картинки токена (если передана)
|
||||||
|
if (params.tokenImage && params.tokenImage.trim() !== '') {
|
||||||
|
const base64Size = params.tokenImage.length;
|
||||||
|
if (base64Size > 350) {
|
||||||
|
throw new Error(`Размер картинки токена превышает лимит: ${base64Size} байт. Максимальный размер: 350 байт`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверяем, что это валидный base64
|
||||||
|
if (!params.tokenImage.startsWith('data:image/')) {
|
||||||
|
throw new Error('Картинка токена должна быть в формате base64 data URL');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -557,7 +569,6 @@ class DLEV2Service {
|
|||||||
location: params.location,
|
location: params.location,
|
||||||
coordinates: params.coordinates,
|
coordinates: params.coordinates,
|
||||||
jurisdiction: params.jurisdiction,
|
jurisdiction: params.jurisdiction,
|
||||||
oktmo: params.oktmo,
|
|
||||||
okvedCodes: params.okvedCodes || [],
|
okvedCodes: params.okvedCodes || [],
|
||||||
kpp: params.kpp,
|
kpp: params.kpp,
|
||||||
quorumPercentage: params.quorumPercentage,
|
quorumPercentage: params.quorumPercentage,
|
||||||
@@ -732,7 +743,6 @@ class DLEV2Service {
|
|||||||
location: params.location,
|
location: params.location,
|
||||||
coordinates: params.coordinates,
|
coordinates: params.coordinates,
|
||||||
jurisdiction: params.jurisdiction,
|
jurisdiction: params.jurisdiction,
|
||||||
oktmo: params.oktmo,
|
|
||||||
okvedCodes: params.okvedCodes || [],
|
okvedCodes: params.okvedCodes || [],
|
||||||
kpp: params.kpp,
|
kpp: params.kpp,
|
||||||
quorumPercentage: params.quorumPercentage,
|
quorumPercentage: params.quorumPercentage,
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is proprietary and confidential.
|
||||||
|
* Unauthorized copying, modification, or distribution is prohibited.
|
||||||
|
*
|
||||||
|
* For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
* Website: https://hb3-accelerator.com
|
||||||
|
* GitHub: https://github.com/VC-HB3-Accelerator
|
||||||
|
*/
|
||||||
|
|
||||||
# Скрипт для создания резервных копий базы данных DLE
|
# Скрипт для создания резервных копий базы данных DLE
|
||||||
# Запускать: ./backup-database.sh
|
# Запускать: ./backup-database.sh
|
||||||
|
|
||||||
|
|||||||
@@ -325,6 +325,38 @@
|
|||||||
<small class="form-help">3-10 символов для токена управления (Governance Token)</small>
|
<small class="form-help">3-10 символов для токена управления (Governance Token)</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Картинка токена -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label" for="tokenImage">Картинка токена:</label>
|
||||||
|
<div class="token-image-upload">
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
id="tokenImage"
|
||||||
|
ref="tokenImageInput"
|
||||||
|
class="form-control"
|
||||||
|
accept="image/*"
|
||||||
|
@change="handleTokenImageUpload"
|
||||||
|
style="display: none;"
|
||||||
|
>
|
||||||
|
<div class="upload-area" @click="triggerImageUpload">
|
||||||
|
<div v-if="!dleSettings.tokenImage" class="upload-placeholder">
|
||||||
|
<i class="fas fa-image"></i>
|
||||||
|
<p>Нажмите для выбора картинки токена</p>
|
||||||
|
<small>Поддерживаются форматы: JPG, PNG, GIF (макс. 1MB, 200x200px)</small>
|
||||||
|
</div>
|
||||||
|
<div v-else class="image-preview">
|
||||||
|
<img :src="dleSettings.tokenImage" alt="Картинка токена" class="token-image">
|
||||||
|
<div class="image-overlay">
|
||||||
|
<button type="button" @click.stop="removeTokenImage" class="btn btn-danger btn-sm">
|
||||||
|
<i class="fas fa-trash"></i> Удалить
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<small class="form-help">Загрузите картинку для вашего токена (макс. 350 байт в base64, автоматически сжимается до 200x200px)</small>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Партнеры и распределение токенов -->
|
<!-- Партнеры и распределение токенов -->
|
||||||
@@ -465,7 +497,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Предсказанный адрес DLE - СКРЫТ -->
|
<!-- Предсказанный адрес DLE - отключено -->
|
||||||
<!-- <div v-if="selectedNetworks.length > 0" class="predicted-address-section">
|
<!-- <div v-if="selectedNetworks.length > 0" class="predicted-address-section">
|
||||||
<h5>📍 Адрес DLE во всех сетях:</h5>
|
<h5>📍 Адрес DLE во всех сетях:</h5>
|
||||||
<div class="address-display">
|
<div class="address-display">
|
||||||
@@ -655,6 +687,13 @@
|
|||||||
<div v-if="dleSettings.tokenSymbol" class="preview-item">
|
<div v-if="dleSettings.tokenSymbol" class="preview-item">
|
||||||
<strong>🪙 Токен:</strong> {{ dleSettings.tokenSymbol }}
|
<strong>🪙 Токен:</strong> {{ dleSettings.tokenSymbol }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-if="dleSettings.tokenImage" class="preview-item">
|
||||||
|
<strong>🖼️ Картинка токена:</strong>
|
||||||
|
<div class="token-image-preview">
|
||||||
|
<img :src="dleSettings.tokenImage" alt="Картинка токена" class="preview-token-image">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -889,6 +928,7 @@ const dleSettings = reactive({
|
|||||||
selectedOkved: [], // ОКВЭД - дополнительные коды деятельности
|
selectedOkved: [], // ОКВЭД - дополнительные коды деятельности
|
||||||
name: '', // Имя DLE
|
name: '', // Имя DLE
|
||||||
tokenSymbol: '', // Символ токена
|
tokenSymbol: '', // Символ токена
|
||||||
|
tokenImage: '', // Картинка токена (base64 или URL)
|
||||||
partners: [{ address: '', amount: 1 }], // Партнеры и их доли токенов
|
partners: [{ address: '', amount: 1 }], // Партнеры и их доли токенов
|
||||||
governanceQuorum: 51, // Кворум для принятия решений (%)
|
governanceQuorum: 51, // Кворум для принятия решений (%)
|
||||||
|
|
||||||
@@ -931,9 +971,9 @@ const selectedNetworks = ref([]);
|
|||||||
const availableNetworks = ref([]);
|
const availableNetworks = ref([]);
|
||||||
const isLoadingNetworks = ref(false);
|
const isLoadingNetworks = ref(false);
|
||||||
const totalDeployCost = ref(0);
|
const totalDeployCost = ref(0);
|
||||||
const predictedAddress = ref('');
|
// const predictedAddress = ref('');
|
||||||
const predictedAddresses = reactive({}); // { chainId: address }
|
// const predictedAddresses = reactive({}); // { chainId: address }
|
||||||
const isPredicting = ref(false);
|
// const isPredicting = ref(false);
|
||||||
|
|
||||||
// Ключ блокчейн-скана (единый Etherscan V2)
|
// Ключ блокчейн-скана (единый Etherscan V2)
|
||||||
// Единый ключ Etherscan V2 и авто-верификация
|
// Единый ключ Etherscan V2 и авто-верификация
|
||||||
@@ -996,32 +1036,32 @@ const hasSelectedNetworks = computed(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Инициализация при смене выбранных сетей
|
// Инициализация при смене выбранных сетей
|
||||||
watch(selectedNetworkDetails, (nets) => {
|
// watch(selectedNetworkDetails, (nets) => {
|
||||||
if (nets && nets.length > 0) predictAddresses();
|
// if (nets && nets.length > 0) predictAddresses();
|
||||||
}, { immediate: true });
|
// }, { immediate: true });
|
||||||
|
|
||||||
// Предсказание адресов (упрощенно через бэкенд)
|
// Предсказание адресов (упрощенно через бэкенд) - отключено
|
||||||
async function predictAddresses() {
|
// async function predictAddresses() {
|
||||||
try {
|
// try {
|
||||||
isPredicting.value = true;
|
// isPredicting.value = true;
|
||||||
const payload = {
|
// const payload = {
|
||||||
name: dleSettings.name,
|
// name: dleSettings.name,
|
||||||
symbol: dleSettings.tokenSymbol,
|
// symbol: dleSettings.tokenSymbol,
|
||||||
selectedNetworks: selectedNetworkDetails.value.map(n => n.chainId)
|
// selectedNetworks: selectedNetworkDetails.value.map(n => n.chainId)
|
||||||
};
|
// };
|
||||||
const resp = await axios.post('/dle-v2/predict-addresses', payload);
|
// const resp = await axios.post('/dle-v2/predict-addresses', payload);
|
||||||
if (resp.data && resp.data.success && resp.data.data) {
|
// if (resp.data && resp.data.success && resp.data.data) {
|
||||||
// ожидаем вид { [chainId]: address }
|
// // ожидаем вид { [chainId]: address }
|
||||||
Object.keys(predictedAddresses).forEach(k => delete predictedAddresses[k]);
|
// Object.keys(predictedAddresses).forEach(k => delete predictedAddresses[k]);
|
||||||
Object.assign(predictedAddresses, resp.data.data);
|
// Object.assign(predictedAddresses, resp.data.data);
|
||||||
}
|
// }
|
||||||
} catch (e) {
|
// } catch (e) {
|
||||||
console.error('Ошибка расчета предсказанных адресов:', e);
|
// console.error('Ошибка расчета предсказанных адресов:', e);
|
||||||
alert('Не удалось рассчитать предсказанные адреса');
|
// alert('Не удалось рассчитать предсказанные адреса');
|
||||||
} finally {
|
// } finally {
|
||||||
isPredicting.value = false;
|
// isPredicting.value = false;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
function copyToClipboard(text) {
|
function copyToClipboard(text) {
|
||||||
navigator.clipboard?.writeText(text).then(() => {
|
navigator.clipboard?.writeText(text).then(() => {
|
||||||
@@ -1340,7 +1380,7 @@ const hasSelectedData = computed(() => {
|
|||||||
// Мульти-чейн данные
|
// Мульти-чейн данные
|
||||||
(dleSettings.selectedNetworks && dleSettings.selectedNetworks.length > 0) ||
|
(dleSettings.selectedNetworks && dleSettings.selectedNetworks.length > 0) ||
|
||||||
dleSettings.tokenStandard !== 'ERC20' ||
|
dleSettings.tokenStandard !== 'ERC20' ||
|
||||||
dleSettings.predictedAddress ||
|
// dleSettings.predictedAddress ||
|
||||||
unifiedPrivateKey.value ||
|
unifiedPrivateKey.value ||
|
||||||
Object.keys(privateKeys).length > 0 ||
|
Object.keys(privateKeys).length > 0 ||
|
||||||
// Устаревшие поля
|
// Устаревшие поля
|
||||||
@@ -1373,7 +1413,7 @@ const saveFormData = () => {
|
|||||||
// Мульти-чейн данные
|
// Мульти-чейн данные
|
||||||
selectedNetworks: selectedNetworks.value,
|
selectedNetworks: selectedNetworks.value,
|
||||||
totalDeployCost: totalDeployCost.value,
|
totalDeployCost: totalDeployCost.value,
|
||||||
predictedAddress: predictedAddress.value,
|
// predictedAddress: predictedAddress.value,
|
||||||
useSameKeyForAllChains: useSameKeyForAllChains.value,
|
useSameKeyForAllChains: useSameKeyForAllChains.value,
|
||||||
unifiedPrivateKey: unifiedPrivateKey.value,
|
unifiedPrivateKey: unifiedPrivateKey.value,
|
||||||
privateKeys: { ...privateKeys },
|
privateKeys: { ...privateKeys },
|
||||||
@@ -1420,6 +1460,7 @@ const loadFormData = () => {
|
|||||||
selectedOkved: parsedData.selectedOkved || [],
|
selectedOkved: parsedData.selectedOkved || [],
|
||||||
name: parsedData.name || '',
|
name: parsedData.name || '',
|
||||||
tokenSymbol: parsedData.tokenSymbol || '',
|
tokenSymbol: parsedData.tokenSymbol || '',
|
||||||
|
tokenImage: parsedData.tokenImage || '',
|
||||||
partners: parsedData.partners || [{ address: '', amount: 1 }],
|
partners: parsedData.partners || [{ address: '', amount: 1 }],
|
||||||
governanceQuorum: parsedData.governanceQuorum || 51,
|
governanceQuorum: parsedData.governanceQuorum || 51,
|
||||||
// Координаты
|
// Координаты
|
||||||
@@ -1427,7 +1468,7 @@ const loadFormData = () => {
|
|||||||
// Мульти-чейн настройки
|
// Мульти-чейн настройки
|
||||||
selectedNetworks: parsedData.selectedNetworks || [],
|
selectedNetworks: parsedData.selectedNetworks || [],
|
||||||
tokenStandard: parsedData.tokenStandard || 'ERC20',
|
tokenStandard: parsedData.tokenStandard || 'ERC20',
|
||||||
predictedAddress: parsedData.predictedAddress || '',
|
// predictedAddress: parsedData.predictedAddress || '',
|
||||||
// Устаревшие поля
|
// Устаревшие поля
|
||||||
deployNetwork: parsedData.deployNetwork || '',
|
deployNetwork: parsedData.deployNetwork || '',
|
||||||
privateKey: parsedData.privateKey || ''
|
privateKey: parsedData.privateKey || ''
|
||||||
@@ -1446,7 +1487,7 @@ const loadFormData = () => {
|
|||||||
// Восстанавливаем мульти-чейн состояние
|
// Восстанавливаем мульти-чейн состояние
|
||||||
selectedNetworks.value = parsedData.selectedNetworks || [];
|
selectedNetworks.value = parsedData.selectedNetworks || [];
|
||||||
totalDeployCost.value = parsedData.totalDeployCost || 0;
|
totalDeployCost.value = parsedData.totalDeployCost || 0;
|
||||||
predictedAddress.value = parsedData.predictedAddress || '';
|
// predictedAddress.value = parsedData.predictedAddress || '';
|
||||||
useSameKeyForAllChains.value = parsedData.useSameKeyForAllChains !== undefined ? parsedData.useSameKeyForAllChains : true;
|
useSameKeyForAllChains.value = parsedData.useSameKeyForAllChains !== undefined ? parsedData.useSameKeyForAllChains : true;
|
||||||
unifiedPrivateKey.value = parsedData.unifiedPrivateKey || '';
|
unifiedPrivateKey.value = parsedData.unifiedPrivateKey || '';
|
||||||
Object.assign(privateKeys, parsedData.privateKeys || {});
|
Object.assign(privateKeys, parsedData.privateKeys || {});
|
||||||
@@ -1500,13 +1541,14 @@ const clearAllData = () => {
|
|||||||
dleSettings.selectedOkved = [];
|
dleSettings.selectedOkved = [];
|
||||||
dleSettings.name = '';
|
dleSettings.name = '';
|
||||||
dleSettings.tokenSymbol = '';
|
dleSettings.tokenSymbol = '';
|
||||||
|
dleSettings.tokenImage = ''; // Очищаем картинку токена
|
||||||
dleSettings.partners = [{ address: '', amount: 1 }]; // Сброс к одному пустому партнеру
|
dleSettings.partners = [{ address: '', amount: 1 }]; // Сброс к одному пустому партнеру
|
||||||
dleSettings.governanceQuorum = 51; // Сброс кворума к значению по умолчанию
|
dleSettings.governanceQuorum = 51; // Сброс кворума к значению по умолчанию
|
||||||
|
|
||||||
// Очищаем мульти-чейн настройки
|
// Очищаем мульти-чейн настройки
|
||||||
dleSettings.selectedNetworks = [];
|
dleSettings.selectedNetworks = [];
|
||||||
dleSettings.tokenStandard = 'ERC20'; // Сбрасываем к стандартному ERC-20
|
dleSettings.tokenStandard = 'ERC20'; // Сбрасываем к стандартному ERC-20
|
||||||
dleSettings.predictedAddress = '';
|
// dleSettings.predictedAddress = '';
|
||||||
|
|
||||||
// Очищаем координаты
|
// Очищаем координаты
|
||||||
dleSettings.coordinates = '';
|
dleSettings.coordinates = '';
|
||||||
@@ -1528,7 +1570,7 @@ const clearAllData = () => {
|
|||||||
// Очищаем мульти-чейн состояние
|
// Очищаем мульти-чейн состояние
|
||||||
selectedNetworks.value = [];
|
selectedNetworks.value = [];
|
||||||
totalDeployCost.value = 0;
|
totalDeployCost.value = 0;
|
||||||
predictedAddress.value = '';
|
// predictedAddress.value = '';
|
||||||
useSameKeyForAllChains.value = true;
|
useSameKeyForAllChains.value = true;
|
||||||
unifiedPrivateKey.value = '';
|
unifiedPrivateKey.value = '';
|
||||||
Object.keys(privateKeys).forEach(key => delete privateKeys[key]);
|
Object.keys(privateKeys).forEach(key => delete privateKeys[key]);
|
||||||
@@ -1773,6 +1815,89 @@ const formatTokenSymbol = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Функции для работы с картинкой токена
|
||||||
|
const tokenImageInput = ref(null);
|
||||||
|
|
||||||
|
// Запуск выбора файла
|
||||||
|
const triggerImageUpload = () => {
|
||||||
|
tokenImageInput.value?.click();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Обработка загрузки изображения
|
||||||
|
const handleTokenImageUpload = (event) => {
|
||||||
|
const file = event.target.files[0];
|
||||||
|
if (!file) return;
|
||||||
|
|
||||||
|
// Проверка типа файла
|
||||||
|
if (!file.type.startsWith('image/')) {
|
||||||
|
alert('Пожалуйста, выберите файл изображения (JPG, PNG, GIF)');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверка размера файла (максимум 1MB)
|
||||||
|
const maxSize = 1 * 1024 * 1024; // 1MB
|
||||||
|
if (file.size > maxSize) {
|
||||||
|
alert('Размер файла не должен превышать 1MB');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Создаем canvas для сжатия изображения
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
const img = new Image();
|
||||||
|
|
||||||
|
img.onload = () => {
|
||||||
|
// Ограничиваем размер изображения
|
||||||
|
const maxWidth = 200;
|
||||||
|
const maxHeight = 200;
|
||||||
|
|
||||||
|
let { width, height } = img;
|
||||||
|
if (width > maxWidth) {
|
||||||
|
height = (height * maxWidth) / width;
|
||||||
|
width = maxWidth;
|
||||||
|
}
|
||||||
|
if (height > maxHeight) {
|
||||||
|
width = (width * maxHeight) / height;
|
||||||
|
height = maxHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas.width = width;
|
||||||
|
canvas.height = height;
|
||||||
|
ctx.drawImage(img, 0, 0, width, height);
|
||||||
|
|
||||||
|
// Конвертируем в base64 с сжатием
|
||||||
|
const compressedDataUrl = canvas.toDataURL('image/jpeg', 0.7); // 70% качество
|
||||||
|
|
||||||
|
// Проверяем размер base64 (максимум 350 байт)
|
||||||
|
const base64Size = compressedDataUrl.length;
|
||||||
|
if (base64Size > 350) {
|
||||||
|
alert(`Изображение слишком большое (${base64Size} байт). Максимальный размер: 350 байт. Попробуйте уменьшить размер или качество изображения.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dleSettings.tokenImage = compressedDataUrl;
|
||||||
|
// Сохраняем в localStorage
|
||||||
|
saveFormData();
|
||||||
|
};
|
||||||
|
|
||||||
|
img.onerror = () => {
|
||||||
|
alert('Ошибка при загрузке изображения');
|
||||||
|
};
|
||||||
|
|
||||||
|
img.src = URL.createObjectURL(file);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Удаление картинки токена
|
||||||
|
const removeTokenImage = () => {
|
||||||
|
dleSettings.tokenImage = '';
|
||||||
|
// Очищаем input
|
||||||
|
if (tokenImageInput.value) {
|
||||||
|
tokenImageInput.value.value = '';
|
||||||
|
}
|
||||||
|
// Сохраняем в localStorage
|
||||||
|
saveFormData();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Функция загрузки стран
|
// Функция загрузки стран
|
||||||
const loadCountries = async () => {
|
const loadCountries = async () => {
|
||||||
@@ -2026,16 +2151,16 @@ const updateDeployCost = () => {
|
|||||||
.reduce((sum, network) => sum + network.estimatedCost, 0);
|
.reduce((sum, network) => sum + network.estimatedCost, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Копирование адреса DLE
|
// Копирование адреса DLE - отключено
|
||||||
const copyAddress = async () => {
|
// const copyAddress = async () => {
|
||||||
try {
|
// try {
|
||||||
await navigator.clipboard.writeText(predictedAddress.value);
|
// await navigator.clipboard.writeText(predictedAddress.value);
|
||||||
console.log('Адрес скопирован:', predictedAddress.value);
|
// console.log('Адрес скопирован:', predictedAddress.value);
|
||||||
// TODO: Показать уведомление об успешном копировании
|
// // TODO: Показать уведомление об успешном копировании
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
console.error('Ошибка копирования адреса:', error);
|
// console.error('Ошибка копирования адреса:', error);
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
// Функция переключения использования одного ключа
|
// Функция переключения использования одного ключа
|
||||||
const toggleSameKey = () => {
|
const toggleSameKey = () => {
|
||||||
@@ -2228,28 +2353,28 @@ watch(unifiedPrivateKey, (newValue) => {
|
|||||||
}, 100);
|
}, 100);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Watcher для predictedAddress - синхронизация с dleSettings
|
// Watcher для predictedAddress - синхронизация с dleSettings - отключено
|
||||||
watch(predictedAddress, (newAddress) => {
|
// watch(predictedAddress, (newAddress) => {
|
||||||
if (dleSettings.predictedAddress !== newAddress) {
|
// if (dleSettings.predictedAddress !== newAddress) {
|
||||||
dleSettings.predictedAddress = newAddress;
|
// dleSettings.predictedAddress = newAddress;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Вычисление предсказанного адреса при изменении ключевых данных
|
// Вычисление предсказанного адреса при изменении ключевых данных - отключено
|
||||||
watch([() => dleSettings.name, () => dleSettings.tokenSymbol, selectedNetworks], () => {
|
// watch([() => dleSettings.name, () => dleSettings.tokenSymbol, selectedNetworks], () => {
|
||||||
// TODO: Реализовать вычисление предсказанного адреса через API
|
// // TODO: Реализовать вычисление предсказанного адреса через API
|
||||||
if (dleSettings.name && dleSettings.tokenSymbol && selectedNetworks.value.length > 0) {
|
// if (dleSettings.name && dleSettings.tokenSymbol && selectedNetworks.value.length > 0) {
|
||||||
// Заглушка - в реальности будет API запрос
|
// // Заглушка - в реальности будет API запрос
|
||||||
const newAddress = '0x' + Math.random().toString(16).substr(2, 40);
|
// const newAddress = '0x' + Math.random().toString(16).substr(2, 40);
|
||||||
if (predictedAddress.value !== newAddress) {
|
// if (predictedAddress.value !== newAddress) {
|
||||||
predictedAddress.value = newAddress;
|
// predictedAddress.value = newAddress;
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
if (predictedAddress.value !== '') {
|
// if (predictedAddress.value !== '') {
|
||||||
predictedAddress.value = '';
|
// predictedAddress.value = '';
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}, { deep: true });
|
// }, { deep: true });
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@@ -2373,6 +2498,7 @@ const deploySmartContracts = async () => {
|
|||||||
// Основная информация DLE
|
// Основная информация DLE
|
||||||
name: dleSettings.name,
|
name: dleSettings.name,
|
||||||
symbol: dleSettings.tokenSymbol,
|
symbol: dleSettings.tokenSymbol,
|
||||||
|
tokenImage: dleSettings.tokenImage, // Картинка токена
|
||||||
location: dleSettings.addressData.fullAddress || 'Не указан',
|
location: dleSettings.addressData.fullAddress || 'Не указан',
|
||||||
coordinates: dleSettings.coordinates || '0,0',
|
coordinates: dleSettings.coordinates || '0,0',
|
||||||
jurisdiction: parseInt(dleSettings.jurisdiction) || 0,
|
jurisdiction: parseInt(dleSettings.jurisdiction) || 0,
|
||||||
@@ -2438,7 +2564,7 @@ const deploySmartContracts = async () => {
|
|||||||
deployStatus.value = '✅ DLE успешно развернут!';
|
deployStatus.value = '✅ DLE успешно развернут!';
|
||||||
|
|
||||||
// Сохраняем адрес контракта
|
// Сохраняем адрес контракта
|
||||||
dleSettings.predictedAddress = response.data.data?.dleAddress || 'Адрес будет доступен после деплоя';
|
// dleSettings.predictedAddress = response.data.data?.dleAddress || 'Адрес будет доступен после деплоя';
|
||||||
|
|
||||||
// Небольшая задержка для показа успешного завершения
|
// Небольшая задержка для показа успешного завершения
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -4258,4 +4384,109 @@ const validateCoordinates = (coordinates) => {
|
|||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Стили для загрузки картинки токена */
|
||||||
|
.token-image-upload {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-area {
|
||||||
|
border: 2px dashed #ddd;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
background: #fafafa;
|
||||||
|
min-height: 150px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-area:hover {
|
||||||
|
border-color: var(--color-primary);
|
||||||
|
background: #f0f8ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-placeholder {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-placeholder i {
|
||||||
|
font-size: 3rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-placeholder p {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload-placeholder small {
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-preview {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token-image {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 200px;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-overlay {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.3s ease;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-preview:hover .image-overlay {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-overlay .btn {
|
||||||
|
background: rgba(220, 53, 69, 0.9);
|
||||||
|
border: none;
|
||||||
|
color: white;
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-overlay .btn:hover {
|
||||||
|
background: rgba(220, 53, 69, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Стили для превью картинки токена */
|
||||||
|
.token-image-preview {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-token-image {
|
||||||
|
max-width: 100px;
|
||||||
|
max-height: 100px;
|
||||||
|
border-radius: 6px;
|
||||||
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,5 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is proprietary and confidential.
|
||||||
|
* Unauthorized copying, modification, or distribution is prohibited.
|
||||||
|
*
|
||||||
|
* For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
* Website: https://hb3-accelerator.com
|
||||||
|
* GitHub: https://github.com/VC-HB3-Accelerator
|
||||||
|
*/
|
||||||
|
|
||||||
# Скрипт для переноса зашифрованных данных между серверами
|
# Скрипт для переноса зашифрованных данных между серверами
|
||||||
# Использование: ./migrate-encrypted-data.sh
|
# Использование: ./migrate-encrypted-data.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is proprietary and confidential.
|
||||||
|
* Unauthorized copying, modification, or distribution is prohibited.
|
||||||
|
*
|
||||||
|
* For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
* Website: https://hb3-accelerator.com
|
||||||
|
* GitHub: https://github.com/VC-HB3-Accelerator
|
||||||
|
*/
|
||||||
|
|
||||||
if ! docker exec dapp-postgres pg_isready -U dapp_user -d dapp_db > /dev/null 2>&1; then
|
if ! docker exec dapp-postgres pg_isready -U dapp_user -d dapp_db > /dev/null 2>&1; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is proprietary and confidential.
|
||||||
|
* Unauthorized copying, modification, or distribution is prohibited.
|
||||||
|
*
|
||||||
|
* For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
* Website: https://hb3-accelerator.com
|
||||||
|
* GitHub: https://github.com/VC-HB3-Accelerator
|
||||||
|
*/
|
||||||
|
|
||||||
# Скрипт мониторинга безопасности для DLE
|
# Скрипт мониторинга безопасности для DLE
|
||||||
# Автоматически блокирует подозрительные IP адреса и домены
|
# Автоматически блокирует подозрительные IP адреса и домены
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is proprietary and confidential.
|
||||||
|
* Unauthorized copying, modification, or distribution is prohibited.
|
||||||
|
*
|
||||||
|
* For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
* Website: https://hb3-accelerator.com
|
||||||
|
* GitHub: https://github.com/VC-HB3-Accelerator
|
||||||
|
*/
|
||||||
|
|
||||||
# Простой скрипт для запуска мониторинга безопасности
|
# Простой скрипт для запуска мониторинга безопасности
|
||||||
# Использование: ./start-security-monitor.sh
|
# Использование: ./start-security-monitor.sh
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user