-
Notifications
You must be signed in to change notification settings - Fork 1.7k
EIP-712 implementation #9631
EIP-712 implementation #9631
Conversation
It looks like @seunlanlege signed our Contributor License Agreement. 👍 Many thanks, Parity Technologies CLA Bot |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks pretty good, couple of minor style grumbles, and couple security issues (disambiguation), that I haven't seen mentioned explicitly in the spec though.
Cargo.toml
Outdated
@@ -135,7 +135,7 @@ members = [ | |||
"util/triehash-ethereum", | |||
"util/keccak-hasher", | |||
"util/patricia-trie-ethereum", | |||
"util/fastmap", | |||
"util/fastmap" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We prefer to keep trailing commas - so that every line is the same and you can easily add/remove or reorder them.
util/EIP-712/src/lib.rs
Outdated
match &*field.type_ { | ||
// Array type e.g uint256[], string[] | ||
ty if ty.rfind(']') == Some(ty.len() - 1) => { | ||
let array_type = ty.split('[').collect::<Vec<_>>()[0]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You don't need to collect()
, just use first()
and handle possible error (cause what if there is ]
in the type but not [
?) or maybe better just take a substr up to position of [
Can you set git user name and mail? https://help.github.com/articles/setting-your-commit-email-address-in-git/ |
@5chdn my git configs are set |
Can you associate the email with your Github account? It does not show your identity for commits |
ok done. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good!
util/EIP-712/src/lib.rs
Outdated
mod parser; | ||
use parser::*; | ||
pub use error::*; | ||
pub use eip712::*; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pub use
should be a separate section. Also can we avoid wildcard imports? Is there really so many things there that they can't be listed?
Maybe it's better to just make all the modules (parser
, error
, eip712
) public and just use more explicit path instead?
05526ca
to
08344e0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some submodules changes still.
util/EIP-712/src/lib.rs
Outdated
@@ -0,0 +1,303 @@ | |||
extern crate serde; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you add unused_extern_crates
as well?
456793c
to
9d2052e
Compare
@seunlanlege please rebase this on master |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm, let's get it merged :)
ba8c0a0
to
dec0bdf
Compare
…aced LinkedHashSet with IndexSet, added API spec to docs, fixed Type::Byte encoding branch
Co-Authored-By: seunlanlege <[email protected]>
* EIP-712 impl * added more tests * removed size parsing unwrap * corrected TYPE_REGEX to disallow zero sized fixed length arrays, replaced LinkedHashSet with IndexSet, added API spec to docs, fixed Type::Byte encoding branch * use Option<u64> instead of u64 for Type::Array::Length * replace `.iter()` with `.values()` Co-Authored-By: seunlanlege <[email protected]> * tabify eip712.rs * use proper comments for docs * Cargo.lock: revert unrelated changes * tabify encode.rs
* EIP-712 impl * added more tests * removed size parsing unwrap * corrected TYPE_REGEX to disallow zero sized fixed length arrays, replaced LinkedHashSet with IndexSet, added API spec to docs, fixed Type::Byte encoding branch * use Option<u64> instead of u64 for Type::Array::Length * replace `.iter()` with `.values()` Co-Authored-By: seunlanlege <[email protected]> * tabify eip712.rs * use proper comments for docs * Cargo.lock: revert unrelated changes * tabify encode.rs
* Bump beta to version 2.2.1 * fix: Intermittent failing CI due to addr in use (#9885) Allow OS to set port at runtime * Use Weak reference in PubSubClient (#9886) * Fix json tracer overflow (#9873) * Fix json tracer overflow * Replace trace_executed with a direct trace push * Remove unused variable * Add test for 5a51 * Remove duplicate json! * Fix docker script (#9854) * Dockerfile: change source path of the newly added check_sync.sh (#9869) * Allow to seal work on latest block (#9876) * Allow to seal work on latest block. * Test from @todr to check sealing conditions. * gitlab-ci: make android release build succeed (#9743) * use docker cargo config file for android builds * make android build succeed * ethcore: use Machine::verify_transaction on parent block (#9900) * ethcore: use Machine::verify_transaction on parent block also fixes off-by-one activation of transaction permission contract * ethcore: clarify call to verify_transaction * foundation: #6692865, ropsten: #4417537, kovan: #9363457 * Remove rust-toolchain file (#9906) * EIP-712 implementation (#9631) * EIP-712 impl * added more tests * removed size parsing unwrap * corrected TYPE_REGEX to disallow zero sized fixed length arrays, replaced LinkedHashSet with IndexSet, added API spec to docs, fixed Type::Byte encoding branch * use Option<u64> instead of u64 for Type::Array::Length * replace `.iter()` with `.values()` Co-Authored-By: seunlanlege <[email protected]> * tabify eip712.rs * use proper comments for docs * Cargo.lock: revert unrelated changes * tabify encode.rs * EIP 191 (#9701) * added sign_191 rpc method * fixed hash_structured_data return type * added ConfirmationPayload::SignMessage for non-prefixed signatures, added tests for sign191 * renamed WithValidator -> PresignedTransaction * rename applicationData to data in test * adds docs for EIP191Version, renamed SignRequest to EIP191SignRequest * light-fetch: Differentiate between out-of-gas/manual throw and use required gas from response on failure (#9824) * fix start_gas, handle OOG exceptions & NotEnoughGas * Change START_GAS: 50_000 -> 60_000 * When the `OutOfGas exception` is received then try to double the gas until it succeeds or block gas limit is reached * When `NotEnoughBasGas error` is received then use the required gas provided in the response * fix(light-fetch): ensure block_gas_limit is tried Try the `block_gas_limit` before regard the execution as an error * Update rpc/src/v1/helpers/light_fetch.rs Co-Authored-By: niklasad1 <[email protected]> * simplify cargo audit * Use block header for building finality (#9914) * ci: nuke the gitlab caches (#9855)
closes #9424
Missing