1.0.3 β€’ Published 11 months ago

interaction-control-contract v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

InteractionControl Contract

Combines different smart contracts to grant total control of your functions if desired. From who calls them to in which order and even with which inputs' values.

πŸ’½Testing and implementation example repo => (click) πŸ’½

πŸ’½NPM repo => (click) πŸ’½

If further elaboration or development please mention me in your work.

πŸ˜‰ https://github.com/CarlosAlegreUr πŸ˜‰

πŸ€– General usecase explanation πŸ€–

InteractionControl can be used to have total control of your functions if desired.

From who calls them to in which order and even with which inputs' values.

✨ How to use ✨

  1. Make your contract inherit InteractionControl and add the isAllowedInteraction() modifier in the functions you desire to fully control.

    The isAllowedInteraction() has 3 parameters:

    1.1 => function selector of the function where it's being applied: bytes4(keccak256(bytes("funcSignatureAsString")))

    1.2 => msg.sender => to know who is calling.

    1.3 => a unique identifier of the inputs and it's values: keccak256(abi.encode(_newNumber))

    Btw it's essential you use abi.enconde() and not abi.encodePakced() because abi.encodePakced() can give the same output to different inputs.

  2. Additionally you can override callAllowInputsFor() or and callAllowFuncCallsFor() if you please mixing this InteractionControl with, for example, other useful ones like Ownable or AccessControl contracts from OpenZeppelin.

As InteractionControl inherits from CallOrderControl.sol and InputControl.sol you can use just their modifier directly in a function if pleased.

Check a simple implemented example at UseCaseContract.sol.

βš™οΈ DEPENDENCIES βš™οΈ

npm packages

πŸŽ‰ FUTURE IMPROVEMENTS πŸŽ‰

  • Improve and review (static analysis, audit...) code's tests.
  • Test in testnet.

πŸ“¨ Contact πŸ“¨

Carlos Alegre UrquizΓΊ - calegreu@gmail.com

β˜• Buy me a CryptoCoffee β˜•

Buy me a crypto coffe in ETH, MATIC or BNB β˜•πŸ§β˜• (or tokens if you please :p )

0x2365bf29236757bcfD141Fdb5C9318183716d866

πŸ“œ License πŸ“œ

Distributed under the MIT License. See LICENSE in the repository for more information.