Update comments and hard code function selector constants

This commit is contained in:
Amir Bandeali
2018-12-17 12:59:39 -08:00
parent 6b5b8fe8e0
commit e74b24bbdb
2 changed files with 56 additions and 53 deletions

View File

@@ -126,23 +126,23 @@ contract MixinMatchOrders is
// | 420 | | 10. salt |
// | 452 | | 11. offset to leftMakerAssetData (*) |
// | 484 | | 12. offset to leftTakerAssetData (*) |
// | 516 | 32 | leftMakerAssetData Length |
// | 548 | a | leftMakerAssetData Contents |
// | 548 + a | 32 | leftTakerAssetData Length |
// | 580 + a | b | leftTakerAssetData Contents |
// | | 12 * 32 | rightOrder: |
// | 516 | | 1. senderAddress |
// | 548 | | 2. makerAddress |
// | 580 | | 3. takerAddress |
// | 612 | | 4. feeRecipientAddress |
// | 644 | | 5. makerAssetAmount |
// | 676 | | 6. takerAssetAmount |
// | 708 | | 7. makerFeeAmount |
// | 740 | | 8. takerFeeAmount |
// | 772 | | 9. expirationTimeSeconds |
// | 804 | | 10. salt |
// | 836 | | 11. offset to rightMakerAssetData (*) |
// | 868 | | 12. offset to rightTakerAssetData (*) |
// | 900 | 32 | leftMakerAssetData Length |
// | 932 | a | leftMakerAssetData Contents |
// | 932 + a | 32 | leftTakerAssetData Length |
// | 964 + a | b | leftTakerAssetData Contents |
// | 580 + a + b | | 1. senderAddress |
// | 612 + a + b | | 2. makerAddress |
// | 644 + a + b | | 3. takerAddress |
// | 676 + a + b | | 4. feeRecipientAddress |
// | 708 + a + b | | 5. makerAssetAmount |
// | 740 + a + b | | 6. takerAssetAmount |
// | 772 + a + b | | 7. makerFeeAmount |
// | 804 + a + b | | 8. takerFeeAmount |
// | 836 + a + b | | 9. expirationTimeSeconds |
// | 868 + a + b | | 10. salt |
// | 900 + a + b | | 11. offset to rightMakerAssetData (*) |
// | 932 + a + b | | 12. offset to rightTakerAssetData (*) |
// | 964 + a + b | 32 | rightMakerAssetData Length |
// | 996 + a + b | c | rightMakerAssetData Contents |
// | 996 + a + b + c | 32 | rightTakerAssetData Length |
@@ -159,7 +159,7 @@ contract MixinMatchOrders is
0, // transfer 0 wei
0, // input starts at 0
calldatasize(), // length of input
0, // write output over output
0, // write output over input
288 // length of output is 288 bytes
)
@@ -183,18 +183,18 @@ contract MixinMatchOrders is
// | 224 | | 8. right.takerFeePaid |
// | 256 | | 9. leftMakerAssetSpreadAmount |
// | | 12 * 32 | rightOrder: |
// | 516 | | 1. senderAddress |
// | 548 | | 2. makerAddress |
// | 580 | | 3. takerAddress |
// | 612 | | 4. feeRecipientAddress |
// | 644 | | 5. makerAssetAmount |
// | 676 | | 6. takerAssetAmount |
// | 708 | | 7. makerFeeAmount |
// | 740 | | 8. takerFeeAmount |
// | 772 | | 9. expirationTimeSeconds |
// | 804 | | 10. salt |
// | 836 | | 11. offset to rightMakerAssetData (*) |
// | 868 | | 12. offset to rightTakerAssetData (*) |
// | 580 + a + b | | 1. senderAddress |
// | 612 + a + b | | 2. makerAddress |
// | 644 + a + b | | 3. takerAddress |
// | 676 + a + b | | 4. feeRecipientAddress |
// | 708 + a + b | | 5. makerAssetAmount |
// | 740 + a + b | | 6. takerAssetAmount |
// | 772 + a + b | | 7. makerFeeAmount |
// | 804 + a + b | | 8. takerFeeAmount |
// | 836 + a + b | | 9. expirationTimeSeconds |
// | 868 + a + b | | 10. salt |
// | 900 + a + b | | 11. offset to rightMakerAssetData (*) |
// | 932 + a + b | | 12. offset to rightTakerAssetData (*) |
let rightOrderStart := add(calldataload(36), 4)
@@ -208,29 +208,29 @@ contract MixinMatchOrders is
// | Offset | Length | Contents |
// |---------------------------|---------|-------------------------------------------- |
// | 416 | 4 | `fillOrder` function selector |
// | 480 + a + b | 4 | `fillOrder` function selector |
// | | 3 * 32 | function parameters: |
// | 420 | | 1. offset to rightOrder (*) |
// | 452 | | 2. takerAssetFillAmount |
// | 484 | | 3. offset to rightSignature (*) |
// | 484 + a + b | | 1. offset to rightOrder (*) |
// | 516 + a + b | | 2. takerAssetFillAmount |
// | 548 + a + b | | 3. offset to rightSignature (*) |
// | | 12 * 32 | rightOrder: |
// | 516 | | 1. senderAddress |
// | 548 | | 2. makerAddress |
// | 580 | | 3. takerAddress |
// | 612 | | 4. feeRecipientAddress |
// | 644 | | 5. makerAssetAmount |
// | 676 | | 6. takerAssetAmount |
// | 708 | | 7. makerFeeAmount |
// | 740 | | 8. takerFeeAmount |
// | 772 | | 9. expirationTimeSeconds |
// | 804 | | 10. salt |
// | 836 | | 11. offset to rightMakerAssetData (*) |
// | 868 | | 12. offset to rightTakerAssetData (*) |
// | 900 | 32 | rightMakerAssetData Length |
// | 932 | a | rightMakerAssetData Contents |
// | 932 + a | 32 | rightTakerAssetData Length |
// | 964 | b | rightTakerAssetData Contents |
// | 964 + b | 32 | rightSignature Length (always 0) |
// | 580 + a + b | | 1. senderAddress |
// | 612 + a + b | | 2. makerAddress |
// | 644 + a + b | | 3. takerAddress |
// | 676 + a + b | | 4. feeRecipientAddress |
// | 708 + a + b | | 5. makerAssetAmount |
// | 740 + a + b | | 6. takerAssetAmount |
// | 772 + a + b | | 7. makerFeeAmount |
// | 804 + a + b | | 8. takerFeeAmount |
// | 836 + a + b | | 9. expirationTimeSeconds |
// | 868 + a + b | | 10. salt |
// | 900 + a + b | | 11. offset to rightMakerAssetData (*) |
// | 932 + a + b | | 12. offset to rightTakerAssetData (*) |
// | 964 + a + b | 32 | rightMakerAssetData Length |
// | 996 + a + b | c | rightMakerAssetData Contents |
// | 996 + a + b + c | 32 | rightTakerAssetData Length |
// | 1028 + a + b + c | d | rightTakerAssetData Contents |
// | 1028 + a + b + c + d | 32 | rightSignature Length (always 0) |
// We assume that `leftOrder.makerAssetData == rightOrder.takerAssetData` and `leftOrder.takerAssetData == rightOrder.makerAssetData`
// `EXCHANGE.matchOrders` already makes this assumption, so it is likely

View File

@@ -23,9 +23,12 @@ import "@0x/contracts-interfaces/contracts/protocol/Exchange/IExchange.sol";
contract LibConstants {
bytes4 constant internal ERC20_TRANSFER_SELECTOR = bytes4(keccak256("transfer(address,uint256)"));
bytes4 constant internal ERC20_DATA_ID = bytes4(keccak256("ERC20Token(address)"));
bytes4 constant internal ERC721_DATA_ID = bytes4(keccak256("ERC721Token(address,uint256)"));
// bytes4(keccak256("transfer(address,uint256)"))
bytes4 constant internal ERC20_TRANSFER_SELECTOR = 0xa9059cbb;
// bytes4(keccak256("ERC20Token(address)"))
bytes4 constant internal ERC20_DATA_ID = 0xf47261b0;
// bytes4(keccak256("ERC721Token(address,uint256)"))
bytes4 constant internal ERC721_DATA_ID = 0x02571792;
// solhint-disable var-name-mixedcase
IExchange internal EXCHANGE;