An adapter contract to plug in front of the Safe SignMessageLib, producing EIP-712 signatures for Snapshot votes
The integrity checks implemented in the Roles Modifier contract require all branches of logical expressions to have identical type trees. Due to this limitation any role can only scope EIP-712 messages of a single structure.
A potential workaround for this could be adding a fallback()
function to the Eip712Signer
contract so we can use a
dedicated selector for signing each message type.
All contracts are WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Address: 0x
(forwarding to SignMessageLib
at 0xd53cd0aB83D845Ac265BE939c57F53AD838012c9
)
First, you need to install the dependencies:
$ bun install
Then, you need to set up all the required env variable. Create a .env
file based on .env.example
.
Compile the smart contracts with Hardhat:
$ bun run compile
Compile the smart contracts and generate TypeChain bindings:
$ bun run typechain
Run the tests with Hardhat:
$ bun run test
Lint the Solidity code:
$ bun run lint:sol
Lint the TypeScript code:
$ bun run lint:ts
Generate the code coverage report:
$ bun run coverage
See the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true bun run test
Delete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ bun run clean
Deploy the contract:
$ bun run deploy <network>
Currently the following values for <network>
are supported:
hardhat
mainnet
sepolia
gnosis
arbitrum
This project is licensed under MIT.