Fix comments, styling, and optimize hashOrder
This commit is contained in:
parent
8199e87943
commit
3d6cf50364
@ -123,10 +123,10 @@ contract MixinTransactions is
|
|||||||
bytes32 dataHash = keccak256(data);
|
bytes32 dataHash = keccak256(data);
|
||||||
|
|
||||||
// Assembly for more efficiently computing:
|
// Assembly for more efficiently computing:
|
||||||
// keccak256(abi.encode(
|
// keccak256(abi.encodePacked(
|
||||||
// EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH,
|
// EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH,
|
||||||
// salt,
|
// salt,
|
||||||
// signerAddress,
|
// bytes32(signerAddress),
|
||||||
// keccak256(data)
|
// keccak256(data)
|
||||||
// ));
|
// ));
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ contract LibEIP712 {
|
|||||||
string constant internal EIP712_DOMAIN_VERSION = "2";
|
string constant internal EIP712_DOMAIN_VERSION = "2";
|
||||||
|
|
||||||
// Hash of the EIP712 Domain Separator Schema
|
// Hash of the EIP712 Domain Separator Schema
|
||||||
bytes32 public constant EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(
|
bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(
|
||||||
"EIP712Domain(",
|
"EIP712Domain(",
|
||||||
"string name,",
|
"string name,",
|
||||||
"string version,",
|
"string version,",
|
||||||
@ -45,11 +45,11 @@ contract LibEIP712 {
|
|||||||
constructor ()
|
constructor ()
|
||||||
public
|
public
|
||||||
{
|
{
|
||||||
EIP712_DOMAIN_HASH = keccak256(abi.encode(
|
EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(
|
||||||
EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,
|
EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,
|
||||||
keccak256(bytes(EIP712_DOMAIN_NAME)),
|
keccak256(bytes(EIP712_DOMAIN_NAME)),
|
||||||
keccak256(bytes(EIP712_DOMAIN_VERSION)),
|
keccak256(bytes(EIP712_DOMAIN_VERSION)),
|
||||||
address(this)
|
bytes32(address(this))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,8 +59,13 @@ contract LibEIP712 {
|
|||||||
function hashEIP712Message(bytes32 hashStruct)
|
function hashEIP712Message(bytes32 hashStruct)
|
||||||
internal
|
internal
|
||||||
view
|
view
|
||||||
returns (bytes32)
|
returns (bytes32 result)
|
||||||
{
|
{
|
||||||
return keccak256(abi.encodePacked(EIP191_HEADER, EIP712_DOMAIN_HASH, hashStruct));
|
result = keccak256(abi.encodePacked(
|
||||||
|
EIP191_HEADER,
|
||||||
|
EIP712_DOMAIN_HASH,
|
||||||
|
hashStruct
|
||||||
|
));
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,11 +103,12 @@ contract LibOrder is
|
|||||||
bytes32 takerAssetDataHash = keccak256(order.takerAssetData);
|
bytes32 takerAssetDataHash = keccak256(order.takerAssetData);
|
||||||
|
|
||||||
// Assembly for more efficiently computing:
|
// Assembly for more efficiently computing:
|
||||||
// keccak256(abi.encode(
|
// keccak256(abi.encodePacked(
|
||||||
// order.makerAddress,
|
// EIP712_ORDER_SCHEMA_HASH,
|
||||||
// order.takerAddress,
|
// bytes32(order.makerAddress),
|
||||||
// order.feeRecipientAddress,
|
// bytes32(order.takerAddress),
|
||||||
// order.senderAddress,
|
// bytes32(order.feeRecipientAddress),
|
||||||
|
// bytes32(order.senderAddress),
|
||||||
// order.makerAssetAmount,
|
// order.makerAssetAmount,
|
||||||
// order.takerAssetAmount,
|
// order.takerAssetAmount,
|
||||||
// order.makerFee,
|
// order.makerFee,
|
||||||
@ -119,24 +120,26 @@ contract LibOrder is
|
|||||||
// ));
|
// ));
|
||||||
|
|
||||||
assembly {
|
assembly {
|
||||||
|
// Calculate memory addresses that will be swapped out before hashing
|
||||||
|
let pos1 := sub(order, 32)
|
||||||
|
let pos2 := add(order, 320)
|
||||||
|
let pos3 := add(order, 352)
|
||||||
|
|
||||||
// Backup
|
// Backup
|
||||||
// solhint-disable-next-line space-after-comma
|
let temp1 := mload(pos1)
|
||||||
let temp1 := mload(sub(order, 32))
|
let temp2 := mload(pos2)
|
||||||
let temp2 := mload(add(order, 320))
|
let temp3 := mload(pos3)
|
||||||
let temp3 := mload(add(order, 352))
|
|
||||||
|
|
||||||
// Hash in place
|
// Hash in place
|
||||||
// solhint-disable-next-line space-after-comma
|
mstore(pos1, schemaHash)
|
||||||
mstore(sub(order, 32), schemaHash)
|
mstore(pos2, makerAssetDataHash)
|
||||||
mstore(add(order, 320), makerAssetDataHash)
|
mstore(pos3, takerAssetDataHash)
|
||||||
mstore(add(order, 352), takerAssetDataHash)
|
result := keccak256(pos1, 416)
|
||||||
result := keccak256(sub(order, 32), 416)
|
|
||||||
|
|
||||||
// Restore
|
// Restore
|
||||||
// solhint-disable-next-line space-after-comma
|
mstore(pos1, temp1)
|
||||||
mstore(sub(order, 32), temp1)
|
mstore(pos2, temp2)
|
||||||
mstore(add(order, 320), temp2)
|
mstore(pos3, temp3)
|
||||||
mstore(add(order, 352), temp3)
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user