Skip to content

Commit 5a85b4a

Browse files
iobrobertoM-Franciamarcosiojaime-iobermudezManuIOB
authored
Sprint 12: Implement clearing module (#340)
Signed-off-by: Mario Francia <mario@io.builders> Signed-off-by: Roberto Delgado <roberto@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Manu Fernández <manuel@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Mario Francia <mario@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Manu Fernández <manuel@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders>
1 parent 32bea98 commit 5a85b4a

File tree

409 files changed

+85603
-27894
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

409 files changed

+85603
-27894
lines changed

.github/workflows/all.publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- name: Setup NodeJS Environment
2424
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
2525
with:
26-
node-version: 18.x
26+
node-version: 20.x
2727

2828
- name: Create file .npmrc
2929
run: |
@@ -49,4 +49,4 @@ jobs:
4949
- name: Publish sdk package
5050
run: npm run publish:sdk --access=public
5151
env:
52-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
52+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.github/workflows/all.test.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ jobs:
1313
CLIENT_PRIVATE_KEY_ECDSA_1: ${{ secrets.CLIENT_PRIVATE_KEY_ECDSA_1 }}
1414
CLIENT_PUBLIC_KEY_ECDSA_1: ${{ secrets.CLIENT_PUBLIC_KEY_ECDSA_1 }}
1515
CLIENT_ACCOUNT_ID_ECDSA_1: "0.0.1328"
16+
CLIENT_EVM_ADDRESS_ECDSA_1_CORRECT: "0x97C50bb12E1C6284cF2855cdba95c5D60AEE44CF"
1617
CLIENT_EVM_ADDRESS_ECDSA_1: "0x0000000000000000000000000000000000000530"
1718
CLIENT_PRIVATE_KEY_ECDSA_2: ${{ secrets.CLIENT_PRIVATE_KEY_ECDSA_2 }}
1819
CLIENT_PUBLIC_KEY_ECDSA_2: ${{ secrets.CLIENT_PUBLIC_KEY_ECDSA_2 }}
@@ -45,9 +46,9 @@ jobs:
4546
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
4647

4748
- name: Setup NodeJS Environment
48-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
49+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
4950
with:
50-
node-version: 18.x
51+
node-version: 20.x
5152

5253
- name: Install dependencies Contracts
5354
working-directory: contracts

.gitignore

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,6 @@ dist
107107
# Docusaurus cache and generated files
108108
.docusaurus
109109

110-
# Serverless directories
111-
.serverless/
112-
113110
# FuseBox cache
114111
.fusebox/
115112

@@ -132,8 +129,6 @@ dist
132129
.yarn/install-state.gz
133130
.pnp.*
134131

135-
package-lock.json
136-
137132
asset-tokenization-studio.iml
138133

139134
# IntelliJ Idea

commitlint.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default { extends: ["@commitlint/config-conventional"] };

contracts/.solhint.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"reentrancy": "error",
3939
"state-visibility": "error",
4040
"quotes": ["error", "single"],
41-
"not-rely-on-time": "off"
41+
"not-rely-on-time": "off",
42+
"ordering": "error"
4243
}
4344
}

