-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathRealDigitalEnableAccount.sol
48 lines (43 loc) · 1.73 KB
/
RealDigitalEnableAccount.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./RealDigital.sol";
/**
* @title RealDigitalEnableAccount
* @dev Contrato que permite ao participante habilitar outras carteiras de sua propriedade.
*/
contract RealDigitalEnableAccount {
RealDigital private accessControlAddress; // Referência ao contrato do Real Digital para validação de participantes.
bytes32 public constant ACCESS_ROLE = keccak256("ACCESS_ROLE");
bytes32 public constant DEFAULT_ADMIN_ROLE =
0x0000000000000000000000000000000000000000000000000000000000000000;
/**
* @dev Constrói uma instância do contrato e armazena o endereço do contrato do RealDigital, responsável pelas
* verificações de controle de acesso.
* @param _accessControlAddress address: Endereço do contrato de controle de acesso
*/
constructor(address _accessControlAddress) {
accessControlAddress = RealDigital(_accessControlAddress);
}
/**
* @dev Habilita uma nova carteira para o participante.
* Qualquer carteira previamente habilitada para o participante pode habilitar outras carteiras.
* @param member address: Novo endereço do participante.
*/
function enableAccount(address member) public {
require(
accessControlAddress.verifyAccount(msg.sender),
"Must be participant"
);
accessControlAddress.enableAccount(member);
}
/**
* @dev Desabilita a própria carteira que executou a função.
*/
function disableAccount() public {
require(
accessControlAddress.verifyAccount(msg.sender),
"This address is already disabled"
);
accessControlAddress.disableAccount(msg.sender);
}
}