@@ -29,8 +29,9 @@ contract Exchange {
29
29
uint amount;
30
30
}
31
31
32
- Order[] public buyTokenOrders;
33
- Order[] public sellTokenOrders;
32
+ uint64 public orderCount;
33
+ mapping (uint64 => Order) public buyTokenOrders;
34
+ mapping (uint64 => Order) public sellTokenOrders;
34
35
35
36
uint64 [] private activeBuyOrders;
36
37
uint64 [] private activeSellOrders;
@@ -55,8 +56,8 @@ contract Exchange {
55
56
require (price > 0 );
56
57
require (msg .value > 0 );
57
58
58
- uint64 index = uint64 (activeBuyOrders. length );
59
- orderId = uint64 (buyTokenOrders. push ( Order (index , msg .sender , price, msg .value )) - 1 );
59
+ orderId = ++ orderCount;
60
+ buyTokenOrders[ orderId] = Order ( uint64 (activeBuyOrders. length ) , msg .sender , price, msg .value );
60
61
activeBuyOrders.push (orderId);
61
62
62
63
NewOrder (orderId, msg .sender , price, 0 , msg .value );
@@ -123,15 +124,15 @@ contract Exchange {
123
124
// orders are encoded as [id, maker, price, amount]
124
125
function getActiveBuyOrders (uint offset ) external view returns (uint [4 ][CHUNK_SIZE] response) {
125
126
for (uint8 i = 0 ; i < CHUNK_SIZE && i + offset < activeBuyOrders.length ; i++ ) {
126
- uint orderId = activeBuyOrders[offset + i];
127
+ uint64 orderId = activeBuyOrders[offset + i];
127
128
Order storage order = buyTokenOrders[orderId];
128
129
response[i] = [orderId, uint (order.maker), order.price, order.amount];
129
130
}
130
131
}
131
132
132
133
function getActiveSellOrders (uint offset ) external view returns (uint [4 ][CHUNK_SIZE] response) {
133
134
for (uint8 i = 0 ; i < CHUNK_SIZE && i + offset < activeSellOrders.length ; i++ ) {
134
- uint orderId = activeSellOrders[offset + i];
135
+ uint64 orderId = activeSellOrders[offset + i];
135
136
Order storage order = sellTokenOrders[orderId];
136
137
response[i] = [orderId, uint (order.maker), order.price, order.amount];
137
138
}
@@ -192,8 +193,8 @@ contract Exchange {
192
193
require (price > 0 );
193
194
require (tokenAmount > 0 );
194
195
195
- uint64 index = uint64 (activeSellOrders. length ) ;
196
- orderId = uint64 (sellTokenOrders. push ( Order (index , maker, price, tokenAmount)) - 1 );
196
+ orderId = ++ orderCount ;
197
+ sellTokenOrders[ orderId] = Order ( uint64 (activeSellOrders. length ) , maker, price, tokenAmount);
197
198
activeSellOrders.push (orderId);
198
199
199
200
NewOrder (orderId, maker, price, tokenAmount, 0 );
0 commit comments