* wip first pass at coordinator wrapper
* implement cancels, helper methods, and more unit tests
* pin typeorm version in pipeline
* prettier
* add export to 0x.js
* generate ZeroEx transaction using EIP712
* update Coordinator artifact
* change OrderError -> TypedDataError
* Exercise doctests as a test not as a linter
* Add a contract artifact doctest, and exercise it
* Clean up linter issues
* Change asset data decoding output type
Previously, it was a TypedDict, but that was causing problems. Sphinx
seems to be broken, such that none of the fields of the class were being
rendered into the doc.
Thinking on it further, I decided that a NamedTuple makes more sense
here anyways, since tuples are immutable and this output value isn't
something someone should ever build or modify. And, NamedTuple is
getting its fields properly rendered by Sphinx.
* Add type annotations to JSON schemas docs
* Add doc publish metadata file for middlewares pkg
* Improve documentation
Note that none of the changes to .py files impact functionality in any
way, because the changes are restricted to "docstrings", which to the
Python interpreter are simply no-op statements.
However, one caveat to that is that much of these docstring changes DO
affect the functionality of automated test runs, because all of the code
examples (blocks beginning with `>>> `) are "doctests", which are
exercised via the test framework.
The index.rst files are the top-level templates for generating the
documentation, and the "automodule"/"autoclass"/etc statements pull in
the docstrings from the source code.
* correct package name in doc URL
* Move sra_client module into zero_ex namespace
* Add functions to encode asset data to bytes
* Fix: SRA client was deserializing orders weirdly
The generated code was transforming the order structure, from the camel
case field name format in the spec, into the snake case field name
format expected by Python convention. With this problem in place, the
only way to take an order from a relayer and send it to a contract (for
fill, cancel, etc) was to manually transform the field names, one by
one, into a new structure.
* Fix problem with Web3/JSON order conversion utils
* doctest: maker, trade ZRX for WETH, not vice versa
* Remove redundant test
* Construct order in native Python, not JSON
Then convert it to JSON before sending it to the relayer.
* doctest: simplify asset units
* Add doctests for filling and cancelling
* Minor doctetst copy edits; whitespace
* Rename function, and add optional parameter
* Tweak docstrings on JSON conversion functions.
* Demo asset data decoding to view asset pairs
* Demo selecting an order from the order book
And have taker take it.
* Rename variable
* Abstract ganache from examples
Doing that exposed excessive use of the verbose
NETWORK_TO_ADDRESSES[NetworkId.Ganache] construct, so simplified that,
which ripped into eliminating other temporary variables that had been
used to hold specific contract addresses.
Also cleaned up some misplaced import statements.
* Add missing SRA client doc publication metadata
* Ran prettier on new SRA client doc pub metadata
* Remove local env customizations in doc metadata
* Eliminate temporary variable
* Rename variable
* Show `pip install` in every package's doc
* Doc NetorkID & pagination params as int, not float
* Clean up unmatched parenthesis in docs
* Stop restarting node unnecesssarily during test
* Add new, empty LibAssetData
* Support encoding & decoding of ERC20 asset data
* Support encoding & decoding of ERC721 asset data
* Support encoding & decoding of ERC1155 asset data
* Support encoding & decoding of multi-asset data
* Support querying ERC20 balance from asset data
* Support querying ERC721 balance from asset data
* Support querying ERC1155 balance from asset data
* Support querying balance from multi-asset data
* Support querying ERC20 allowance from asset data
* Support querying ERC721 allowance from asset data
* Support querying ERC1155 allowance from asset data
* In tests, wait for allowance set before checking
* Introduce temporary variable `assetDataBody`
* Handle edge case in multi-asset balance query
* Support multi-asset allowance query by asset data
* Move variable declaration up for readability.
* Make all solhint-disable's cite specific rules
And move the directives to the ends of lines whenever possible
* Rename query tests to include " by asset data"
* Extract test helper method
* Extract another test helper method
* Support batch queries of allowances & balances
* In LibAssetData.sol, use IERC1155, not ...Mintable
* Rename balance*() return vars: amount -> balance
* Fix bug in ERC721 balance query
Was using method balanceOf(), but needed to be using ownerOf().
getERC721TokenOwner() method lifted from
@0x/extensions/contracts/src/OrderValidator/OrderValidator.sol
* Reuse new en/decoders; avoid abi.decode().
* Start lowest allowance/balance from 0, not MAX_INT
* Properly implement ERC1155 balance querying
* Split lines for readability
* Also check isApprovedForAll in 721 allowance query
* Add neglected division of allowances by amounts
* Rename methods: balanceOf -> getBalance
* Rename methods: allowance -> getAllowance
* Add methods: getBalanceAndAllowance() & batch...()
* Rename return vars: amount -> allowance
* Add devdoc comments
* Rename batchGet* methods to getBatch*
* Remove refactoring relic
* Add revert messages to all require() calls
* Reduce gas usage for ERC1155 asset data decoding
* Don't use dockerized solc for ERC20 contracts
Because they demand solc version 0.4.26, and it seems as though the tag
for that version has been deleted from dockerhub.
Without this, @0x/contracts-erc20 was failing to build.
* Rename batch functions to use plurals
* Skip dockerized solc for contracts needing 0.4.26
I seems as though the tag for that version has been deleted from
dockerhub.
Without this, these contracts were failing to build.
* Make revert reasons follow snake case convention