contracts/Configuration.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,10 @@ export const CONTRACT_NAMES = [
226226
'ProxyAdmin',
227227
'Factory',
228228
'BusinessLogicResolver',
229-
'AccessControl',
229+
'AccessControlFacet',
230230
'Cap',
231231
'ControlList',
232-
'Pause',
232+
'PauseFacet',
233233
'ERC20',
234234
'ERC1410ScheduledTasks',
235235
'ERC1594',
@@ -242,13 +242,17 @@ export const CONTRACT_NAMES = [
242242
'ScheduledBalanceAdjustments',
243243
'ScheduledTasks',
244244
'Snapshots',
245-
'CorporateActionsSecurity',
245+
'CorporateActions',
246246
'TransferAndLock',
247247
'Lock',
248-
'Hold',
249248
'AdjustBalances',
250249
'ProtectedPartitions',
250+
'Hold',
251251
'TimeTravel',
252+
'Kyc',
253+
'SsiManagement',
254+
'ClearingFacet',
255+
'ClearingActionsFacet',
252256
] as const
253257
export type ContractName = (typeof CONTRACT_NAMES)[number]
254258
export const CONTRACT_NAMES_WITH_PROXY = ['Factory', 'BusinessLogicResolver']

contracts/contracts/factory/Factory.sol

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,11 @@ import {IERC1644} from '../layer_1/interfaces/ERC1400/IERC1644.sol';
218218
import {IERC1410Basic} from '../layer_1/interfaces/ERC1400/IERC1410Basic.sol';
219219
import {ICap} from '../layer_1/interfaces/cap/ICap.sol';
220220
import {IERC1594} from '../layer_1/interfaces/ERC1400/IERC1594.sol';
221+
import {IClearing} from '../layer_1/interfaces/clearing/IClearing.sol';
221222
import {
222223
IBusinessLogicResolver
223224
} from '../interfaces/resolver/IBusinessLogicResolver.sol';
224-
import {LocalContext} from '../layer_1/context/LocalContext.sol';
225+
import {LocalContext} from '../layer_0/context/LocalContext.sol';
225226
import {
226227
FactoryRegulationData,
227228
buildRegulationData,
@@ -411,6 +412,10 @@ contract Factory is IFactory, LocalContext {
411412
IProtectedPartitions(securityAddress_).initialize_ProtectedPartitions(
412413
_securityData.arePartitionsProtected
413414
);
415+
416+
IClearing(securityAddress_).initialize_Clearing(
417+
_securityData.clearingActive
418+
);
414419
}
415420

416421
function getAppliedRegulationData(

contracts/contracts/interfaces/factory/IFactory.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ interface IFactory {
240240
bool isWhiteList;
241241
uint256 maxSupply;
242242
ERC20.ERC20MetadataInfo erc20MetadataInfo;
243+
bool clearingActive;
243244
}
244245

245246
struct EquityData {

contracts/contracts/interfaces/resolver/diamondCutManager/IDiamondCutManager.sol

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,17 @@ interface IDiamondCutManager {
251251
uint256 version
252252
);
253253

254+
/// @notice emited when createBatchConfiguration is executed
255+
event DiamondBatchConfigurationCreated(
256+
bytes32 configurationId,
257+
FacetConfiguration[] facetConfigurations,
258+
bool _isLastBatch,
259+
uint256 version
260+
);
261+
262+
/// @notice emited when cancelBatchConfiguration is executed
263+
event DiamondBatchConfigurationCanceled(bytes32 configurationId);
264+
254265
/// @notice Create a new configuration to the latest version of all facets.
255266
/// @param _configurationId unused identifier to the configuration.
256267
/// @param _facetConfigurations.id list of business logics to be registered.
@@ -260,6 +271,21 @@ interface IDiamondCutManager {
260271
FacetConfiguration[] calldata _facetConfigurations
261272
) external;
262273

274+
/// @notice Create a new batch configuration to the latest version of all facets.
275+
/// @param _configurationId unused identifier to the configuration.
276+
/// @param _facetConfigurations.id list of business logics to be registered.
277+
/// @param _facetConfigurations.version list of versions of each _facetIds.
278+
/// @param _isLastBatch boolean to indicate if is the last batch iteration.
279+
function createBatchConfiguration(
280+
bytes32 _configurationId,
281+
FacetConfiguration[] calldata _facetConfigurations,
282+
bool _isLastBatch
283+
) external;
284+
285+
/// @notice Cancel a current batch configuration.
286+
/// @param _configurationId unused identifier to the configuration.
287+
function cancelBatchConfiguration(bytes32 _configurationId) external;
288+
263289
/// @notice Resolve the facet address knowing configuration, version and selector.
264290
/// @param _configurationId configured key in the resolverProxy.
265291
/// @param _version configured version in the resolverProxy. if is 0, ask for latest version.

contracts/contracts/layer_1/ERC1400/ERC1410/ERC1410BasicStorageWrapper.sol renamed to contracts/contracts/layer_0/ERC1400/ERC1410/ERC1410BasicStorageWrapper.sol

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -208,46 +208,57 @@ pragma solidity 0.8.18;
208208

209209
import {
210210
IERC1410StorageWrapper
211-
} from '../../interfaces/ERC1400/IERC1410StorageWrapper.sol';
212-
import {Common} from '../../common/Common.sol';
211+
} from '../../../layer_1/interfaces/ERC1400/IERC1410StorageWrapper.sol';
212+
import {ERC20StorageWrapper1} from '../ERC20/ERC20StorageWrapper1.sol';
213213
import {
214-
ERC1410BasicStorageWrapperRead
215-
} from './ERC1410BasicStorageWrapperRead.sol';
214+
IERC1410Basic
215+
} from '../../../layer_1/interfaces/ERC1400/IERC1410Basic.sol';
216216

217217
abstract contract ERC1410BasicStorageWrapper is
218218
IERC1410StorageWrapper,
219-
ERC1410BasicStorageWrapperRead,
220-
Common
219+
ERC20StorageWrapper1
221220
{
222221
function _transferByPartition(
223222
address _from,
224-
address _to,
225-
uint256 _value,
223+
IERC1410Basic.BasicTransferInfo memory _basicTransferInfo,
226224
bytes32 _partition,
227225
bytes memory _data,
228226
address _operator,
229227
bytes memory _operatorData
230-
) internal virtual {
231-
_beforeTokenTransfer(_partition, _from, _to, _value);
232-
233-
_reduceBalanceByPartition(_from, _value, _partition);
228+
) internal {
229+
_beforeTokenTransfer(
230+
_partition,
231+
_from,
232+
_basicTransferInfo.to,
233+
_basicTransferInfo.value
234+
);
234235

235-
if (!_validPartitionForReceiver(_partition, _to)) {
236-
_addPartitionTo(_value, _to, _partition);
237-
} else {
238-
_increaseBalanceByPartition(_to, _value, _partition);
239-
}
236+
_reduceBalanceByPartition(_from, _basicTransferInfo.value, _partition);
240237

241238
// Emit transfer event.
242239
emit TransferByPartition(
243240
_partition,
244241
_operator,
245242
_from,
246-
_to,
247-
_value,
243+
_basicTransferInfo.to,
244+
_basicTransferInfo.value,
248245
_data,
249246
_operatorData
250247
);
248+
249+
if (!_validPartitionForReceiver(_partition, _basicTransferInfo.to)) {
250+
return
251+
_addPartitionTo(
252+
_basicTransferInfo.value,
253+
_basicTransferInfo.to,
254+
_partition
255+
);
256+
}
257+
_increaseBalanceByPartition(
258+
_basicTransferInfo.to,
259+
_basicTransferInfo.value,
260+
_partition
261+
);
251262
}
252263

253264
function _beforeTokenTransfer(
@@ -256,4 +267,10 @@ abstract contract ERC1410BasicStorageWrapper is
256267
address to,
257268
uint256 amount
258269
) internal virtual;
270+
271+
function _addPartitionTo(
272+
uint256 _value,
273+
address _account,
274+
bytes32 _partition
275+
) internal virtual;
259276
}

0 commit comments

Comments
 (0)