Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
.env
broadcast/
lib/
out/
cache/
cache/
.~lock.test.odt#
nethereum-gen.settings
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "lib/CMTAT"]
path = lib/CMTAT
url = https://github.com/CMTA/CMTAT
[submodule "lib/openzeppelin-contracts"]
path = lib/openzeppelin-contracts
url = https://github.com/openzeppelin/openzeppelin-contracts
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,20 @@ You can configure the verbosity with these flags :

## Deployment
The official documentation is available here : [website](https://book.getfoundry.sh/reference/forge/deploy-commands)
### Script
To run the script for deployment, you need to create a .env file. The value for CMTAT.ADDRESS is require only to use the script **RuleEngine.s.sol**
Warning : put your private key in a .env file is not the best secure way.

* File .env
```
PRIVATE_KEY=<YOUR_PRIVATE_KEY>
CMTAT_ADDRESS=<CMTAT ADDDRESS
```
* Command
```
forge script script/CMTATWithRuleEngine.s.sol:MyScript --rpc-url=<YOUR_RPC_URL> --broadcast --verify -vvv
```
Value of YOUR_RPC_URL with a local instance of anvil : http://127.0.0.1:8545

### Local
With anvil, you can create a local testnet node for deploying and testing smart contracts.
Expand Down
Binary file added doc/coverage-2022-10-25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
151 changes: 151 additions & 0 deletions doc/lcov.info
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
TN:
SF:script/RuleEngine.s.sol
FN:11,MyScript.run
FNDA:0,MyScript.run
DA:12,0
DA:13,0
DA:14,0
DA:15,0
DA:16,0
DA:17,0
DA:25,0
DA:26,0
DA:27,0
DA:28,0
FNF:1
FNH:0
LF:10
LH:0
BRF:0
BRH:0
end_of_record
TN:
SF:src/RuleEngine.sol
FN:17,RuleEngineMock.setRules
FNDA:10,RuleEngineMock.setRules
DA:18,10
FN:21,RuleEngineMock.ruleLength
FNDA:3,RuleEngineMock.ruleLength
DA:22,3
FN:25,RuleEngineMock.rule
FNDA:1,RuleEngineMock.rule
DA:26,1
FN:29,RuleEngineMock.rules
FNDA:1,RuleEngineMock.rules
DA:30,1
FN:33,RuleEngineMock.detectTransferRestriction
FNDA:7,RuleEngineMock.detectTransferRestriction
DA:39,11
DA:40,11
DA:41,11
BRDA:41,0,0,7
BRDA:41,0,1,4
DA:42,7
DA:45,4
FN:48,RuleEngineMock.validateTransfer
FNDA:4,RuleEngineMock.validateTransfer
DA:54,4
FN:57,RuleEngineMock.messageForTransferRestriction
FNDA:6,RuleEngineMock.messageForTransferRestriction
DA:58,6
DA:59,6
BRDA:59,1,0,-
BRDA:59,1,1,4
DA:60,4
DA:63,2
FNF:7
FNH:7
LF:14
LH:14
BRF:4
BRH:3
end_of_record
TN:
SF:src/RuleWhiteList.sol
FN:21,RuleWhitelist.addAddressesToTheWhitelist
FNDA:11,RuleWhitelist.addAddressesToTheWhitelist
DA:24,11
DA:25,23
BRDA:25,0,0,-
BRDA:25,0,1,20
DA:26,21
BRDA:26,1,0,1
BRDA:26,1,1,20
DA:27,20
DA:28,20
FN:33,RuleWhitelist.removeAddressesFromTheWhitelist
FNDA:3,RuleWhitelist.removeAddressesFromTheWhitelist
DA:36,3
DA:37,7
BRDA:37,2,0,-
BRDA:37,2,1,6
DA:38,6
DA:39,6
FN:45,RuleWhitelist.addAddressToTheWhitelist
FNDA:16,RuleWhitelist.addAddressToTheWhitelist
DA:46,16
BRDA:46,3,0,1
BRDA:46,3,1,15
DA:47,15
BRDA:47,4,0,1
BRDA:47,4,1,14
DA:48,14
BRDA:48,5,0,14
BRDA:48,5,1,14
DA:49,14
DA:50,14
FN:54,RuleWhitelist.removeAddressFromTheWhitelist
FNDA:2,RuleWhitelist.removeAddressFromTheWhitelist
DA:55,2
BRDA:55,6,0,1
BRDA:55,6,1,1
DA:56,1
BRDA:56,7,0,1
BRDA:56,7,1,1
DA:57,1
DA:58,1
FN:62,RuleWhitelist.numberWhitelistedAddress
FNDA:14,RuleWhitelist.numberWhitelistedAddress
DA:63,14
FN:66,RuleWhitelist.addressIsWhitelisted
FNDA:38,RuleWhitelist.addressIsWhitelisted
DA:67,38
FN:71,RuleWhitelist.isTransferValid
FNDA:2,RuleWhitelist.isTransferValid
DA:75,2
FN:78,RuleWhitelist.detectTransferRestriction
FNDA:14,RuleWhitelist.detectTransferRestriction
DA:82,16
BRDA:82,8,0,6
BRDA:82,8,1,10
DA:83,6
DA:85,10
BRDA:85,9,0,3
BRDA:85,9,1,7
DA:86,3
DA:89,7
FN:93,RuleWhitelist.canReturnTransferRestrictionCode
FNDA:6,RuleWhitelist.canReturnTransferRestrictionCode
DA:95,6
BRDA:94,10,0,4
BRDA:94,10,1,2
DA:102,4
DA:104,2
FN:107,RuleWhitelist.messageForTransferRestriction
FNDA:7,RuleWhitelist.messageForTransferRestriction
DA:108,7
BRDA:108,11,0,4
BRDA:108,11,1,3
DA:109,4
DA:112,3
BRDA:112,12,0,2
BRDA:112,12,1,1
DA:113,2
DA:117,1
FNF:10
FNH:10
LF:34
LH:34
BRF:26
BRH:24
end_of_record
Binary file added doc/test-report-26.10.2022.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/test.odt
Binary file not shown.
File renamed without changes.
Binary file removed documentation/test.odt
Binary file not shown.
151 changes: 151 additions & 0 deletions lcov.info
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
TN:
SF:script/RuleEngine.s.sol
FN:11,MyScript.run
FNDA:0,MyScript.run
DA:12,0
DA:13,0
DA:14,0
DA:15,0
DA:16,0
DA:17,0
DA:25,0
DA:26,0
DA:27,0
DA:28,0
FNF:1
FNH:0
LF:10
LH:0
BRF:0
BRH:0
end_of_record
TN:
SF:src/RuleEngine.sol
FN:17,RuleEngineMock.setRules
FNDA:10,RuleEngineMock.setRules
DA:18,10
FN:21,RuleEngineMock.ruleLength
FNDA:3,RuleEngineMock.ruleLength
DA:22,3
FN:25,RuleEngineMock.rule
FNDA:1,RuleEngineMock.rule
DA:26,1
FN:29,RuleEngineMock.rules
FNDA:1,RuleEngineMock.rules
DA:30,1
FN:33,RuleEngineMock.detectTransferRestriction
FNDA:7,RuleEngineMock.detectTransferRestriction
DA:39,11
DA:40,11
DA:41,11
BRDA:41,0,0,7
BRDA:41,0,1,4
DA:42,7
DA:45,4
FN:48,RuleEngineMock.validateTransfer
FNDA:4,RuleEngineMock.validateTransfer
DA:54,4
FN:57,RuleEngineMock.messageForTransferRestriction
FNDA:6,RuleEngineMock.messageForTransferRestriction
DA:58,6
DA:59,6
BRDA:59,1,0,-
BRDA:59,1,1,4
DA:60,4
DA:63,2
FNF:7
FNH:7
LF:14
LH:14
BRF:4
BRH:3
end_of_record
TN:
SF:src/RuleWhiteList.sol
FN:21,RuleWhitelist.addAddressesToTheWhitelist
FNDA:11,RuleWhitelist.addAddressesToTheWhitelist
DA:24,11
DA:25,24
BRDA:25,0,0,-
BRDA:25,0,1,21
DA:26,22
BRDA:26,1,0,1
BRDA:26,1,1,21
DA:27,21
DA:28,21
FN:33,RuleWhitelist.removeAddressesFromTheWhitelist
FNDA:3,RuleWhitelist.removeAddressesFromTheWhitelist
DA:36,3
DA:37,7
BRDA:37,2,0,-
BRDA:37,2,1,6
DA:38,6
DA:39,6
FN:45,RuleWhitelist.addAddressToTheWhitelist
FNDA:16,RuleWhitelist.addAddressToTheWhitelist
DA:46,16
BRDA:46,3,0,1
BRDA:46,3,1,15
DA:47,15
BRDA:47,4,0,1
BRDA:47,4,1,14
DA:48,14
BRDA:48,5,0,14
BRDA:48,5,1,14
DA:49,14
DA:50,14
FN:54,RuleWhitelist.removeAddressFromTheWhitelist
FNDA:2,RuleWhitelist.removeAddressFromTheWhitelist
DA:55,2
BRDA:55,6,0,1
BRDA:55,6,1,1
DA:56,1
BRDA:56,7,0,1
BRDA:56,7,1,1
DA:57,1
DA:58,1
FN:62,RuleWhitelist.numberWhitelistedAddress
FNDA:15,RuleWhitelist.numberWhitelistedAddress
DA:63,15
FN:66,RuleWhitelist.addressIsWhitelisted
FNDA:39,RuleWhitelist.addressIsWhitelisted
DA:67,39
FN:71,RuleWhitelist.isTransferValid
FNDA:2,RuleWhitelist.isTransferValid
DA:75,2
FN:78,RuleWhitelist.detectTransferRestriction
FNDA:14,RuleWhitelist.detectTransferRestriction
DA:82,16
BRDA:82,8,0,6
BRDA:82,8,1,10
DA:83,6
DA:85,10
BRDA:85,9,0,3
BRDA:85,9,1,7
DA:86,3
DA:89,7
FN:93,RuleWhitelist.canReturnTransferRestrictionCode
FNDA:8,RuleWhitelist.canReturnTransferRestrictionCode
DA:95,8
BRDA:94,10,0,5
BRDA:94,10,1,3
DA:99,5
DA:101,3
FN:104,RuleWhitelist.messageForTransferRestriction
FNDA:7,RuleWhitelist.messageForTransferRestriction
DA:105,7
BRDA:105,11,0,4
BRDA:105,11,1,3
DA:106,4
DA:109,3
BRDA:109,12,0,2
BRDA:109,12,1,1
DA:110,2
DA:114,1
FNF:10
FNH:10
LF:34
LH:34
BRF:26
BRH:24
end_of_record
1 change: 1 addition & 0 deletions lib/openzeppelin-contracts
Submodule openzeppelin-contracts added at 36951d
2 changes: 1 addition & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
CMTAT/=lib/CMTAT/src/
CMTAT/=lib/CMTAT/contracts/
openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/
38 changes: 38 additions & 0 deletions script/CMTATWithRuleEngine.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// SPDX-License-Identifier: UNLICENSED
// Documentation :
// https://book.getfoundry.sh/tutorials/solidity-scripting
pragma solidity ^0.8.17;

import "forge-std/Script.sol";
import "CMTAT/CMTAT.sol";
import "src/RuleEngine.sol";

contract MyScript is Script {
function run() external {
// Get env variable
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
address OWNER = vm.addr(deployerPrivateKey);
address trustedForwarder = address(0x0);
vm.startBroadcast(deployerPrivateKey);

// CMTAT
CMTAT CMTAT_CONTRACT = new CMTAT();
console.log("CMTAT CMTAT_CONTRACT : ", address(CMTAT_CONTRACT));
CMTAT_CONTRACT.initialize(
OWNER,
trustedForwarder,
"CMTA Token",
"CMTAT",
"CMTAT_ISIN",
"https://cmta.ch"
);
// whitelist
RuleWhitelist ruleWhitelist = new RuleWhitelist();
console.log("whitelist: ", address(ruleWhitelist));
// ruleEngine
RuleEngine RULE_ENGINE = new RuleEngine(ruleWhitelist);
console.log("RuleEngine : ", address(RULE_ENGINE));
CMTAT_CONTRACT.setRuleEngine(RULE_ENGINE);
vm.stopBroadcast();
}
}
Loading