@trustline.id/web3sdk 1.0.3 → 1.0.4

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.
Files changed (25) hide show
  1. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  2. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  3. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +4 -0
  4. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +76 -0
  5. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json +4 -0
  6. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json +49 -0
  7. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  8. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +15 -0
  9. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  10. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  11. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  12. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +22 -0
  13. package/artifacts/@openzeppelin/contracts/utils/Errors.sol/Errors.dbg.json +4 -0
  14. package/artifacts/@openzeppelin/contracts/utils/Errors.sol/Errors.json +48 -0
  15. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  16. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  17. package/artifacts/build-info/0aeaaf28859d341e1ee9ffb3d4ab07fc.json +1 -0
  18. package/artifacts/contracts/Trustlined.sol/Trustlined.dbg.json +1 -1
  19. package/artifacts/contracts/Trustlined.sol/Trustlined.json +31 -0
  20. package/artifacts/contracts/examples/PaymentFirewall.sol/PaymentFirewall.dbg.json +1 -1
  21. package/artifacts/contracts/examples/PaymentFirewall.sol/PaymentFirewall.json +39 -3
  22. package/contracts/Trustlined.sol +39 -6
  23. package/contracts/examples/PaymentFirewall.sol +1 -1
  24. package/dist/bundle.js +31 -0
  25. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/b10e3fa14fea75fdb2ecc56bfe679f1a.json"
3
+ "buildInfo": "../../build-info/0aeaaf28859d341e1ee9ffb3d4ab07fc.json"
4
4
  }
@@ -3,6 +3,37 @@
3
3
  "contractName": "Trustlined",
4
4
  "sourceName": "contracts/Trustlined.sol",
5
5
  "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "client",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "address",
18
+ "name": "engineProxy",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "indexed": true,
23
+ "internalType": "address",
24
+ "name": "logic",
25
+ "type": "address"
26
+ },
27
+ {
28
+ "indexed": false,
29
+ "internalType": "address",
30
+ "name": "initialOwner",
31
+ "type": "address"
32
+ }
33
+ ],
34
+ "name": "ValidationEngineDeployed",
35
+ "type": "event"
36
+ },
6
37
  {
7
38
  "inputs": [],
8
39
  "name": "validationEngine",
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/b10e3fa14fea75fdb2ecc56bfe679f1a.json"
3
+ "buildInfo": "../../../build-info/0aeaaf28859d341e1ee9ffb3d4ab07fc.json"
4
4
  }
@@ -7,13 +7,49 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "validationEngine",
10
+ "name": "trustlineValidationEngineLogic",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "trustlineValidationEngineProxy",
11
16
  "type": "address"
12
17
  }
13
18
  ],
14
19
  "stateMutability": "nonpayable",
15
20
  "type": "constructor"
16
21
  },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": true,
