This library aims to help users of proxy contracts, such as the Safe multisig wallet, to check that the transaction data and parameters is valid and safe to sign.
The following items are checked by the library:
- Do we deposit for the desired user?
- Is the result health factor above the desired limit?
- Is the target Aave address correct given the chain id?
- Are we interacting with the right Aave contract?
- Is the function selector correct?
You can download the package using :
npm install aave-tx-check
Then, you can import the validate(input: Input)
function in your code:
import validate from 'aave-tx-check'
The input is the following:
type Input = {
chain: {
id: number; rpc: string;
},
tx: {
to: string; data: string; value: string;
},
boundaries: {
allowedActor: string;
healthFactor: number;
}
}
-
chain.id
: the chain id of the transaction. This is used to check the Aave contrac addresses. -
chain.rpc
: RPC url the library will use to perform checks. -
tx.to
: the target of the transaction, e.g the Aave pool. -
tx.data
: the calldata that will be sent by you proxy contract. -
tx.value
: the amount of native token (e.g ETH) that you intend to include in the transaction. -
boundaries.allowedActors
: the address on behalf of who the assets should be deposited. In case of a withdraw, you should specify whose assets should be withdrawn. -
boundaries.healthFactor
: the minimum health factor required for the transaction to be valid. Keep in mind that a health factor of 1 will here be 10000 (=1*10^4) for scaling purposes.
If the input is problematic, the function call with throw an error.
You can test the repo with:
npm run test
You'll need to create an ``.env` file in the root folder to specify a testing private key and an RPC:
PRIVATE_KEY=""
RPC_URL="""