IDEX is not decentralized at all, it's fully centralized.
There's no way to use the system without IDEX team allow you to do so. If they don't want to process your transactions, your transactions will not be processed. If their servers goes down, the full system stops. You cannot trade tokens not white-listed by IDEX team. Etc, etc... Exactly the same way as a centralized exchanger works.
Said that, IDEX has some peculiar characteristics that make it in some way a little bit different from other centralized exchanger, so maybe if you already use centralized exchanger you can find something interesting in their approach.
The main (and IMHO actually the only one) difference is the way user submit trades: the user must sign every trade - i.e. buys and sells - with its own private key before they can be executed on the Ethereum network: this way, IDEX team cannot actually initialize trades without your consent.
Please consider that managing credentials (i.e. creating private keys in a decentralized approach, signing messages, etc.) is not a part of the IDEX platform but a base function of many blockchain platforms, including Ethereum.
So again: IDEX by its own has really no part that can be considered decentralized.
And to answer your other questions:
Q: IDEX mentions its a decentralized exchange, but is there a way to
interact with this DEX without going to the website? A: No
Q: What stops some
country from banning that domain name? A: Nothing
It mentions you can submit a
token to be listed on the IDEX. But isn't that a centralized control
of who gets listed or not? A: Yes, it is.
FillOrder
andCancelOrder
: github.com/0xProject/contracts/blob/master/contracts/… , with a bit of understanding how all this stuff works you are going to be able to submit valid values, with a simple sendTransaction() call to any Ethereum node that is currently mining transactions.geth
in a single instruction:contract.FillOrder.sendTransaction([params],{from:...,to contract_addr,value:...})
, whereparams
are the parameters for FillOrder() contract method, which you must build yourself,from
,to
andvalue
are the usual sendTransaction() options.contract
is the contract object created from contract's ABI. It is not an easy without knowledge, this is why the website does all this stuff for you.