27
+ "internalType": "address",
28
+ "name": "client",
29
+ "type": "address"
30
+ },
31
+ {
32
+ "indexed": true,
33
+ "internalType": "address",
34
+ "name": "engineProxy",
35
+ "type": "address"
36
+ },
37
+ {
38
+ "indexed": true,
39
+ "internalType": "address",
40
+ "name": "logic",
41
+ "type": "address"
42
+ },
43
+ {
44
+ "indexed": false,
45
+ "internalType": "address",
46
+ "name": "initialOwner",
47
+ "type": "address"
48
+ }
49
+ ],
50
+ "name": "ValidationEngineDeployed",
51
+ "type": "event"
52
+ },
17
53
  {
18
54
  "inputs": [
19
55
  {
@@ -64,8 +100,8 @@
64
100
  "type": "function"
65
101
  }
66
102
  ],
67
- "bytecode": "0x608060405234801561000f575f5ffd5b506040516106e53803806106e583398101604081905261002e916100c8565b806100388161003f565b50506100f5565b6100488161004b565b50565b5f546001600160a01b0316156100a75760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f602082840312156100d8575f5ffd5b81516001600160a01b03811681146100ee575f5ffd5b9392505050565b6105e3806101025f395ff3fe608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea26469706673582212207239e00c7cc2793b19c1cc42645fab24a2c2f4c1b587a1e6f1cdb52b7ee3679564736f6c634300081c0033",
68
- "deployedBytecode": "0x608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea26469706673582212207239e00c7cc2793b19c1cc42645fab24a2c2f4c1b587a1e6f1cdb52b7ee3679564736f6c634300081c0033",
103
+ "bytecode": "0x608060405234801561000f575f5ffd5b50604051610ccf380380610ccf83398101604081905261002e9161028d565b818161003a8282610043565b50505050610302565b61004d8282610051565b5050565b5f546001600160a01b0316156100ae5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811615610136575f816001600160a01b03163b116101165760405162461bcd60e51b815260206004820152601760248201527f50726f7879206973206e6f74206120636f6e747261637400000000000000000060448201526064016100a5565b5f80546001600160a01b0383166001600160a01b03199091161790555050565b5f826001600160a01b03163b1161018f5760405162461bcd60e51b815260206004820152601760248201527f4c6f676963206973206e6f74206120636f6e747261637400000000000000000060448201526064016100a5565b6040513360248201819052905f9060440160408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b179052519091505f90859083906101dd90610265565b6101e89291906102be565b604051809103905ff080158015610201573d5f5f3e3d5ffd5b505f80546001600160a01b0319166001600160a01b0383811691821790925560405186831681529293509087169130907fdd2b45b3a7206829b6ff077a468ad28c22d407de65990543cb4e4a8e8f8ba5c19060200160405180910390a45050505050565b6103dd806108f283390190565b80516001600160a01b0381168114610288575f5ffd5b919050565b5f5f6040838503121561029e575f5ffd5b6102a783610272565b91506102b560208401610272565b90509250929050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6105e38061030f5f395ff3fe608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea264697066735822122087c461a3df0071ee8b59e067faed4b35dc0fe7089dc2e91b9f434c4494dd06b664736f6c634300081c003360806040526040516103dd3803806103dd8339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220135bdee684c63adc98111b5f8ef1566e2b1841823b3a85d9ed6bc17a6c0ebb2064736f6c634300081c0033",
104
+ "deployedBytecode": "0x608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea264697066735822122087c461a3df0071ee8b59e067faed4b35dc0fe7089dc2e91b9f434c4494dd06b664736f6c634300081c0033",
69
105
  "linkReferences": {},
70
106
  "deployedLinkReferences": {}
71
107
  }
@@ -1,29 +1,62 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8;
3
3
 
4
+ import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
4
5
  import {IValidationEngine} from "./interfaces/IValidationEngine.sol";
5
6
 
6
7
  /// @title Trustline's Base Contract
7
8
  /// @author Trustline
8
9
  /// @notice This library provides functions for verifying the trust status of a transaction
