@diamondslab/diamonds 1.0.0
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.
- package/README.md +618 -0
- package/diamonds/README.md +3 -0
- package/dist/core/CallbackManager.d.ts +13 -0
- package/dist/core/CallbackManager.d.ts.map +1 -0
- package/dist/core/CallbackManager.js +95 -0
- package/dist/core/CallbackManager.js.map +1 -0
- package/dist/core/DeploymentManager.d.ts +10 -0
- package/dist/core/DeploymentManager.d.ts.map +1 -0
- package/dist/core/DeploymentManager.js +50 -0
- package/dist/core/DeploymentManager.js.map +1 -0
- package/dist/core/Diamond.d.ts +58 -0
- package/dist/core/Diamond.d.ts.map +1 -0
- package/dist/core/Diamond.js +146 -0
- package/dist/core/Diamond.js.map +1 -0
- package/dist/core/DiamondDeployer.d.ts +10 -0
- package/dist/core/DiamondDeployer.d.ts.map +1 -0
- package/dist/core/DiamondDeployer.js +33 -0
- package/dist/core/DiamondDeployer.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories/DBDeploymentRepository.d.ts +1 -0
- package/dist/repositories/DBDeploymentRepository.d.ts.map +1 -0
- package/dist/repositories/DBDeploymentRepository.js +20 -0
- package/dist/repositories/DBDeploymentRepository.js.map +1 -0
- package/dist/repositories/DeploymentRepository.d.ts +8 -0
- package/dist/repositories/DeploymentRepository.d.ts.map +1 -0
- package/dist/repositories/DeploymentRepository.js +7 -0
- package/dist/repositories/DeploymentRepository.js.map +1 -0
- package/dist/repositories/FileDeploymentRepository.d.ts +18 -0
- package/dist/repositories/FileDeploymentRepository.d.ts.map +1 -0
- package/dist/repositories/FileDeploymentRepository.js +58 -0
- package/dist/repositories/FileDeploymentRepository.js.map +1 -0
- package/dist/repositories/databaseHandler.d.ts +1 -0
- package/dist/repositories/databaseHandler.d.ts.map +1 -0
- package/dist/repositories/databaseHandler.js +13 -0
- package/dist/repositories/databaseHandler.js.map +1 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +20 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/jsonFileHandler.d.ts +81 -0
- package/dist/repositories/jsonFileHandler.d.ts.map +1 -0
- package/dist/repositories/jsonFileHandler.js +223 -0
- package/dist/repositories/jsonFileHandler.js.map +1 -0
- package/dist/repositories/prismaDBHandler.d.ts +1 -0
- package/dist/repositories/prismaDBHandler.d.ts.map +1 -0
- package/dist/repositories/prismaDBHandler.js +11 -0
- package/dist/repositories/prismaDBHandler.js.map +1 -0
- package/dist/schemas/DeploymentSchema.d.ts +309 -0
- package/dist/schemas/DeploymentSchema.d.ts.map +1 -0
- package/dist/schemas/DeploymentSchema.js +56 -0
- package/dist/schemas/DeploymentSchema.js.map +1 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/strategies/BaseDeploymentStrategy.d.ts +41 -0
- package/dist/strategies/BaseDeploymentStrategy.d.ts.map +1 -0
- package/dist/strategies/BaseDeploymentStrategy.js +545 -0
- package/dist/strategies/BaseDeploymentStrategy.js.map +1 -0
- package/dist/strategies/DeploymentStrategy.d.ts +19 -0
- package/dist/strategies/DeploymentStrategy.d.ts.map +1 -0
- package/dist/strategies/DeploymentStrategy.js +3 -0
- package/dist/strategies/DeploymentStrategy.js.map +1 -0
- package/dist/strategies/LocalDeploymentStrategy.d.ts +4 -0
- package/dist/strategies/LocalDeploymentStrategy.d.ts.map +1 -0
- package/dist/strategies/LocalDeploymentStrategy.js +8 -0
- package/dist/strategies/LocalDeploymentStrategy.js.map +1 -0
- package/dist/strategies/OZDefenderDeploymentStrategy.d.ts +62 -0
- package/dist/strategies/OZDefenderDeploymentStrategy.d.ts.map +1 -0
- package/dist/strategies/OZDefenderDeploymentStrategy.js +757 -0
- package/dist/strategies/OZDefenderDeploymentStrategy.js.map +1 -0
- package/dist/strategies/RPCDeploymentStrategy.d.ts +139 -0
- package/dist/strategies/RPCDeploymentStrategy.d.ts.map +1 -0
- package/dist/strategies/RPCDeploymentStrategy.js +710 -0
- package/dist/strategies/RPCDeploymentStrategy.js.map +1 -0
- package/dist/strategies/index.d.ts +6 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +12 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/types/config.d.ts +26 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/defender.d.ts +22 -0
- package/dist/types/defender.d.ts.map +1 -0
- package/dist/types/defender.js +3 -0
- package/dist/types/defender.js.map +1 -0
- package/dist/types/deployments.d.ts +71 -0
- package/dist/types/deployments.d.ts.map +1 -0
- package/dist/types/deployments.js +20 -0
- package/dist/types/deployments.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/rpc.d.ts +35 -0
- package/dist/types/rpc.d.ts.map +1 -0
- package/dist/types/rpc.js +3 -0
- package/dist/types/rpc.js.map +1 -0
- package/dist/utils/common.d.ts +20 -0
- package/dist/utils/common.d.ts.map +1 -0
- package/dist/utils/common.js +45 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/configurationResolver.d.ts +30 -0
- package/dist/utils/configurationResolver.d.ts.map +1 -0
- package/dist/utils/configurationResolver.js +151 -0
- package/dist/utils/configurationResolver.js.map +1 -0
- package/dist/utils/contractMapping.d.ts +29 -0
- package/dist/utils/contractMapping.d.ts.map +1 -0
- package/dist/utils/contractMapping.js +224 -0
- package/dist/utils/contractMapping.js.map +1 -0
- package/dist/utils/defenderClients.d.ts +5 -0
- package/dist/utils/defenderClients.d.ts.map +1 -0
- package/dist/utils/defenderClients.js +21 -0
- package/dist/utils/defenderClients.js.map +1 -0
- package/dist/utils/defenderStore.d.ts +14 -0
- package/dist/utils/defenderStore.d.ts.map +1 -0
- package/dist/utils/defenderStore.js +92 -0
- package/dist/utils/defenderStore.js.map +1 -0
- package/dist/utils/diamondAbiGenerator.d.ts +113 -0
- package/dist/utils/diamondAbiGenerator.d.ts.map +1 -0
- package/dist/utils/diamondAbiGenerator.js +415 -0
- package/dist/utils/diamondAbiGenerator.js.map +1 -0
- package/dist/utils/diffDeployedFacets.d.ts +26 -0
- package/dist/utils/diffDeployedFacets.d.ts.map +1 -0
- package/dist/utils/diffDeployedFacets.js +106 -0
- package/dist/utils/diffDeployedFacets.js.map +1 -0
- package/dist/utils/index.d.ts +16 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +35 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/loupe.d.ts +44 -0
- package/dist/utils/loupe.d.ts.map +1 -0
- package/dist/utils/loupe.js +128 -0
- package/dist/utils/loupe.js.map +1 -0
- package/dist/utils/rpcStore.d.ts +36 -0
- package/dist/utils/rpcStore.d.ts.map +1 -0
- package/dist/utils/rpcStore.js +166 -0
- package/dist/utils/rpcStore.js.map +1 -0
- package/dist/utils/signer.d.ts +36 -0
- package/dist/utils/signer.d.ts.map +1 -0
- package/dist/utils/signer.js +91 -0
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils/txlogging.d.ts +13 -0
- package/dist/utils/txlogging.d.ts.map +1 -0
- package/dist/utils/txlogging.js +87 -0
- package/dist/utils/txlogging.js.map +1 -0
- package/dist/utils/workspaceSetup.d.ts +32 -0
- package/dist/utils/workspaceSetup.d.ts.map +1 -0
- package/dist/utils/workspaceSetup.js +311 -0
- package/dist/utils/workspaceSetup.js.map +1 -0
- package/docs/DIAMOND_ABI_CONFIGURATION_SUMMARY.md +40 -0
- package/docs/DIAMOND_ABI_GENERATION.md +220 -0
- package/docs/DIAMOND_ABI_GENERATOR_EXAMPLES.md +1204 -0
- package/docs/DIAMOND_ABI_GENERATOR_IMPLEMENTATION.md +947 -0
- package/docs/DIAMOND_ABI_GENERATOR_QUICK_REFERENCE.md +336 -0
- package/docs/README-DEFENDER.md +394 -0
- package/docs/README_DIAMOND_ABI_GENERATOR.md +303 -0
- package/docs/ROADMAP.md +250 -0
- package/docs/assets/image.png +0 -0
- package/docs/defender-integration.md +451 -0
- package/docs/diamond_module-BaseStrategy_design-v2.uxf +247 -0
- package/docs/diamond_module-BaseStrategy_design.uxf +272 -0
- package/docs/monitoring-troubleshooting.md +556 -0
- package/docs/testing-guide.md +713 -0
- package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/callbacks/ERC20ProxyFacet.ts +31 -0
- package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/proxydiamond.config.json +27 -0
- package/examples/Local_Hardhat_Deployer_Script_example/LocalDiamondDeployer.ts +180 -0
- package/examples/OZ_Defender_Deployer_Script_example/OZDiamondDeployer.ts +107 -0
- package/examples/OZ_Defender_Deployer_Script_example/run-oz-deploy.ts +17 -0
- package/examples/Test_examples/ProxyDiamondDeployment.test.ts +202 -0
- package/examples/defender-deployment/.env.example +35 -0
- package/examples/defender-deployment/README.md +415 -0
- package/examples/defender-deployment/contracts/ExampleDiamond.sol +41 -0
- package/examples/defender-deployment/contracts/ExampleFacet1.sol +84 -0
- package/examples/defender-deployment/contracts/ExampleFacet2.sol +104 -0
- package/examples/defender-deployment/contracts/UpgradeFacet.sol +92 -0
- package/examples/defender-deployment/deploy-script.ts +170 -0
- package/examples/defender-deployment/diamond-config.json +36 -0
- package/examples/defender-deployment/upgrade-script.ts +237 -0
- package/examples/hardhat-diamonds-config.example.ts +41 -0
- package/package.json +228 -0
- package/src/core/CallbackManager.ts +70 -0
- package/src/core/DeploymentManager.ts +64 -0
- package/src/core/Diamond.ts +197 -0
- package/src/core/DiamondDeployer.ts +36 -0
- package/src/core/index.ts +4 -0
- package/src/index.ts +5 -0
- package/src/repositories/DBDeploymentRepository.ts +22 -0
- package/src/repositories/DeploymentRepository.ts +12 -0
- package/src/repositories/FileDeploymentRepository.ts +67 -0
- package/src/repositories/databaseHandler.ts +14 -0
- package/src/repositories/index.ts +4 -0
- package/src/repositories/jsonFileHandler.ts +252 -0
- package/src/repositories/prismaDBHandler.ts +10 -0
- package/src/schemas/DeploymentSchema.ts +71 -0
- package/src/schemas/index.ts +1 -0
- package/src/strategies/BaseDeploymentStrategy.ts +649 -0
- package/src/strategies/DeploymentStrategy.ts +25 -0
- package/src/strategies/LocalDeploymentStrategy.ts +5 -0
- package/src/strategies/OZDefenderDeploymentStrategy.ts +849 -0
- package/src/strategies/RPCDeploymentStrategy.ts +881 -0
- package/src/strategies/index.ts +5 -0
- package/src/types/config.ts +34 -0
- package/src/types/defender.ts +24 -0
- package/src/types/deployments.ts +102 -0
- package/src/types/index.ts +4 -0
- package/src/types/rpc.ts +37 -0
- package/src/utils/common.ts +54 -0
- package/src/utils/configurationResolver.ts +141 -0
- package/src/utils/contractMapping.ts +220 -0
- package/src/utils/defenderClients.ts +22 -0
- package/src/utils/defenderStore.ts +62 -0
- package/src/utils/diamondAbiGenerator.ts +523 -0
- package/src/utils/diffDeployedFacets.ts +131 -0
- package/src/utils/index.ts +15 -0
- package/src/utils/loupe.ts +159 -0
- package/src/utils/rpcStore.ts +152 -0
- package/src/utils/signer.ts +93 -0
- package/src/utils/txlogging.ts +97 -0
- package/src/utils/workspaceSetup.ts +315 -0
- package/test/README.md +136 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
<diagram program="umletino" version="15.1"><zoom_level>9</zoom_level><help_text>lt=<<
|
|
2
|
+
exclusionFilter</help_text><element><id>UMLClass</id><coordinates><x>486</x><y>487</y><w>225</w><h>108</h></coordinates><panel_attributes>prioritySortedDeployedFuncSelectors
|
|
3
|
+
--
|
|
4
|
+
> funcSel: 0x
|
|
5
|
+
> facetAddress: 0x address
|
|
6
|
+
> priority: int
|
|
7
|
+
|
|
8
|
+
From previous deployment file
|
|
9
|
+
sorted by priority
|
|
10
|
+
group=group-0
|
|
11
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>477</x><y>631</y><w>234</w><h>369</h></coordinates><panel_attributes>functionSelectorRegistry
|
|
12
|
+
--
|
|
13
|
+
> key: 0x function selector
|
|
14
|
+
> facetAddress: 0x address
|
|
15
|
+
> priority: number
|
|
16
|
+
> status: enum {
|
|
17
|
+
deployed,
|
|
18
|
+
add
|
|
19
|
+
replace
|
|
20
|
+
remove
|
|
21
|
+
|
|
22
|
+
Initiallly includes all selectors from deployedFuncSelectors as deployed
|
|
23
|
+
|
|
24
|
+
style=wordwrap
|
|
25
|
+
|
|
26
|
+
group=group-0
|
|
27
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>405</x><y>1054</y><w>189</w><h>36</h></coordinates><panel_attributes>*5. DiamonCut Transaction*
|
|
28
|
+
|
|
29
|
+
fontsize=15
|
|
30
|
+
|
|
31
|
+
group=group-0
|
|
32
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>585</x><y>586</y><w>27</w><h>63</h></coordinates><panel_attributes>lt=<<-
|
|
33
|
+
group=group-0
|
|
34
|
+
layer=3</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>801</x><y>469</y><w>207</w><h>99</h></coordinates><panel_attributes>higherPriorityDeployedFuncSelectors
|
|
35
|
+
--
|
|
36
|
+
> funcSel: 0x
|
|
37
|
+
> priority: int
|
|
38
|
+
|
|
39
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>801</x><y>829</y><w>189</w><h>63</h></coordinates><panel_attributes>lowerPriorityDeployedFuncSelectors
|
|
40
|
+
--
|
|
41
|
+
> funcSel: 0x
|
|
42
|
+
> priority: int
|
|
43
|
+
|
|
44
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1323</x><y>397</y><w>135</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
45
|
+
</panel_attributes><additional_attributes>10;10;130;60</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1152</x><y>316</y><w>180</w><h>135</h></coordinates><panel_attributes>diamond.newDeployedFacets
|
|
46
|
+
--
|
|
47
|
+
> facetName {
|
|
48
|
+
> facetAddress: 0x address
|
|
49
|
+
> tx_hash: string
|
|
50
|
+
> initFunction: string
|
|
51
|
+
> priority: int
|
|
52
|
+
> version: number
|
|
53
|
+
> allFuncSels: string[ ]
|
|
54
|
+
> deployInclude: string[ ];
|
|
55
|
+
> verified: boolean;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
style=wordwrap
|
|
59
|
+
layer=3
|
|
60
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1125</x><y>163</y><w>189</w><h>90</h></coordinates><panel_attributes>facetConfig
|
|
61
|
+
--
|
|
62
|
+
> facetName:
|
|
63
|
+
>> address
|
|
64
|
+
>> priority
|
|
65
|
+
>> versions
|
|
66
|
+
layer=3
|
|
67
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>198</x><y>163</y><w>252</w><h>180</h></coordinates><panel_attributes>*deployedDiamondData*
|
|
68
|
+
--
|
|
69
|
+
> DiamondAddress: 0x address
|
|
70
|
+
> DiamondDeployer: 0x address
|
|
71
|
+
> Version: float
|
|
72
|
+
> Facets: [
|
|
73
|
+
> facetName:
|
|
74
|
+
> address
|
|
75
|
+
> version
|
|
76
|
+
> functionSelectors: funcSelector[ ]
|
|
77
|
+
|
|
78
|
+
group=group-0
|
|
79
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>882</x><y>172</y><w>189</w><h>81</h></coordinates><panel_attributes>diamond.config.facets
|
|
80
|
+
--
|
|
81
|
+
ProtocolInitFacet: string facetName
|
|
82
|
+
exlude: 0x[ ] (function selectors to be excluded from all facets)</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>702</x><y>631</y><w>126</w><h>81</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>120;10;10;70</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>810</x><y>622</y><w>171</w><h>36</h></coordinates><panel_attributes>lt=-
|
|
83
|
+
priority split
|
|
84
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>441</x><y>190</y><w>117</w><h>54</h></coordinates><panel_attributes>*facets*
|
|
85
|
+
|
|
86
|
+
lt=<<-
|
|
87
|
+
|
|
88
|
+
layer=3
|
|
89
|
+
group=group-0</panel_attributes><additional_attributes>110;22;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>972</x><y>694</y><w>108</w><h>99</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;90;100;10</additional_attributes></element><element><id>Relation</id><coordinates><x>891</x><y>559</y><w>27</w><h>81</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>Relation</id><coordinates><x>1206</x><y>244</y><w>63</w><h>90</h></coordinates><panel_attributes>lt=<<-
|
|
90
|
+
|
|
91
|
+
</panel_attributes><additional_attributes>50;80;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1062</x><y>199</y><w>81</w><h>27</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>70;10;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1440</x><y>433</y><w>90</w><h>36</h></coordinates><panel_attributes>facetContractAbi
|
|
92
|
+
layer=3
|
|
93
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>702</x><y>379</y><w>144</w><h>306</h></coordinates><panel_attributes>add/replace
|
|
94
|
+
lt=<<-</panel_attributes><additional_attributes>10;320;140;10</additional_attributes></element><element><id>Relation</id><coordinates><x>891</x><y>406</y><w>27</w><h>81</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>Relation</id><coordinates><x>972</x><y>370</y><w>198</w><h>54</h></coordinates><panel_attributes>lt=<<.
|
|
95
|
+
|
|
96
|
+
confirm function selector
|
|
97
|
+
in facet</panel_attributes><additional_attributes>10;20;200;20</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>828</x><y>352</y><w>153</w><h>63</h></coordinates><panel_attributes>lt=.
|
|
98
|
+
adhoc
|
|
99
|
+
inclusion Filter
|
|
100
|
+
fg=red
|
|
101
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>549</x><y>424</y><w>108</w><h>36</h></coordinates><panel_attributes>lt=.
|
|
102
|
+
prioritySort
|
|
103
|
+
|
|
104
|
+
group=group-0
|
|
105
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>648</x><y>217</y><w>252</w><h>243</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;250;80;250;80;10;260;10</additional_attributes></element><element><id>Relation</id><coordinates><x>594</x><y>451</y><w>27</w><h>54</h></coordinates><panel_attributes>lt=<<-
|
|
106
|
+
group=group-0
|
|
107
|
+
layer=3</panel_attributes><additional_attributes>10;40;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>1071</x><y>568</y><w>126</w><h>63</h></coordinates><panel_attributes>lt=.
|
|
108
|
+
priority removal filter
|
|
109
|
+
halign=center
|
|
110
|
+
style=wordwrap
|
|
111
|
+
fg=red
|
|
112
|
+
layer=3
|
|
113
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>999</x><y>505</y><w>90</w><h>108</h></coordinates><panel_attributes>lt=<<.
|
|
114
|
+
bg=red
|
|
115
|
+
fg=red</panel_attributes><additional_attributes>80;100;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1134</x><y>442</y><w>72</w><h>144</h></coordinates><panel_attributes>lt=<<-
|
|
116
|
+
</panel_attributes><additional_attributes>17;140;60;10</additional_attributes></element><element><id>Relation</id><coordinates><x>675</x><y>190</y><w>225</w><h>36</h></coordinates><panel_attributes>facets in config
|
|
117
|
+
lt=<<.</panel_attributes><additional_attributes>10;20;230;20</additional_attributes></element><element><id>UMLClass</id><coordinates><x>495</x><y>280</y><w>216</w><h>99</h></coordinates><panel_attributes>filteredDeployedFacets
|
|
118
|
+
--
|
|
119
|
+
> facetName:
|
|
120
|
+
> address
|
|
121
|
+
> version
|
|
122
|
+
> status: deployed | remove
|
|
123
|
+
> functionSelectors: [ ]functionselector
|
|
124
|
+
|
|
125
|
+
group=group-0
|
|
126
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>540</x><y>190</y><w>144</w><h>45</h></coordinates><panel_attributes>lt=.
|
|
127
|
+
removedFacetFilter
|
|
128
|
+
group=group-0
|
|
129
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>594</x><y>226</y><w>27</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
130
|
+
group=group-0
|
|
131
|
+
layer=3</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>819</x><y>919</y><w>153</w><h>63</h></coordinates><panel_attributes>lt=.
|
|
132
|
+
replace existing lower priority filter
|
|
133
|
+
fg=red
|
|
134
|
+
style=wordwrap
|
|
135
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>891</x><y>883</y><w>27</w><h>54</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;40;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>594</x><y>370</y><w>27</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
136
|
+
group=group-0
|
|
137
|
+
layer=3</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>702</x><y>928</y><w>135</w><h>36</h></coordinates><panel_attributes>lt=<<-
|
|
138
|
+
replace existing</panel_attributes><additional_attributes>10;20;130;20</additional_attributes></element><element><id>Relation</id><coordinates><x>621</x><y>973</y><w>297</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
139
|
+
add new function selectors</panel_attributes><additional_attributes>10;30;10;60;310;60;310;10</additional_attributes></element><element><id>Relation</id><coordinates><x>495</x><y>991</y><w>126</w><h>81</h></coordinates><panel_attributes>lt=<<-
|
|
140
|
+
add,replace,remove
|
|
141
|
+
|
|
142
|
+
group=group-0
|
|
143
|
+
layer=3</panel_attributes><additional_attributes>10;70;10;10</additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>774</x><y>271</y><w>864</w><h>783</h></coordinates><panel_attributes>*3. Iterate over facets*
|
|
144
|
+
- Perform Filtering
|
|
145
|
+
- Update FunctionSelectorRegistry
|
|
146
|
+
bg=dark_gray
|
|
147
|
+
halign=left
|
|
148
|
+
valign=top
|
|
149
|
+
fontsize=16</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1278</x><y>595</y><w>369</w><h>423</h></coordinates><panel_attributes>Filtering Details
|
|
150
|
+
--
|
|
151
|
+
--
|
|
152
|
+
*1. adhoc inclusion filter*
|
|
153
|
+
This is essentially an "override higher priority" function. Currently, if a multiple facets list the same FuncSel as 'include' the LOWER PRIORITY will be used.
|
|
154
|
+
|
|
155
|
+
A. Confirm this FuncSel is in the facet list and the higherPriorityDeployedFuncSelectors, return if not.
|
|
156
|
+
B. FuncSels present in Facet Config 'include' list and already in Registry but associated with higher priority facets will have the Registry updated with the new Facet Address. Additionally:
|
|
157
|
+
i. If the FuncSel is already be set to 'add' or 'replace' then these should remain.
|
|
158
|
+
ii. If the status is set to 'deployed' then set status to 'replace'
|
|
159
|
+
iii. If the status is set to 'remove' then set status to 'replace'
|
|
160
|
+
|
|
161
|
+
*2. Priority Removal Filter*
|
|
162
|
+
Removes FunSels that are already being included by other higher priority facets (different names) and aren't being overridden by the adhoc include list
|
|
163
|
+
|
|
164
|
+
3. Replace Existing from Same Facet Name
|
|
165
|
+
|
|
166
|
+
*4. Replace Existing Lower Priority Filter*
|
|
167
|
+
Change facet address for FuncSels.
|
|
168
|
+
Set status to `replace` for existing `deploy` FuncSels, facets that are first time deployments of lower priority will not have been processed yet there is no need to account for FuncSels marked as 'add'.
|
|
169
|
+
|
|
170
|
+
*5. Add New Function Selectors*
|
|
171
|
+
Remaining FuncSels are added.
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
style=wordwrap
|
|
175
|
+
bg=blue
|
|
176
|
+
layer=2
|
|
177
|
+
|
|
178
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>189</x><y>388</y><w>261</w><h>612</h></coordinates><panel_attributes>Diamonds Module Base Strategy
|
|
179
|
+
--
|
|
180
|
+
--
|
|
181
|
+
|
|
182
|
+
Function Selector DiamondCut Process
|
|
183
|
+
|
|
184
|
+
1. Deploy Facet contracts for new versions
|
|
185
|
+
2. Create functionSelectorRegistry from deployedf facets
|
|
186
|
+
|
|
187
|
+
3. Iterate over facets in facetConfig
|
|
188
|
+
a. Perform facet function selector filtering
|
|
189
|
+
b. Update action functionSelectorRegistry
|
|
190
|
+
|
|
191
|
+
4. Protocol Wide Exclusion Filter: Remove FuncSels in ProtocolExclude
|
|
192
|
+
|
|
193
|
+
5. DiamondCut Transaction
|
|
194
|
+
|
|
195
|
+
fontsize=14
|
|
196
|
+
style=wordwrap
|
|
197
|
+
bg=blue
|
|
198
|
+
halign=left
|
|
199
|
+
transparency=0
|
|
200
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1359</x><y>163</y><w>234</w><h>90</h></coordinates><panel_attributes>*1. Deploy Facets*
|
|
201
|
+
--
|
|
202
|
+
Version comparison / existance
|
|
203
|
+
Config -> deployedDiamondData
|
|
204
|
+
Deploy New Facets
|
|
205
|
+
|
|
206
|
+
bg=dark_gray
|
|
207
|
+
|
|
208
|
+
fontsize=15</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1305</x><y>199</y><w>72</w><h>27</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>60;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1476</x><y>244</y><w>27</w><h>207</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;210;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>954</x><y>694</y><w>126</w><h>27</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;10;120;10</additional_attributes></element><element><id>Text</id><coordinates><x>576</x><y>100</y><w>792</w><h>63</h></coordinates><panel_attributes>*Base Strategy: Facet Deployment and Upgrades, Function Selector & DiamondCut Process*
|
|
209
|
+
|
|
210
|
+
fg=#a3ffff
|
|
211
|
+
fontsize=19
|
|
212
|
+
valign=top
|
|
213
|
+
halign=center
|
|
214
|
+
style=autoresize</panel_attributes><additional_attributes></additional_attributes></element><element><id>Text</id><coordinates><x>873</x><y>37</y><w>225</w><h>72</h></coordinates><panel_attributes>*Diamonds Module*
|
|
215
|
+
fontsize=25
|
|
216
|
+
valign=top
|
|
217
|
+
halign=center
|
|
218
|
+
style=autoresize
|
|
219
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Text</id><coordinates><x>612</x><y>73</y><w>738</w><h>36</h></coordinates><panel_attributes>Robust Extensible Deployment of ERC-2535 Diamond Proxy Standard Contract Systems
|
|
220
|
+
|
|
221
|
+
fontsize=13
|
|
222
|
+
valign=top
|
|
223
|
+
halign=center
|
|
224
|
+
style=wordwrap</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>468</x><y>163</y><w>261</w><h>846</h></coordinates><panel_attributes>*2. Create FunctionSelectorRegistry*
|
|
225
|
+
|
|
226
|
+
fontsize=15
|
|
227
|
+
fg=white
|
|
228
|
+
bg=#8F20EF
|
|
229
|
+
layer=1
|
|
230
|
+
transparency=97
|
|
231
|
+
group=group-0</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1062</x><y>676</y><w>189</w><h>63</h></coordinates><panel_attributes>priorityFilteredNewDeployedFacets
|
|
232
|
+
--
|
|
233
|
+
id: Long="36548"
|
|
234
|
+
[waiting for message]</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>837</x><y>676</y><w>126</w><h>63</h></coordinates><panel_attributes>lt=.
|
|
235
|
+
replace existing
|
|
236
|
+
same facet filter
|
|
237
|
+
halign=center
|
|
238
|
+
style=wordwrap
|
|
239
|
+
fg=red
|
|
240
|
+
layer=3
|
|
241
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>954</x><y>442</y><w>216</w><h>207</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;210;220;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1125</x><y>622</y><w>63</w><h>72</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>50;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>702</x><y>676</y><w>171</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
242
|
+
replace for same name facet</panel_attributes><additional_attributes>10;60;170;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>810</x><y>757</y><w>171</w><h>36</h></coordinates><panel_attributes>lt=-
|
|
243
|
+
priority split
|
|
244
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>702</x><y>766</y><w>126</w><h>45</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>120;10;10;30</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1053</x><y>955</y><w>189</w><h>63</h></coordinates><panel_attributes>remove Function selectors that have same facet name but different address
|
|
245
|
+
--
|
|
246
|
+
id: Long="36548"
|
|
247
|
+
[waiting for message]</panel_attributes><additional_attributes></additional_attributes></element></diagram>
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
<diagram program="umletino" version="15.1"><zoom_level>8</zoom_level><help_text>lt=<<
|
|
2
|
+
exclusionFilter</help_text><element><id>UMLClass</id><coordinates><x>264</x><y>400</y><w>200</w><h>96</h></coordinates><panel_attributes>prioritySortedDeployedFuncSelectors
|
|
3
|
+
--
|
|
4
|
+
> funcSel: 0x
|
|
5
|
+
> facetAddress: 0x address
|
|
6
|
+
> priority: int
|
|
7
|
+
|
|
8
|
+
From previous deployment file
|
|
9
|
+
sorted by priority
|
|
10
|
+
group=group-0
|
|
11
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>256</x><y>528</y><w>208</w><h>328</h></coordinates><panel_attributes>functionSelectorRegistry
|
|
12
|
+
--
|
|
13
|
+
> key: 0x function selector
|
|
14
|
+
> facetAddress: 0x address
|
|
15
|
+
> priority: number
|
|
16
|
+
> status: enum {
|
|
17
|
+
deployed,
|
|
18
|
+
add
|
|
19
|
+
replace
|
|
20
|
+
remove
|
|
21
|
+
|
|
22
|
+
Initiallly includes all selectors from deployedFuncSelectors as deployed
|
|
23
|
+
|
|
24
|
+
style=wordwrap
|
|
25
|
+
|
|
26
|
+
group=group-0
|
|
27
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1320</x><y>424</y><w>168</w><h>168</h></coordinates><panel_attributes>facetFuncSelectors
|
|
28
|
+
--
|
|
29
|
+
> facaddress: 0x address
|
|
30
|
+
> funcSel: 0x
|
|
31
|
+
|
|
32
|
+
all functionSelectors contained in current Facet.
|
|
33
|
+
|
|
34
|
+
style=wordwrap
|
|
35
|
+
layer=3
|
|
36
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>192</x><y>904</y><w>168</w><h>32</h></coordinates><panel_attributes>*5. DiamonCut Transaction*
|
|
37
|
+
|
|
38
|
+
fontsize=15
|
|
39
|
+
|
|
40
|
+
group=group-0
|
|
41
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>352</x><y>488</y><w>24</w><h>56</h></coordinates><panel_attributes>lt=<<-
|
|
42
|
+
group=group-0
|
|
43
|
+
layer=3</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>616</x><y>608</y><w>184</w><h>88</h></coordinates><panel_attributes>higherPriorityDeployedFuncSelectors
|
|
44
|
+
--
|
|
45
|
+
> funcSel: 0x
|
|
46
|
+
> priority: int
|
|
47
|
+
|
|
48
|
+
layer=3
|
|
49
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>616</x><y>800</y><w>168</w><h>56</h></coordinates><panel_attributes>lowerPriorityDeployedFuncSelectors
|
|
50
|
+
--
|
|
51
|
+
> funcSel: 0x
|
|
52
|
+
> priority: int
|
|
53
|
+
|
|
54
|
+
layer=3
|
|
55
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1104</x><y>496</y><w>72</w><h>24</h></coordinates><panel_attributes>lt=<<-
|
|
56
|
+
group=group-3</panel_attributes><additional_attributes>10;10;70;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>624</x><y>408</y><w>168</w><h>56</h></coordinates><panel_attributes>facetIncludeFunctionSelectors
|
|
57
|
+
--
|
|
58
|
+
> funcSel: 0x
|
|
59
|
+
layer=3
|
|
60
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>904</x><y>456</y><w>208</w><h>112</h></coordinates><panel_attributes>exclusionFilteredFacetFunctionSelectors
|
|
61
|
+
--
|
|
62
|
+
> facetAddress: 0x address
|
|
63
|
+
> priority: int
|
|
64
|
+
> funcSel: 0x
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
style=wordwrap
|
|
69
|
+
layer=3
|
|
70
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1128</x><y>392</y><w>168</w><h>56</h></coordinates><panel_attributes>facetExcludeFunctionSelectors
|
|
71
|
+
--
|
|
72
|
+
> funcSel: 0x
|
|
73
|
+
layer=3
|
|
74
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>952</x><y>256</y><w>168</w><h>88</h></coordinates><panel_attributes>facetConfig
|
|
75
|
+
--
|
|
76
|
+
> facetName:
|
|
77
|
+
>> address
|
|
78
|
+
>> priority
|
|
79
|
+
>> versions
|
|
80
|
+
layer=3
|
|
81
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>8</x><y>112</y><w>224</w><h>160</h></coordinates><panel_attributes>*deployedDiamondData*
|
|
82
|
+
--
|
|
83
|
+
> DiamondAddress: 0x address
|
|
84
|
+
> DiamondDeployer: 0x address
|
|
85
|
+
> Version: float
|
|
86
|
+
> Facets: [
|
|
87
|
+
> facetName:
|
|
88
|
+
> address
|
|
89
|
+
> version
|
|
90
|
+
> functionSelectors: funcSelector[ ]
|
|
91
|
+
|
|
92
|
+
group=group-0
|
|
93
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>952</x><y>120</y><w>168</w><h>72</h></coordinates><panel_attributes>diamond.config
|
|
94
|
+
--
|
|
95
|
+
ProtocolInitFacet: string facetName
|
|
96
|
+
exlude: 0x[ ] (function selectors to be excluded from all facets)</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>336</y><w>320</w><h>88</h></coordinates><panel_attributes>lt=<<-
|
|
97
|
+
|
|
98
|
+
group=group-3</panel_attributes><additional_attributes>10;90;10;20;380;20;380;10</additional_attributes></element><element><id>Relation</id><coordinates><x>456</x><y>736</y><w>184</w><h>24</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>210;10;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>624</x><y>728</y><w>152</w><h>32</h></coordinates><panel_attributes>lt=-
|
|
99
|
+
priority split
|
|
100
|
+
layer=3
|
|
101
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>224</x><y>136</y><w>104</w><h>48</h></coordinates><panel_attributes>*facets*
|
|
102
|
+
|
|
103
|
+
lt=<<-
|
|
104
|
+
|
|
105
|
+
layer=3
|
|
106
|
+
group=group-0</panel_attributes><additional_attributes>110;22;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>752</y><w>24</w><h>64</h></coordinates><panel_attributes>lt=<<-
|
|
107
|
+
group=group-3</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>688</y><w>24</w><h>56</h></coordinates><panel_attributes>lt=<<-
|
|
108
|
+
group=group-3</panel_attributes><additional_attributes>10;10;10;50</additional_attributes></element><element><id>Relation</id><coordinates><x>1056</x><y>336</y><w>176</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
109
|
+
|
|
110
|
+
group=group-3</panel_attributes><additional_attributes>200;70;200;20;10;20;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1024</x><y>184</y><w>24</w><h>88</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;90;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1368</x><y>336</y><w>80</w><h>32</h></coordinates><panel_attributes>facetContractAbi
|
|
111
|
+
layer=3
|
|
112
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1400</x><y>360</y><w>24</w><h>80</h></coordinates><panel_attributes>lt=<<-
|
|
113
|
+
group=group-3</panel_attributes><additional_attributes>10;80;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>1160</x><y>480</y><w>120</w><h>48</h></coordinates><panel_attributes>lt=.
|
|
114
|
+
adhoc
|
|
115
|
+
exclusion filter
|
|
116
|
+
fg=red
|
|
117
|
+
layer=3
|
|
118
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1208</x><y>440</y><w>24</w><h>56</h></coordinates><panel_attributes>lt=<<.
|
|
119
|
+
group=group-3</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1272</x><y>496</y><w>64</w><h>24</h></coordinates><panel_attributes>lt=<<-
|
|
120
|
+
group=group-3</panel_attributes><additional_attributes>10;10;60;10</additional_attributes></element><element><id>Relation</id><coordinates><x>456</x><y>544</y><w>200</w><h>32</h></coordinates><panel_attributes>add/replace
|
|
121
|
+
lt=<<-</panel_attributes><additional_attributes>10;20;230;20</additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>576</y><w>24</w><h>48</h></coordinates><panel_attributes>lt=<<-
|
|
122
|
+
group=group-3</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>712</x><y>488</y><w>208</w><h>56</h></coordinates><panel_attributes>lt=<<.
|
|
123
|
+
|
|
124
|
+
confirm function selector
|
|
125
|
+
in facet
|
|
126
|
+
group=group-3</panel_attributes><additional_attributes>10;50;10;20;240;20</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>640</x><y>528</y><w>136</w><h>56</h></coordinates><panel_attributes>lt=.
|
|
127
|
+
adhoc
|
|
128
|
+
inclusion Filter
|
|
129
|
+
fg=red
|
|
130
|
+
layer=3
|
|
131
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>456</y><w>24</w><h>88</h></coordinates><panel_attributes>lt=<<-
|
|
132
|
+
group=group-3</panel_attributes><additional_attributes>10;90;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>320</x><y>344</y><w>96</w><h>32</h></coordinates><panel_attributes>lt=.
|
|
133
|
+
prioritySort
|
|
134
|
+
|
|
135
|
+
group=group-0
|
|
136
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>408</x><y>160</y><w>560</w><h>216</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;250;80;250;80;10;680;10</additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>368</y><w>24</w><h>48</h></coordinates><panel_attributes>lt=<<-
|
|
137
|
+
group=group-0
|
|
138
|
+
layer=3</panel_attributes><additional_attributes>10;40;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1112</x><y>296</y><w>312</w><h>56</h></coordinates><panel_attributes>lt=<<-
|
|
139
|
+
group=group-3</panel_attributes><additional_attributes>370;50;370;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>768</x><y>560</y><w>248</w><h>200</h></coordinates><panel_attributes>lt=<<.
|
|
140
|
+
group=group-3</panel_attributes><additional_attributes>10;230;290;230;290;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>832</x><y>624</y><w>112</w><h>56</h></coordinates><panel_attributes>lt=.
|
|
141
|
+
priority removal filter
|
|
142
|
+
halign=center
|
|
143
|
+
style=wordwrap
|
|
144
|
+
fg=red
|
|
145
|
+
layer=3
|
|
146
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>792</x><y>640</y><w>56</w><h>24</h></coordinates><panel_attributes>lt=<<.
|
|
147
|
+
bg=red
|
|
148
|
+
fg=red</panel_attributes><additional_attributes>50;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>928</x><y>560</y><w>48</w><h>112</h></coordinates><panel_attributes>lt=<<-
|
|
149
|
+
group=group-3</panel_attributes><additional_attributes>17;120;40;120;40;10</additional_attributes></element><element><id>Relation</id><coordinates><x>432</x><y>136</y><w>536</w><h>32</h></coordinates><panel_attributes>facets in config
|
|
150
|
+
lt=<<.</panel_attributes><additional_attributes>10;20;650;20</additional_attributes></element><element><id>UMLClass</id><coordinates><x>272</x><y>216</y><w>192</w><h>88</h></coordinates><panel_attributes>filteredDeployedFacets
|
|
151
|
+
--
|
|
152
|
+
> facetName:
|
|
153
|
+
> address
|
|
154
|
+
> version
|
|
155
|
+
> status: deployed | remove
|
|
156
|
+
> functionSelectors: [ ]functionselector
|
|
157
|
+
|
|
158
|
+
group=group-0
|
|
159
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>312</x><y>136</y><w>128</w><h>40</h></coordinates><panel_attributes>lt=.
|
|
160
|
+
removedFacetFilter
|
|
161
|
+
group=group-0
|
|
162
|
+
layer=3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>168</y><w>24</w><h>64</h></coordinates><panel_attributes>lt=<<-
|
|
163
|
+
group=group-0
|
|
164
|
+
layer=3</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>632</x><y>912</y><w>136</w><h>56</h></coordinates><panel_attributes>lt=.
|
|
165
|
+
replace existing lower priority filter
|
|
166
|
+
fg=red
|
|
167
|
+
style=wordwrap
|
|
168
|
+
layer=3
|
|
169
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>696</x><y>848</y><w>24</w><h>80</h></coordinates><panel_attributes>lt=<<.
|
|
170
|
+
group=group-3</panel_attributes><additional_attributes>10;80;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>296</y><w>24</w><h>64</h></coordinates><panel_attributes>lt=<<-
|
|
171
|
+
group=group-0
|
|
172
|
+
layer=3</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>440</x><y>848</y><w>208</w><h>112</h></coordinates><panel_attributes>lt=<<-
|
|
173
|
+
replace existing</panel_attributes><additional_attributes>10;10;10;120;240;120</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>504</x><y>176</y><w>112</w><h>56</h></coordinates><panel_attributes>*4. Protocol Wide*
|
|
174
|
+
*Exclusion Filter*
|
|
175
|
+
|
|
176
|
+
fontsize=14
|
|
177
|
+
bg=dark_gray</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>384</x><y>848</y><w>336</w><h>152</h></coordinates><panel_attributes>lt=<<-
|
|
178
|
+
add new function selectors</panel_attributes><additional_attributes>10;10;10;170;400;170;400;150</additional_attributes></element><element><id>Relation</id><coordinates><x>272</x><y>848</y><w>104</w><h>72</h></coordinates><panel_attributes>lt=<<-
|
|
179
|
+
add,replace,remove
|
|
180
|
+
|
|
181
|
+
group=group-0
|
|
182
|
+
layer=3</panel_attributes><additional_attributes>10;70;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>608</x><y>184</y><w>416</w><h>40</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;30;500;30;500;10</additional_attributes></element><element><id>Relation</id><coordinates><x>456</x><y>224</y><w>96</w><h>328</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;390;100;390;100;10</additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>592</x><y>240</y><w>904</w><h>776</h></coordinates><panel_attributes>*3. Iterate over facets*
|
|
183
|
+
- Perform Filtering
|
|
184
|
+
- Update FunctionSelectorRegistry
|
|
185
|
+
bg=dark_gray
|
|
186
|
+
halign=left
|
|
187
|
+
valign=top
|
|
188
|
+
fontsize=16
|
|
189
|
+
group=group-3</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1016</x><y>600</y><w>472</w><h>360</h></coordinates><panel_attributes>Filtering Details
|
|
190
|
+
--
|
|
191
|
+
--
|
|
192
|
+
*1. adhoc exclusion filter*
|
|
193
|
+
FuncSels in Facet Config 'exclude' list will be removed from future processing. This is priority over 'include'
|
|
194
|
+
|
|
195
|
+
*2. adhoc inclusion filter*
|
|
196
|
+
This is essentially an "override higher priority" function. Currently, if a multiple facets list the same FuncSel as 'include' the LOWER PRIORITY will be used.
|
|
197
|
+
|
|
198
|
+
A. Confirm this FuncSel is in the facet list and the higherPriorityDeployedFuncSelectors, return if not.
|
|
199
|
+
B. FuncSels present in Facet Config 'include' list and already in Registry but associated with higher priority facets will have the Registry updated with the new Facet Address. Additionally:
|
|
200
|
+
i. If the FuncSel is already be set to 'add' or 'replace' then these should remain.
|
|
201
|
+
ii. If the status is set to 'deployed' then set status to 'replace'
|
|
202
|
+
iii. If the status is set to 'remove' then set status to 'replace'
|
|
203
|
+
|
|
204
|
+
*3. Priority Remove Filter*
|
|
205
|
+
Removes FunSels that are already being included by higher priority facets and aren't being overridden by the adhoc include list
|
|
206
|
+
|
|
207
|
+
*4. Replace Existing Lower Priority Filter*
|
|
208
|
+
Change facet address for FuncSels.
|
|
209
|
+
Set status to `replace` for existing `deploy` FuncSels, facets that are first time deployments of lower priority will not have been processed yet there is no need to account for FuncSels marked as 'add'.
|
|
210
|
+
|
|
211
|
+
*5. Add New Function Selectors*
|
|
212
|
+
Remaining FuncSels are added.
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
style=wordwrap
|
|
216
|
+
bg=blue
|
|
217
|
+
layer=2
|
|
218
|
+
group=group-3
|
|
219
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>312</y><w>232</w><h>544</h></coordinates><panel_attributes>Diamonds Module Base Strategy
|
|
220
|
+
--
|
|
221
|
+
--
|
|
222
|
+
|
|
223
|
+
Function Selector DiamondCut Process
|
|
224
|
+
|
|
225
|
+
1. Deploy Facet contracts for new versions
|
|
226
|
+
2. Create functionSelectorRegistry from deployedf facets
|
|
227
|
+
|
|
228
|
+
3. Iterate over facets in facetConfig
|
|
229
|
+
a. Perform facet function selector filtering
|
|
230
|
+
b. Update action functionSelectorRegistry
|
|
231
|
+
|
|
232
|
+
4. Protocol Wide Exclusion Filter: Remove FuncSels in ProtocolExclude
|
|
233
|
+
|
|
234
|
+
5. DiamondCut Transaction
|
|
235
|
+
|
|
236
|
+
fontsize=14
|
|
237
|
+
style=wordwrap
|
|
238
|
+
bg=blue
|
|
239
|
+
halign=left
|
|
240
|
+
transparency=0
|
|
241
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1200</x><y>104</y><w>184</w><h>96</h></coordinates><panel_attributes>*1. Deploy Facets*
|
|
242
|
+
--
|
|
243
|
+
Version comparison / existance
|
|
244
|
+
Config -> deployedDiamondData
|
|
245
|
+
Deploy New Facets
|
|
246
|
+
|
|
247
|
+
bg=dark_gray
|
|
248
|
+
style=autoresize
|
|
249
|
+
fontsize=15</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1112</x><y>136</y><w>104</w><h>24</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>110;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1304</x><y>192</y><w>24</w><h>64</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>760</x><y>672</y><w>160</w><h>288</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>10;340;160;340;160;110;180;90;160;70;160;10</additional_attributes></element><element><id>Text</id><coordinates><x>360</x><y>56</y><w>672</w><h>56</h></coordinates><panel_attributes>*Base Strategy: Facet Deployment and Upgrades, Function Selector & DiamondCut Process*
|
|
250
|
+
|
|
251
|
+
fg=#a3ffff
|
|
252
|
+
fontsize=19
|
|
253
|
+
valign=top
|
|
254
|
+
halign=center
|
|
255
|
+
style=autoresize</panel_attributes><additional_attributes></additional_attributes></element><element><id>Text</id><coordinates><x>616</x><y>0</y><w>184</w><h>64</h></coordinates><panel_attributes>*Diamonds Module*
|
|
256
|
+
fontsize=25
|
|
257
|
+
valign=top
|
|
258
|
+
halign=center
|
|
259
|
+
style=autoresize
|
|
260
|
+
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Text</id><coordinates><x>376</x><y>32</y><w>656</w><h>32</h></coordinates><panel_attributes>Robust Extensible Deployment of ERC-2535 Diamond Proxy Standard Contract Systems
|
|
261
|
+
|
|
262
|
+
fontsize=13
|
|
263
|
+
valign=top
|
|
264
|
+
halign=center
|
|
265
|
+
style=wordwrap</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>248</x><y>112</y><w>232</w><h>752</h></coordinates><panel_attributes>*2. Create FunctionSelectorRegistry*
|
|
266
|
+
|
|
267
|
+
fontsize=15
|
|
268
|
+
fg=white
|
|
269
|
+
bg=#8F20EF
|
|
270
|
+
layer=1
|
|
271
|
+
transparency=97
|
|
272
|
+
group=group-0</panel_attributes><additional_attributes></additional_attributes></element></diagram>
|