-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
86 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# eip712sign | ||
|
||
Small golang utility used to sign EIP-712 hashes. Supports: | ||
- ledgers | ||
- mnemonics | ||
- raw private keys | ||
|
||
### Installation | ||
|
||
```shell | ||
go install github.com/base-org/eip712sign | ||
``` | ||
|
||
### Flags | ||
|
||
```shell | ||
Usage of eip712sign: | ||
-hd-paths string | ||
Hierarchical deterministic derivation path for mnemonic or ledger (default "m/44'/60'/0'/0/0") | ||
-ledger | ||
Use ledger device for signing | ||
-mnemonic string | ||
Mnemonic to use for signing | ||
-prefix string | ||
String that prefixes the data to be signed (default "vvvvvvvv") | ||
-private-key string | ||
Private key to use for signing | ||
-suffix string | ||
String that suffixes the data to be signed (default "^^^^^^^^") | ||
-workdir string | ||
Directory in which to run the subprocess (default ".") | ||
``` | ||
|
||
### Usage | ||
|
||
`eip712sign` can either be run as a command wrapper, or data can be piped in via stdin. | ||
The former is recommended as it will only attempt to sign if the subprocess exit code is 0. | ||
|
||
```shell | ||
eip712sign --ledger -- <COMMAND> | ||
``` | ||
or | ||
```shell | ||
<COMMAND> | eip712sign --ledger | ||
``` | ||
|
||
Example signing some bytes output from a forge script: | ||
|
||
```shell | ||
eip712sign --ledger -- forge script --rpc-url <RPC_URL> SomeScript | ||
``` | ||
|
||
`eip712sign` will parse the stdout from the subprocess, and by default, sign any hex string between the magic strings `vvvvvvvv` and `^^^^^^^^`. | ||
This prefix + suffix can be configured using the `-prefix` and `-suffix` flags. | ||
In this example, `SomeScript` should print this to the console, for example: | ||
|
||
```solidity | ||
function printDataToSign(bytes memory data) internal pure { | ||
console.log("vvvvvvvv"); | ||
console.logBytes(data); | ||
console.log("^^^^^^^^"); | ||
} | ||
``` | ||
...where `data` is 66 bytes in length. | ||
|
||
Example output: | ||
```shell | ||
Compiling 5 files with 0.8.15 | ||
Solc 0.8.15 finished in 7.01s | ||
Compiler run successful! | ||
Script ran successfully. | ||
|
||
== Logs == | ||
vvvvvvvv | ||
0x19011b6ca1022dcb8ee88e2ab8dd1adf6f6bfa6af586f8b074e99c952e6e3c6befadd5c5183a56f8aa2520c9522029fc20aba61ce6c6aa32aec3b00519c95eb819e8 | ||
^^^^^^^^ | ||
|
||
forge exited with code 0 | ||
|
||
Domain hash: 0x1b6ca1022dcb8ee88e2ab8dd1adf6f6bfa6af586f8b074e99c952e6e3c6befad | ||
Message hash: 0xd5c5183a56f8aa2520c9522029fc20aba61ce6c6aa32aec3b00519c95eb819e8 | ||
|
||
Data: 0x19011b6ca1022dcb8ee88e2ab8dd1adf6f6bfa6af586f8b074e99c952e6e3c6befadd5c5183a56f8aa2520c9522029fc20aba61ce6c6aa32aec3b00519c95eb819e8 | ||
Signer: 0x4A02DE0C8a1C74AB99D1eCeb56d1d5f54B8293b0 | ||
Signature: 36b6a15e3e86b1ae44bdfc9183c4d86b0eaead44c838530ecb2e43dd0618559579195d42fe63868a44ee0279feef0181b1a9ed3b0faa89bf1ebd48b0f48f54bc1c``` | ||
``` |