I think it was mentioned elsewhere (maybe on a call), but that futures versions would have a way to check for order validity via the smart contracts?
At the moment order validation requires alot of RPC calls, and if some (or all) of these could be moved on chain it will be an improvement when having to check across thousands of orders.
Otherwise I really like the proposed changes that will allow for order validation (allows for different order types) and being able to access price feeds of other on-chain oracles. As this will really enrich 0x-feature set.
Re: “Possible Features” list: The “Post Dated Transactions” feature is very close to something I was thinking about submitting as a ZEIP. But if it could be done as a v3 feature, would be even better/easier. An “Escrow Contract” is what I’ve been calling it so far, it would basically be a hybrid of the “Anti-Griefing Deposit Contract” and the “Post-Dated Transaction”; the use-case would be locking tokens until a specified condition is fulfilled. If “Post Dated Transactions” had the ability to be cancelled by a designated party (an address), that would get me 90% of the way to satisfying the use-case I had in mind.
Totally, this has been a pain for us internally so we’re going to add a number of helpers to check that an order is valid in all aspects.
The latest Exchange Wrapper now simulates an actual transfer of the asset, so that helps in checking any pesky transfer restrictions. Hopefully we can get full validation down to 2 eth_calls and allow batching where possible to speed up the request/response cycle overhead.
A lot of this will likely come in the form of a helper wrapper contract, so might not explicitly be in the Exchange contract.
There are some interesting cases opened up with the StaticCall “Asset Proxy”. This allows you to check some state specified in the order. For example the state could be “is blockTime > X yet?”. It can also allow for “Did is Y storage slot set therefor this order is no longer valid”