9
10
  abstract contract Trustlined {
11
+ /// @notice Emitted when a new Validation Engine proxy is deployed for this client contract.
12
+ /// @dev `client` is the address of the integrating contract (i.e., the contract inheriting from Trustlined).
13
+ /// @dev `engineProxy` is the freshly deployed ERC1967 proxy address for the Validation Engine instance.
14
+ /// @dev `logic` is the Validation Engine implementation (logic) contract the proxy points to at deployment time.
15
+ /// @dev `initialOwner` is the address passed to the engine's `initialize(address)` call (typically the deployer/initializer).
16
+ event ValidationEngineDeployed(
17
+ address indexed client,
18
+ address indexed engineProxy,
19
+ address indexed logic,
20
+ address initialOwner
21
+ );
22
+
10
23
  /// @notice The Trustline ValidationEngine contract address. It must be set before any of the provided functions can be used
11
24
  /// @dev Multiple dapps can share the same ValidationEngine contract
12
25
  /// @dev This contract is set by the owner and must implement the IValidationEngine interface
13
26
  IValidationEngine public validationEngine;
14
27
 
15
28
  /// @dev Both a constructor and initializer functions are defined to support both upgradeable and non-upgradeable deployment scenarios
16
- constructor(address validationEngine_) {
17
- __Trustlined_init(validationEngine_);
29
+ /// @param trustlineValidationEngineLogic The Validation Engine logic contract address for deploying a proxy (used only if validationEngineAddress is zero)
30
+ /// @param trustlineValidationEngineProxy Optional Validation Engine proxy address. If provided (non-zero), it will be used directly instead of deploying a new proxy
31
+ constructor(address trustlineValidationEngineLogic, address trustlineValidationEngineProxy) {
32
+ __Trustlined_init(trustlineValidationEngineLogic, trustlineValidationEngineProxy);
18
33
  }
19
34
 
20
- function __Trustlined_init(address validation_) internal {
21
- __Trustlined_init_unchained(validation_);
35
+ function __Trustlined_init(address logic, address proxy) internal {
36
+ __Trustlined_init_unchained(logic, proxy);
22
37
  }
23
38
 
24
- function __Trustlined_init_unchained(address validationEngine_) internal {
39
+ function __Trustlined_init_unchained(address logic, address proxy) internal {
25
40
  require(address(validationEngine) == address(0), "Already initialized");
26
- validationEngine = IValidationEngine(validationEngine_);
41
+
42
+ if (proxy != address(0)) {
43
+ // Use the provided Validation Engine proxy
44
+ require(proxy.code.length > 0, "Proxy is not a contract");
45
+ validationEngine = IValidationEngine(proxy);
46
+ } else {
47
+ // Deploy a new Validation Engine proxy
48
+ require(logic.code.length > 0, "Logic is not a contract");
49
+
50
+ address initialOwner = msg.sender;
51
+
52
+ // Deployment of the Validation Engine proxy
53
+ bytes memory data = abi.encodeWithSignature("initialize(address)", initialOwner);
54
+ address proxy_ = address(new ERC1967Proxy(logic, data));
55
+
56
+ validationEngine = IValidationEngine(proxy_);
57
+
58
+ emit ValidationEngineDeployed(address(this), proxy_, logic, initialOwner);
59
+ }
27
60
  }
28
61
 
29
62
  /// @notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists
@@ -9,7 +9,7 @@ import {Trustlined} from "../Trustlined.sol";
9
9
  /// @author Trustline
10
10
  /// @notice This contract is a firewall ensuring all funds going in and out are compliant
11
11
  contract PaymentFirewall is Trustlined {
12
- constructor(address validationEngine) Trustlined(validationEngine) {}
12
+ constructor(address trustlineValidationEngineLogic, address trustlineValidationEngineProxy) Trustlined(trustlineValidationEngineLogic, trustlineValidationEngineProxy) {}
13
13
 
14
14
  /// @notice Pay native ethers to a recipient
15
15
  /// @param destination The recipient address
package/dist/bundle.js CHANGED
@@ -4,6 +4,37 @@ module.exports={
4
4
  "contractName": "Trustlined",
5
5
  "sourceName": "contracts/Trustlined.sol",
6
6
  "abi": [
7
+ {
8
+ "anonymous": false,
9
+ "inputs": [
10
+ {
11
+ "indexed": true,
12
+ "internalType": "address",
13
+ "name": "client",
14
+ "type": "address"
15
+ },
16
+ {
17
+ "indexed": true,
18
+ "internalType": "address",
19
+ "name": "engineProxy",
20
+ "type": "address"
21
+ },
22
+ {
23
+ "indexed": true,
24
+ "internalType": "address",
25
+ "name": "logic",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "indexed": false,
30
+ "internalType": "address",
31
+ "name": "initialOwner",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "ValidationEngineDeployed",
36
+ "type": "event"
37
+ },
7
38
  {
8
39
  "inputs": [],
9
40
  "name": "validationEngine",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@trustline.id/web3sdk",
3
3
  "description": "Protects EVM-compatible smart contracts from unauthorized access and malicious transactions",
4
- "version": "1.0.3",
4
+ "version": "1.0.4",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "compile": "hardhat compile",