aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemco Bloemen <remco@wicked.ventures>2018-02-27 08:27:28 +0800
committerAmir Bandeali <abandeali1@gmail.com>2018-04-21 04:56:16 +0800
commit6f3c6f7599b68be0fa9b952b0aabf879575b00e8 (patch)
treee8e6ba5c927174655b2f2b435be52c7420c69e3b
parent246eca91aa9a816215483cb1a28b6a3d0c73206e (diff)
downloaddexon-0x-contracts-6f3c6f7599b68be0fa9b952b0aabf879575b00e8.tar.gz
dexon-0x-contracts-6f3c6f7599b68be0fa9b952b0aabf879575b00e8.tar.zst
dexon-0x-contracts-6f3c6f7599b68be0fa9b952b0aabf879575b00e8.zip
Implement EIP712 and ABIv2 in LibOrder
-rw-r--r--packages/contracts/src/contracts/current/protocol/Exchange/LibOrder.sol32
1 files changed, 12 insertions, 20 deletions
diff --git a/packages/contracts/src/contracts/current/protocol/Exchange/LibOrder.sol b/packages/contracts/src/contracts/current/protocol/Exchange/LibOrder.sol
index 7f01fc1b7..b548479cd 100644
--- a/packages/contracts/src/contracts/current/protocol/Exchange/LibOrder.sol
+++ b/packages/contracts/src/contracts/current/protocol/Exchange/LibOrder.sol
@@ -17,11 +17,12 @@
*/
pragma solidity ^0.4.19;
+pragma experimental ABIEncoderV2;
contract LibOrder {
bytes32 constant orderSchemaHash = keccak256(
- "address exchangeContractAddress",
+ "address exchange",
"address makerAddress",
"address takerAddress",
"address makerTokenAddress",
@@ -36,6 +37,7 @@ contract LibOrder {
);
struct Order {
+ address exchange;
address maker;
address taker;
address makerToken;
@@ -46,30 +48,20 @@ contract LibOrder {
uint256 makerFee;
uint256 takerFee;
uint256 expirationTimestampInSec;
- bytes32 orderHash;
+ uint256 salt;
}
-
- /// @dev Calculates Keccak-256 hash of order with specified parameters.
- /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient.
- /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt.
- /// @return Keccak-256 hash of order.
- function getOrderHash(address[5] orderAddresses, uint256[6] orderValues)
+
+ /// @dev Calculates Keccak-256 hash of the order.
+ /// @param order The order structure.
+ /// @return Keccak-256 EIP712 hash of the order.
+ function getOrderHash(Order memory order)
public view
returns (bytes32 orderHash)
{
+ // TODO: EIP712 is not finalized yet
orderHash = keccak256(
- address(this),
- orderAddresses[0], // maker
- orderAddresses[1], // taker
- orderAddresses[2], // makerToken
- orderAddresses[3], // takerToken
- orderAddresses[4], // feeRecipient
- orderValues[0], // makerTokenAmount
- orderValues[1], // takerTokenAmount
- orderValues[2], // makerFee
- orderValues[3], // takerFee
- orderValues[4], // expirationTimestampInSec
- orderValues[5] // salt
+ orderSchemaHash,
+ keccak256(order)
);
return orderHash;
}