diff --git a/docs/built-on-ethereum/decentralized-exchanges/auction-based/dutchx.md b/docs/built-on-ethereum/decentralized-exchanges/auction-based/dutchx.md index 73d4cf866..aaf6ae0ff 100644 --- a/docs/built-on-ethereum/decentralized-exchanges/auction-based/dutchx.md +++ b/docs/built-on-ethereum/decentralized-exchanges/auction-based/dutchx.md @@ -20,10 +20,10 @@ Since 28.June 2019 dxDAO is owner of the DutchX protocol governed be reputation ## Interface examples Sellers: -![](/assets/images/slowtrade.png) +![](/docs/assets/images/slowtrade.png) Buyers: -![](/assets/images/fairdex.png) +![](/docs/assets/images/fairdex.png) ## Resources diff --git a/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta.md b/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta.md index 81726f5ac..0cc1facaa 100644 --- a/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta.md +++ b/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta.md @@ -10,7 +10,7 @@ EtherDelta is a decentralized exchange. It processes both orders and trade settl ## Interface -![](/assets/images/etherdelta.png) +![](/docs/assets/images/etherdelta.png) ## Resources diff --git a/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/idex.md b/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/idex.md index 44448c13c..ceb4d6f80 100644 --- a/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/idex.md +++ b/docs/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/idex.md @@ -10,7 +10,7 @@ IDEX is a decentralized exchange. It processes orders in a centralized order boo ## Interface -![](/assets/images/idex.png) +![](/docs/assets/images/idex.png) ## Important Links diff --git a/docs/built-on-ethereum/decentralized-exchanges/peer-to-peer/airswap.md b/docs/built-on-ethereum/decentralized-exchanges/peer-to-peer/airswap.md index b8f7044e3..36479c43a 100644 --- a/docs/built-on-ethereum/decentralized-exchanges/peer-to-peer/airswap.md +++ b/docs/built-on-ethereum/decentralized-exchanges/peer-to-peer/airswap.md @@ -25,7 +25,7 @@ AirSwap is a decentralized exchange that uses an off chain matching system calle ## Interface -![](/assets/images/airswap.png) +![](/docs/assets/images/airswap.png) ## Resources diff --git a/docs/built-on-ethereum/decentralized-exchanges/pool-based/kyber.md b/docs/built-on-ethereum/decentralized-exchanges/pool-based/kyber.md index 88ed45e0f..7e74dee3c 100644 --- a/docs/built-on-ethereum/decentralized-exchanges/pool-based/kyber.md +++ b/docs/built-on-ethereum/decentralized-exchanges/pool-based/kyber.md @@ -18,7 +18,7 @@ Each reserve is a smart contract that is controlled by reserve admin who deploye ## Interface -![](/docs/assets/images/kyber.png) +![](/docs/docs/assets/images/kyber.png) ## Resources diff --git a/docs/built-on-ethereum/developer-tools/walletconnect.md b/docs/built-on-ethereum/developer-tools/walletconnect.md index f8b1b91fc..bc4023e92 100644 --- a/docs/built-on-ethereum/developer-tools/walletconnect.md +++ b/docs/built-on-ethereum/developer-tools/walletconnect.md @@ -6,7 +6,7 @@ description: WalletConnect is an open protocol to communicate securely between W WalletConnect is an open protocol to communicate securely between Wallets and Dapps (Web3 Apps). The protocol establishes a remote connection between two apps and/or devices using a Bridge server to relay payloads. These payloads are symmetrically encrypted through a shared key between the two peers. The connection is initiated by one peer displaying a QR Code or deep link with a standard WalletConnect URI and is established when the counter-party approves this connection request. It also includes an optional Push server to allow Native applications to notify the user of incoming payloads for establishes connections. -![](/assets/images/wallet_connect.png) +![](/docs/assets/images/wallet_connect.png) ## Resources diff --git a/docs/built-on-ethereum/games/etheremon.md b/docs/built-on-ethereum/games/etheremon.md index 9a2d30e20..270be3e87 100644 --- a/docs/built-on-ethereum/games/etheremon.md +++ b/docs/built-on-ethereum/games/etheremon.md @@ -4,7 +4,7 @@ description: Etheremon is a role-playing game with training, battling, and trans # Etheremon -Etheremon +Etheremon ## Summary diff --git a/docs/built-on-ethereum/open-finance/investing/wbtc.md b/docs/built-on-ethereum/open-finance/investing/wbtc.md index e32edbd80..f9e9378db 100644 --- a/docs/built-on-ethereum/open-finance/investing/wbtc.md +++ b/docs/built-on-ethereum/open-finance/investing/wbtc.md @@ -40,7 +40,7 @@ Burning is the action of redeeming Bitcoin for WBTC tokens, and only merchant ad ## Partners -![](/assets/images/wbtcpartners.png) +![](/docs/assets/images/wbtcpartners.png) ## Resources diff --git a/docs/built-on-ethereum/open-finance/payments/burner-wallet.md b/docs/built-on-ethereum/open-finance/payments/burner-wallet.md index 5fa8572ff..29af20c7b 100644 --- a/docs/built-on-ethereum/open-finance/payments/burner-wallet.md +++ b/docs/built-on-ethereum/open-finance/payments/burner-wallet.md @@ -19,7 +19,7 @@ First, it’s suggested at the moment to use the Burner Wallet without MetaMask. #### Wallet Generation Upon visiting [https://xdai.io](https://xdai.io) a wallet is automatically generated and your private key is stored in a cookie in your browser. There are multiple ways to backup and restore your Burner Wallet in the Advanced section. -![](/docs/assets/images/burner_advanced.png) +![](/docs/docs/assets/images/burner_advanced.png) * **Private Key:** Show private key and save it somewhere. This can be inserted into the Private Key box in the future and upon hitting create, the wallet will be restored. * **Seed Phrase:** Create any string of words or phrase that you want and hit create. This will create a wallet tied to that phrase and you can reenter it and pull it up at any point. WARNING: Doing this the first time will create a NEW wallet. @@ -27,7 +27,7 @@ Upon visiting [https://xdai.io](https://xdai.io) a wallet is automatically gener #### Getting xDai As previously mentioned, xDai is a representation of Dai running on a POA sidechain. This means that you must lock up Dai on the Ethereum mainnet to be minted xDai tokens. The Burner Wallet makes this easy through the Exchange section of the page. -![](/docs/assets/images/burner_exchange.png) +![](/docs/docs/assets/images/burner_exchange.png) You can start with just ETH or Dai. If you start with ETH you must go ETH > Dai > xDai using this page. Once complete, you have xDai in your wallet. diff --git a/docs/built-on-ethereum/open-finance/payments/daicard.md b/docs/built-on-ethereum/open-finance/payments/daicard.md index 96b1d4608..1a8d813cb 100644 --- a/docs/built-on-ethereum/open-finance/payments/daicard.md +++ b/docs/built-on-ethereum/open-finance/payments/daicard.md @@ -8,7 +8,7 @@ description: The Dai Card is a Dai payment channel solution created by Connext [Dai Card](https://daicard.io) is a Dai payment channel solution created by [Connext](https://connext.network/). The Dai Card uses payment channel hubs - a L2 solution built on top of Ethereum - to allow for instant and micro-fee transactions for users and developers. -![](/docs/assets/images/daicard_splash.png) +![](/docs/docs/assets/images/daicard_splash.png) ## How to Use the Dai Card @@ -18,11 +18,11 @@ There are multiple ways to get funds onto your Dai Card. The first is to directl Note: the beta version of the Dai Card imposes a $30 limit and will refund any deposits above this amount. -![](/docs/assets/images/daicard_deposit.png) +![](/docs/docs/assets/images/daicard_deposit.png) You can also request funds from someone else who is already using a Dai Card. This can be done by clicking the request button and entering in how much you’d like to request. A link will be generated and can be sent to the person you want to request from. The first transaction that is sent to your Card will take some extra time to execute. This is because, in the background, an onchain transaction is being done to set up your Card. -![](/docs/assets/images/daicard_request.png) +![](/docs/docs/assets/images/daicard_request.png) ### Sending Funds @@ -30,7 +30,7 @@ There are two different ways to send funds. If the receiver already has a Dai Ca If the receiver has never used a Dai Card before, you can use a Link payment instead. Link payments generate an unspent payment object which can be "claimed" by the recipient that produces the correct secret. Note that the link generated here contains the secret to redeem funds in plaintext, so you should be careful with it. -![](/docs/assets/images/daicard_send.png) +![](/docs/docs/assets/images/daicard_send.png) ### Settings @@ -38,7 +38,7 @@ It’s possible to backup your Card's seed and restore it in any browser, at any You can also restore this seed in other wallets such as Metamask, MyCrypto or TrustWallet. However, this will not give you access to the channel funds themselves, only the signing key used to control those funds. -![](/docs/assets/images/daicard_settings.png) +![](/docs/docs/assets/images/daicard_settings.png) ## FAQ diff --git a/docs/built-on-ethereum/oracles/chainlink.md b/docs/built-on-ethereum/oracles/chainlink.md index 876140bdc..a2e70425b 100644 --- a/docs/built-on-ethereum/oracles/chainlink.md +++ b/docs/built-on-ethereum/oracles/chainlink.md @@ -3,7 +3,7 @@ title: Chainlink - EthHub description: Chainlink is a decentralized oracle powering smart contracts by allowing them to connect to any api, piece of data, random numbers, or timed functions in a secure, reliable, decentralized manner. # Chainlink -![Chainlink Logo](../../assets/images/chainlink_logo.png) +![Chainlink Logo](../../docs/assets/images/chainlink_logo.png) ## Summary @@ -17,7 +17,7 @@ Each decentralized oracle network consists of a collection of independent node o You can take advantage of existing oracle networks, such as the Price Reference Data feeds for DeFi, providing highly accurate market prices, or you can build your own oracle network and external adaptor. -![Ethereum Oracle](../../assets/images/ethereum_oracle.png) +![Ethereum Oracle](../../docs/assets/images/ethereum_oracle.png) Chainlink currently provides decentralization at both the oracle and data source level. By using multiple independent Chainlink nodes, the user can protect against one oracle being a single point of failure. Similarly, using multiple data sources for sourcing market prices, the user can protect against one data source being a single source of truth. Both of these ensure that the oracle mechanism triggering your important smart contract is as secure and reliable as the underlying blockchain. diff --git a/docs/built-on-ethereum/tcrs/types-of-tcrs.md b/docs/built-on-ethereum/tcrs/types-of-tcrs.md index 1ee789135..13b4d885c 100644 --- a/docs/built-on-ethereum/tcrs/types-of-tcrs.md +++ b/docs/built-on-ethereum/tcrs/types-of-tcrs.md @@ -6,27 +6,27 @@ description: Examples of the different types of Token Curated Registries. ## Unordered TCR -![](/assets/images/unordered_tcr.png) +![](/docs/assets/images/unordered_tcr.png) ## Ordered TCR -![](/assets/images/ordered_tcr.png) +![](/docs/assets/images/ordered_tcr.png) ## Graded TCR -![](/assets/images/graded_tcr.png) +![](/docs/assets/images/graded_tcr.png) ## Layered TCR -![](/assets/images/layered_tcr.png) +![](/docs/assets/images/layered_tcr.png) ## Nested TCR -![](/assets/images/nested_tcr.png) +![](/docs/assets/images/nested_tcr.png) ## Combinatorial TCR -![](/assets/images/combinatorial_tcr.png) +![](/docs/assets/images/combinatorial_tcr.png) ## Resources diff --git a/docs/built-on-ethereum/tcrs/what-are-tcrs.md b/docs/built-on-ethereum/tcrs/what-are-tcrs.md index edbc209e3..0933aa5e4 100644 --- a/docs/built-on-ethereum/tcrs/what-are-tcrs.md +++ b/docs/built-on-ethereum/tcrs/what-are-tcrs.md @@ -10,7 +10,7 @@ Token Curated Registries \(TCRs\) are registries of listings generated by token Token holders, acting in their own self-interest, will produce a valuable list by obtaining and staking a finite supply token. The more listings staked, the scarcer the tokens; the more valuable the list, the more valuable the tokens. -![](/assets/images/tcrs.png) +![](/docs/assets/images/tcrs.png) ## Resources diff --git a/docs/ethereum-basics/monetary-policy.md b/docs/ethereum-basics/monetary-policy.md index 2c47e74be..b676cfff2 100644 --- a/docs/ethereum-basics/monetary-policy.md +++ b/docs/ethereum-basics/monetary-policy.md @@ -69,7 +69,7 @@ There are two majors upcoming factors when it comes to Ethereum's issuance rate * [Eth2 Phase 0](https://github.com/ethereum/eth2.0-specs/tree/dev/specs/phase0): Slight bump in issuance due to Beacon Chain launch. * [Eth2 Phase 1.5](https://github.com/ethereum/eth2.0-specs/tree/dev/specs/phase1): PoW rewards will be removed due to Eth1 PoW chain being [moved into a shard](https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-1.0-to-2.0-migration/#new-proposal) on the Eth2 chain. This means that the only rewards on chain will be to PoS validators, using the chart above. -![](/assets/images/issuance_graph.png) +![](/docs/assets/images/issuance_graph.png) ## Resources * [Ethereum issuance reduction process explained](https://twitter.com/sassal0x/status/1086023932514189312) diff --git a/docs/ethereum-roadmap/ethereum-2.0/sharding.md b/docs/ethereum-roadmap/ethereum-2.0/sharding.md index 57acfc319..ad21d257c 100644 --- a/docs/ethereum-roadmap/ethereum-2.0/sharding.md +++ b/docs/ethereum-roadmap/ethereum-2.0/sharding.md @@ -10,7 +10,7 @@ description: Information on sharding and how it will work on Ethereum. There is a trilemma in blockchain systems that can be visualized in form of a triangle known as DCS triangle, what it conveys is "It is impossible to achieve all three Decentralization, Consistency, and Scalability simultaenously. A tradeoff is necessary \(you can choose any two but not all\)". -![](/assets/images/dcs-triangle.png) +![](/docs/assets/images/dcs-triangle.png) Sharding is an attempt to solve this challenge. It simply means partitioning large chains \(databases\) into smaller, faster ones hence making the entire system more scalable. How? To solve scalability, we split the state and history stored on the main chain into shards. Each shard manages itself, has its own transaction history, and the effect of transactions in some shard are limited to that shard only. diff --git a/docs/ethereum-roadmap/layer-2-scaling/payment-channels.md b/docs/ethereum-roadmap/layer-2-scaling/payment-channels.md index f7b6e7c5c..2a6fc0874 100644 --- a/docs/ethereum-roadmap/layer-2-scaling/payment-channels.md +++ b/docs/ethereum-roadmap/layer-2-scaling/payment-channels.md @@ -34,7 +34,7 @@ The Raiden Network is an off-chain scaling solution for performing ERC20-complia The Raiden Network allows secure transfers of tokens between participants without the need for global consensus. This is achieved using digitally signed and hash-locked transfers, called balance proofs, fully collateralized by previously setup on-chain deposits. This concept, illustrated below, is known as payment channel technology. -![](/assets/images/payment_chans.png) +![](/docs/assets/images/payment_chans.png) The true strength of Raiden lies in its network protocol. Since opening and closing a payment channel between two peers still requires on-chain transactions, creating channels between all possible peers becomes infeasible. As it turns out, however, you do not need a direct payment channel between a payer and a payee if there exists at least one route through a network of channels that connects the two parties, as shown in figure 2. This network and its associated protocol for routing and interlocking channel transfers is called the Raiden Network. diff --git a/docs/ethereum-roadmap/layer-2-scaling/state-channels.md b/docs/ethereum-roadmap/layer-2-scaling/state-channels.md index a2c96d86a..988af714b 100644 --- a/docs/ethereum-roadmap/layer-2-scaling/state-channels.md +++ b/docs/ethereum-roadmap/layer-2-scaling/state-channels.md @@ -28,7 +28,7 @@ After the state deposit is locked, channel participants use off-chain messaging A basic breakdown: -![](/assets/images/state_chans.png) +![](/docs/assets/images/state_chans.png) 1. Part of the blockchain state is locked via multisignature or some sort of smart contract, so that a specific set of participants must completely agree with each other to update it. 2. Participants update the state amongst themselves by constructing and signing transactions that could be submitted to the blockchain, but instead are merely held onto for now. Each new update “trumps” previous updates. diff --git a/docs/guides/a-straightforward-guide-erc20-tokens.md b/docs/guides/a-straightforward-guide-erc20-tokens.md index 1b847a21b..dffadd3b2 100644 --- a/docs/guides/a-straightforward-guide-erc20-tokens.md +++ b/docs/guides/a-straightforward-guide-erc20-tokens.md @@ -4,7 +4,7 @@ A token can be defined as something that serves as a visible or tangible representation of something else. An example of this could be arcade tokens, these pieces of metal are the physical representation of the amount of games that a person is able to play. However, unlike arcade tokens, tokens built on top of Ethereum are entirely virtual, but can still have representational value assigned to them in the same way. ERC20 tokens are by far the most used token on Ethereum and this guide will break down the ERC20 standard as well as what it means for something to be an ERC20 token. -![](/assets/images/erc20_guide/metal_token.png) +![](/docs/assets/images/erc20_guide/metal_token.png) ## The Importance of Standards @@ -14,7 +14,7 @@ When a large group of people are trying to come together to build something, it ERC20 tokens are fungible in nature, meaning that there isn’t a distinction between individual tokens. For example, if I have 100 metal marbles in my hand that are all the same size and color, it doesn’t matter which one I give you. In the same way, if I have 100 of the same ERC20 token, it doesn’t matter which one I give you. This contrasts with ERC721 tokens which are non-fungible tokens (NFTs) such as CryptoKitties. -![](/assets/images/uniswap_guide/fungible_tokens.png) +![](/docs/assets/images/uniswap_guide/fungible_tokens.png) In addition, ERC20s can be thought of as the most simple unit of account and can be used for a wide range of things including currency, rewards points, debt slips, interest accruing bonds, and much more. They are also highly divisible and can be sent in extremely small increments. @@ -24,7 +24,7 @@ The standard is made up of six required functions, two required events, and thre Let’s use the token contract below as an example of a standard ERC20 token contract that implements all the requirements as well as the optional properties. We can currently see that there is a total supply of 100 tokens and are all owned by a single address. In addition, there haven’t been any allowances set. -![](/assets/images/erc20_guide/example_token_contract.png) +![](/docs/assets/images/erc20_guide/example_token_contract.png) ### Optional Properties @@ -37,33 +37,33 @@ Even though they are optional, most ERC20 tokens implement these properties to g * **totalSupply** - The totalSupply function returns the current supply of tokens for the contract. In this case the total supply is 100 tokens. -![](/assets/images/erc20_guide/total_supply.png) +![](/docs/assets/images/erc20_guide/total_supply.png) * **balanceOf** - If someone calls the balanceOf function with a specific address, it will return the token balance for that address. In this example, balanceOf is being called with 0x58c... and returns 100 tokens. -![](/assets/images/erc20_guide/balance_of.png) +![](/docs/assets/images/erc20_guide/balance_of.png) * **transfer** - The transfer function requires a recipient address as well as an amount to send. The function will only work if the amount specified is less than or equal to the sender's balance. We can see in the example below that the transfer simply decreases the sender’s balance by 10 and increases the recipient's balance by 10. Once complete, the function returns a true value to show that the transfer was successful. -![](/assets/images/erc20_guide/transfer.png) +![](/docs/assets/images/erc20_guide/transfer.png) * **approve** - If an address has a balance, then it can use the approve function to allow a specific amount of it’s balance to be spent by another address. Below, address 0x123... is allowing 0x58c... to spend 10 of its tokens. Similar to transfer, the function returns a true value to show that the approval was successful. Note that this function doesn’t affect the balances directly, only the allowances. -![](/assets/images/erc20_guide/approve.png) +![](/docs/assets/images/erc20_guide/approve.png) * **allowance** - The allowance function is used to see how much an address is allowed to spend from another address. We can confirm that since the approve function has already been called and updated the allowance, that the current allowance for 0x58c... to spend from 0x123... is 10 tokens. -![](/assets/images/erc20_guide/allowance.png) +![](/docs/assets/images/erc20_guide/allowance.png) * **transferFrom** - The transferFrom function is used when an address with an allowance wants to transfer the balance from one address to another. So 0x58c... can now move its allotted 10 tokens to 0xa3b... by specifying the address that they want to transfer from, the recipient address, and the amount. Since 0x58c… has a valid allowance of 10 tokens from 0x123... the transaction is valid and the 10 tokens are sent to 0xa3b.... -![](/assets/images/erc20_guide/transfer_from.png) +![](/docs/assets/images/erc20_guide/transfer_from.png) ### Required Events Events in Ethereum are usually triggered when a transaction changes a contract’s state. They are important because they are able to provide information to things that are external to the Ethereum blockchain, which can then trigger other external things to happen. In ERC20 token contracts, an event is fired when either the Balances or Allowances are updated. -![](/assets/images/erc20_guide/event_summary.png) +![](/docs/assets/images/erc20_guide/event_summary.png) * **Transfer** - The Transfer event is fired when someone either successfully uses the transfer or transferFrom functions. It will give you the address of both the recipient and the sender as well as the amount of tokens that was sent in the transaction. * **Approval** - The Approval event is fired when the approve function is successfully called and will return the owner, spender, and the approved amount. diff --git a/docs/guides/deciphering-a-transaction-on-etherscan.md b/docs/guides/deciphering-a-transaction-on-etherscan.md index c69d47e0b..c9c7c63cf 100644 --- a/docs/guides/deciphering-a-transaction-on-etherscan.md +++ b/docs/guides/deciphering-a-transaction-on-etherscan.md @@ -44,37 +44,37 @@ There are two different types of accounts in Ethereum. The first are externally In the random transaction below, we can see that one externally owned account (EOA) is sending Ether to another EOA. We know this because the data input is empty, the To address isn’t labeled as a contract address, and the value field is filled out. -![](/assets/images/etherscan_guide/EOA_to_EOA_tx.png) +![](/docs/assets/images/etherscan_guide/EOA_to_EOA_tx.png) When moving Ether, we are telling the Ethereum network please decrease my balance x amount and increase the other account’s balance by that amount. If the transaction is valid, then the global state of Ethereum updates the balances. In terms of gas considerations, a standard transfer of Ether from one EOA to another EOA costs 21,000 gas, which we can see is the amount used. -![](/assets/images/etherscan_guide/EOA_to_EOA_diagram.png) +![](/docs/assets/images/etherscan_guide/EOA_to_EOA_diagram.png) ## Transferring ERC20 Tokens One of the biggest differences between transferring ERC20 tokens versus transferring Ether is that the transaction is addressed to the Token’s contract address rather than the account we want to send the tokens to. In the random transaction below, the input data field includes the function we would like to call (in this case transfer). In addition, the inputs for the function, which includes the recipient's address along with the amount of tokens we want to send formatted in [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal). Etherscan marks the To account as the DAI contract address and added a field called Tokens Transferred to display the input data in a more human readable format. -![](/assets/images/etherscan_guide/token_transfer_tx.png) +![](/docs/assets/images/etherscan_guide/token_transfer_tx.png) Typically, the value field is left empty for token transfers because we only need to update to the contract’s balances. Lastly, the gas cost for transferring ERC20 tokens can vary depending on how to contract was implemented. -![](/assets/images/etherscan_guide/token_transfer_diagram.png) +![](/docs/assets/images/etherscan_guide/token_transfer_diagram.png) ## An Externally Owned Account (EOA) Creating a Contract Below is the transaction that created the Ethhub contract wallet. The most notable difference for contract creation transactions is that the input data contains the bytecode for the contract’s logic. We can see that the contract’s address is displayed in the To field with “Created” next to it. -![](/assets/images/etherscan_guide/ethhub_creation_tx.png) +![](/docs/assets/images/etherscan_guide/ethhub_creation_tx.png) ## Transferring Ether from an Externally Owned Account (EOA) to a Contract Account If you are sending Ether to a contract address, the gas cost can vary from the standard 21,000 gas. -![](/assets/images/etherscan_guide/Eth_to_EthHub_tx.png) +![](/docs/assets/images/etherscan_guide/Eth_to_EthHub_tx.png) Viewing the transaction above we can see that someone made an Ether deposit to the Ethhub contract wallet, which required 22,511 gas. This is because the contract wallet also emits a Deposit event when receiving Ether, which bumps the gas cost over 21,000. -![](/assets/images/etherscan_guide/Eth_EOA_to_contract_diagram.png) +![](/docs/assets/images/etherscan_guide/Eth_EOA_to_contract_diagram.png) That is why it is important to know what kind of account you are sending to before you assume that the gas cost will be 21,000 gas or else the transaction might run out of gas. In addition, there can be harmful side effects to sending a transaction to a contract that you aren’t familiar with because contracts are able to forward messages to other contracts. Meaning that calling a function or simply depositing Ether to a malicious contract could execute code that might yield a negative result. diff --git a/docs/guides/ethereum-high-yield-savings-account.md b/docs/guides/ethereum-high-yield-savings-account.md index 78bc557a5..cd568a98a 100644 --- a/docs/guides/ethereum-high-yield-savings-account.md +++ b/docs/guides/ethereum-high-yield-savings-account.md @@ -32,11 +32,11 @@ At this point you're ready to start earning interest on your stablecoin. The website to interact with the Maker protocol is called Oasis. [Navigate](https://oasis.app/save) to the save section and you will be presented with the current APR%. Follow the guide to deposit your Dai and your savings account will then be open: -![](/assets/images/dsr.png) +![](/docs/assets/images/dsr.png) Below is an image from Maker on how the mechanism functions: -![](/assets/images/dsr_guide.png) +![](/docs/assets/images/dsr_guide.png) Now you can watch your interest earned count up in real time and withdraw at any point. diff --git a/docs/guides/graphical-guide-for-understanding-uniswap.md b/docs/guides/graphical-guide-for-understanding-uniswap.md index 29e7e85db..467a37ef9 100644 --- a/docs/guides/graphical-guide-for-understanding-uniswap.md +++ b/docs/guides/graphical-guide-for-understanding-uniswap.md @@ -13,7 +13,7 @@ This guide is meant to help beginners understand how Uniswap works under the hoo ERC20 tokens are the most common type of token built on top of Ethereum. They are [fungible](https://en.wikipedia.org/wiki/Fungibility) in nature, meaning that there isn’t a distinction between individual tokens. For example, if I have 100 metal marbles in my hand that are all the same size and color, it doesn’t matter which one I give you. In the same way, if I have 100 of the same ERC20 token, it doesn’t matter which one I give you. This contrasts with ERC721 tokens which are non-fungible tokens (NFTs) such as cryptokitties. -![fungible token image](/assets/images/uniswap_guide/fungible_tokens.png) +![fungible token image](/docs/assets/images/uniswap_guide/fungible_tokens.png) ERC20s can be thought of as the most simple unit of account for a wide range of use cases including currency, rewards points, debt slips, interest accruing bonds, and much more. They are also highly divisible and can be sent in small increments. Since this type of token is so pervasive, it is important to develop a simple way of swapping between them. @@ -26,40 +26,40 @@ When viewing Uniswap’s website, it is important to keep in mind that it is muc There are two different types of contracts that make up Uniswap. The first is known as an Exchange contract. Exchange contracts hold a pool of a specific token and Ether that users can swap against. The second kind of contract is the Factory contract which is in charge of creating new Exchange contracts and registering the ERC20 token address to its Exchange contract address. -![uniswap contract overview](/assets/images/uniswap_guide/uniswap_contract_overview.png) +![uniswap contract overview](/docs/assets/images/uniswap_guide/uniswap_contract_overview.png) There are no listing fees to add a token on Uniswap, instead anyone can call a function on the Factory contract to register a new token. The graphic below is an example of when DAI was added to Uniswap. Someone first called the createExchange function in the Factory contract with DAI’s contract address. Then the Factory contract checks it’s registry to see if an Exchange contract has been created for that token address. If no Exchange address is listed, the factory contract deploys an Exchange contract and records the Exchange address in its registry. -![creating new pool](/assets/images/uniswap_guide/new_pool_creation.png) +![creating new pool](/docs/assets/images/uniswap_guide/new_pool_creation.png) ## Liquidity Pools Uniswap is unique in that it doesn’t use an order book to derive the price of an asset. In a centralized exchange, such as Coinbase Pro, the price of an asset listed on the exchange is determined by where the highest price someone is willing to pay and the lowest price someone is willing to sell meet. We can see in the image below, that the highest bid price for BTC on Coinbase Pro at that point was $9301.36 and the lowest asking price was $9301.37. -![orderbook example](/assets/images/uniswap_guide/orderbook_example.png) +![orderbook example](/docs/assets/images/uniswap_guide/orderbook_example.png) Instead Uniswap uses the Exchange contracts to pool both Ether and a specific ERC20. When trading Ether for a token, Ether is sent to the contract’s pool and the token is given back to the user. As a result, the user doesn’t need to wait for a counterparty in order to exchange or worry about specifying a price. Since anyone can list a token and users don't need to worry about matching with someone else, it is very easy to avoid any bootstrapping issue when first launching a token. -![swap example](/assets/images/uniswap_guide/swap_example.png) +![swap example](/docs/assets/images/uniswap_guide/swap_example.png) The amount that is returned from swapping is based on an automated market maker formula. The graph below helps illustrate how the formula works. Essentially, the amount that is returned to you is based on the ratio of Ether to token in the pool. No matter the size of a swap, the user is guaranteed to have their trade execute because the more of an asset that you add to one side of the pool, the further along the curve it pushes you for the other asset. Meaning the larger the order relative to the pool, the worst rate you will receive as the ratio moves along the curve. -![constant market maker graph](/assets/images/uniswap_guide/market_graph.png) +![constant market maker graph](/docs/assets/images/uniswap_guide/market_graph.png) *You can learn more about the formula [here](https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281).* But if users are only just sending cryptocurrency, how does the ratio of Ether to token remain priced correctly relative to external markets? The answer is the pools maintain a ratio relative to the price of the rest of the market through people [arbitraging](https://en.wikipedia.org/wiki/Arbitrage) the pool. Imagine that the DAI:ETH pool is expressed in terms of a scale and when the scale is balanced the pool is appropriately priced relative to the market price of a centralized exchange. Let’s say that the current price for ETH in USD on a centralized exchange is $150 and the ratio in the Uniswap DAI:ETH pool returns 150 DAI for 1 ETH. As a result, our scale is balanced because the pool matches the current market price on the centralized exchange. -![scale 150 balanced](/assets/images/uniswap_guide/scale_150_balanced.png) +![scale 150 balanced](/docs/assets/images/uniswap_guide/scale_150_balanced.png) Now let’s assume that there is a movement in the market that pushes the price of ETH to $100 on the centralized exchange. Due to the price movement, we can now see that our scale is off balance relative to the market price because people can now swap 1 ETH for 150 DAI on Uniswap when the market price on a centralized exchange is $100 for 1 ETH. -![scale 100 unbalanced](/assets/images/uniswap_guide/scale_100_unbalanced.png) +![scale 100 unbalanced](/docs/assets/images/uniswap_guide/scale_100_unbalanced.png) In response, someone can now put ETH into the pool, draw out DAI, then sell the DAI back for ETH on the centralized exchange for profit, and then repeat. They can do this until the pool has balanced out and reflects the current market price on a different exchange. -![scale 100 balanced](/assets/images/uniswap_guide/scale_100_balanced.png) +![scale 100 balanced](/docs/assets/images/uniswap_guide/scale_100_balanced.png) As a result, third party arbitrages play a large role in maintaining the correct ratio of token to Ether in Uniswap pools. @@ -67,7 +67,7 @@ As a result, third party arbitrages play a large role in maintaining the correct ## Swapping ERC20 ⇄ ERC20 When interacting with a single Exchange contract, a user is able to swap between Ether and a specific ERC20 token. However, Uniswap does allow users to directly swap an ERC20 to another ERC20 in a single transaction. In the example below, the user has DAI and would like to receive MKR. As a result, the user calls the tokenToTokenSwap function which adds DAI to the DAI pool and kicks ETH to the MKR pool and returns MKR to the address that initially sent the transaction. -![swapping erc20s](/assets/images/uniswap_guide/swapping_erc20s.png) +![swapping erc20s](/docs/assets/images/uniswap_guide/swapping_erc20s.png) ## Liquidity Providers @@ -78,7 +78,7 @@ In addition, larger liquidity pools are beneficial to users because they allow f Lastly, special ERC20 tokens known as liquidity tokens are minted to the provider’s address in proportion to how much liquidity they contributed to the pool. The tokens are burned when the user wants to receive the liquidity they contributed plus the fees that we accumulated while their liquidity was locked. -![adding liquidity](/assets/images/uniswap_guide/liquidity_token_image.png) +![adding liquidity](/docs/assets/images/uniswap_guide/liquidity_token_image.png) *I recommend reading [this article](https://medium.com/@pintail/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2) if you are curious about the advantages and risks of being a liquidity provider.* diff --git a/docs/guides/graphical-guide-to-compound.md b/docs/guides/graphical-guide-to-compound.md index aed1826e1..c9294a452 100644 --- a/docs/guides/graphical-guide-to-compound.md +++ b/docs/guides/graphical-guide-to-compound.md @@ -5,7 +5,7 @@ The Compound protocol is a series of smart contracts that allows users to earn i In addition, the list of assets that can be supplied and borrowed on Compound can be found [here](https://compound.finance/markets). -![coin stack](/assets/images/compound_guide/coin_stack.jpg) +![coin stack](/docs/assets/images/compound_guide/coin_stack.jpg) Lastly, this guide is meant to give a basic understanding of what the Compound protocol is. I recommend [this article](https://medium.com/compound-finance/the-compound-guide-to-supplying-borrowing-crypto-assets-94821f2950a0) if you are interested in how to use Compound website specifically. @@ -13,11 +13,11 @@ Lastly, this guide is meant to give a basic understanding of what the Compound p ## Supplying Assets and Receiving cTokens When anyone supplies an asset to the Compound protocol they are then given the corresponding cToken for their deposit. For example if someone locks up Dai they will receive an amount of cDai in return. cTokens are a deposit split that shows that you have added liquidity to the protocol and can be used to reclaim the underlying asset that was supplied plus the accrued interest, which is accrued for each block that is mined while the asset is locked in the protocol. -![comp supply](/assets/images/compound_guide/comp_supply.png) +![comp supply](/docs/assets/images/compound_guide/comp_supply.png) It is important to note that the amount of cTokens a user receives isn’t a 1 to 1 ratio to the token that was added. For example, if you supplied 100 Dai to the protocol you wouldn’t receive 100 cDai. The reason for this is that the cDai has an ever improving redemption rate based on the interest rate set by the protocol. Let’s say that for every 1 Dai you supply the protocol gives you 9 cDai. As time passes your Dai is earning interest, but your wallet will still only hold 9 cDai. However, when you go to redeem your cDai for Dai the rate will have improved, let’s say to 8 cDai for 1 Dai based on the interest accrued. As a result, your interest is paid to you in an ever improving exchange rate between the cToken and the underlying asset. -![cToken Redeem](/assets/images/compound_guide/cToken_redeem.png) +![cToken Redeem](/docs/assets/images/compound_guide/cToken_redeem.png) If you would like a more detailed example, the one below is from [Compound’s website](https://compound.finance/ctokens). @@ -38,14 +38,14 @@ cTokens makes it easier for both users and developers to interact with the Compo Having Compound’s balances tokenized allows for a greater amount of compossibility. Since these tokens can be easily transferred like any other token, they can be created with one address, sent to a cold storage address that has never been touched, and securely earn interest. They can also be sold on an exchange or even potentially used as collateral for a loan on a different platform. -![cToken uses](/assets/images/compound_guide/cToken_uses.png) +![cToken uses](/docs/assets/images/compound_guide/cToken_uses.png) In addition, cTokens can also be incorporated into other financial products. One of the most interesting integrations is the ETH 20 MA Crossover Yield Set II from TokenSets. This set rebalances between cUSDC and Eth based on the 20 Day simple moving average of Ether’s price. Therefore, by using cUSDC, when the set rebalances away from Eth not only has it moved to a stable position, it will also be earning interest for you until the next rebalance. ## Borrowing Assets Once users have locked up assets and hold cTokens, they are then able to borrow different assets from the protocol. For example a user that has locked Dai to create cDai, can then use that cDai as collateral to borrow BAT. Borrowing in most cases allows users to be able to either short or long an asset. It is important to note that there are certain collateral ratios for each asset based on the quality of the collateral. If the price of the asset you borrowed versus the one that you supplied diverges too far, then you have the possibility of having a portion of your collateral liquidated. -![comp borrow](/assets/images/compound_guide/comp_borrow.png) +![comp borrow](/docs/assets/images/compound_guide/comp_borrow.png) Another thing to point out is that the rate to borrow an asset from the protocol is usually higher than the rate for supplying an asset. The reason behind this is that since the protocol pools liquidity not all the funds that have been supplied will be borrowed, yet all funds added earn interest. As a result the borrow rate must be higher than the supply rate to make sure that all users that are supplying assets are given a rate even if their assets aren’t currently being borrowed. @@ -56,7 +56,7 @@ Specific details on how voting works from the [Compound FAQ](https://medium.com/ _Any address with more than 100,000 COMP delegated to it may propose governance actions, which are executable code. When a proposal is created, the community can submit their votes during a 3 day voting period. If a majority, and at least 400,000 votes are cast for the proposal, it is queued in a Timelock contract, and can be implemented after a 2 day waiting period._ -![comp voting](/assets/images/compound_guide/comp_voting.png) +![comp voting](/docs/assets/images/compound_guide/comp_voting.png) ## Liquidity Mining In the past, the main method of governance token distribution was by having an ICO. Recently however, many defi projects have been shifting to a new method called liquidity mining. Liquidity mining is a process where users lock up assets into a protocol and over time are rewarded with governance tokens. Users can now lock up liquidity into Compound and based on the amount that they have either supplied or borrowed are given a certain amount of Comp tokens. The main idea behind this is that it rewards people that are using the protocol, rather than having an ICO which rewards speculators. Currently, the distribution of Comp through liquidity mining is going to last a little over 4 years. @@ -65,7 +65,7 @@ Additional details can be found [here](https://medium.com/compound-finance/expan _4,229,949 COMP will be placed into a Reservoir contract, which transfers 0.50 COMP per Ethereum block (~2,880 per day) into the protocol for distribution._ -![liqu mining](/assets/images/compound_guide/liqu_mining.png) +![liqu mining](/docs/assets/images/compound_guide/liqu_mining.png) ## Conclusion The Compound protocol creates a simple way for users to earn interest on their assets without having to negotiate with a counterparty. Future users won’t even know that they are using the protocol, they will simply add funds and the apps they are interacting with will then pass them onto Compound. With no counterparty to negotiate with and no hard time lock requirements, Compound makes it seamless to earn interest on your Ethereum assets. diff --git a/docs/guides/guide-to-ens.md b/docs/guides/guide-to-ens.md index a63bd3cc8..66ba3c415 100644 --- a/docs/guides/guide-to-ens.md +++ b/docs/guides/guide-to-ens.md @@ -16,13 +16,13 @@ The core functionality of the ENS is registering .eth domains. There are a few ### Creating and Managing Domains Registering a domain is extremely easy using the [ENS app](https://app.ens.domains/). First search for the ENS name that you'd like. If it is not taken (if it is, head over to [OpenSea](https://opensea.io/assets/ens) and search for it), you will be presented with this screen. -![](/assets/images/ens_register.png) +![](/docs/assets/images/ens_register.png) Once here you can click request to register which will trigger a transaction, wait 1 minute and then you can register the name. It's now yours. Now that you own a .eth domain, you want to enable all the cool features that it offers. This starts on the domain management screen. -![](/assets/images/ens_manage.png) +![](/docs/assets/images/ens_manage.png) There is a lot going on so let's put all of the pieces together: @@ -34,7 +34,7 @@ There is a lot going on so let's put all of the pieces together: Once you set an Ethereum address in the address field, it will resolve in wallets such as MetaMask. -![](/assets/images/ens_metamask.png) +![](/docs/assets/images/ens_metamask.png) And if you point it to an IPFS hash, you can pull up the domain at ethhub.eth/ or ethhub.eth.link for browsers that don't resolve ENS names. @@ -44,11 +44,11 @@ Subdomains offer great flexibility for building on top of .eth domains. If you ### Creating and Managing Subdomains If you own a .eth domain and simply want to create subdomains for your own use, the easiest way to do this is through the ENS app by clicking on the Subdomains button. This is where you can add new subdomains. -![](/assets/images/ens_submanage.png) +![](/docs/assets/images/ens_submanage.png) Once subdomains are setup, they act very similar to domains in that the owner can control them and setup records. That means something like eric.ethhub.eth can also resolve to an address and an IPFS website. -![](/assets/images/ens_submanage2.png) +![](/docs/assets/images/ens_submanage2.png) ### Allowing Anyone to Claim Subdomains on your .eth Domain All of the above is being done by the registrant of the .eth domain. They are the one setting up the subdomains and have ultimate control over them, including being able to revoke them. This is fine for a company or someone that wants full control over the subdomains but what if you want anyone in the world to be able to claim a subdomain on your domain? You obviously don't want to have to coordinate with them and they won't want you to be able to revoke access. The good news is there is a solution that easily allows you to open up registration of subdomains on your domain. You can even set a price at which you'd like to sell them. @@ -83,7 +83,7 @@ The ENS team has setup a [website](https://now.ens.domains/) which allows for cl 7. Click on 'Pull requests', then 'New pull request'. 8. Click on 'Create pull request'. -![](/assets/images/ensnow.png) +![](/docs/assets/images/ensnow.png) ### Hosting Your Own Subdomain Sale Site ENSNow is great and easy, but the list of domains supported there is rather long and you cannot specifically brand your own domain. So, if you'd like to setup a site that only lists your domain and allows you to customize it, that is possible as well. A good example of this is a site I'm running called [Ethmojis](https://ethmojis.com/). @@ -106,6 +106,6 @@ npm run dev``` To host on [IPFS](https://docs.ipfs.io/introduction/usage/), upload the entire build folder and get your content hash. You can then put this content hash in the "records" section of any ENS domain or subdomain! Here's an example of how it will look: -![](/assets/images/ethmojis.png) +![](/docs/assets/images/ethmojis.png) Congrats, you are now an expert on the Ethereum Name Service! \ No newline at end of file diff --git a/docs/other/ethereum-branding-kit.md b/docs/other/ethereum-branding-kit.md index 9e608bba4..a862826b9 100644 --- a/docs/other/ethereum-branding-kit.md +++ b/docs/other/ethereum-branding-kit.md @@ -12,4 +12,4 @@ The following branding kits are built by the Ethereum community for Ethereum bas [These logos](https://github.com/ethhub-io/ethhub/tree/master/docs/assets/files/builtoneth_branding) should be used on websites of applications or products that are built on Ethereum. -![](/assets/images/built_on_ethereum.png) \ No newline at end of file +![](/docs/assets/images/built_on_ethereum.png) \ No newline at end of file diff --git a/docs/using-ethereum/ethereum-new-user-guide.md b/docs/using-ethereum/ethereum-new-user-guide.md index a8b6c2e65..817238f2e 100644 --- a/docs/using-ethereum/ethereum-new-user-guide.md +++ b/docs/using-ethereum/ethereum-new-user-guide.md @@ -32,7 +32,7 @@ Every Ethereum account can be restored via a random string of words. In the Meta We recommend downloading [Coinbase Wallet](https://wallet.coinbase.com/), clicking restore and typing in your seed phrase. Your wallet is now also mobilized! -![](/assets/images/coinbase_wallet_setup.png) +![](/docs/assets/images/coinbase_wallet_setup.png) ## Try Ethereum Applications diff --git a/docs/using-ethereum/mining.md b/docs/using-ethereum/mining.md index 659415caf..e8864713c 100644 --- a/docs/using-ethereum/mining.md +++ b/docs/using-ethereum/mining.md @@ -36,7 +36,7 @@ See [Serenity phases](https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2 ## Block structure -![Diagram of an Ethereum Block](/assets/images/blocks.png) +![Diagram of an Ethereum Block](/docs/assets/images/blocks.png) A block consists a header, which includes information identifying the block and linking it to the rest of the chain, and a body of transactions. Miners select these transactions to be included in their block from the pending transaction pool based on their own criteria \(most commonly by the highest fees paid\). diff --git a/site/404.html b/site/404.html index e79f1fe1e..ba4ab8bae 100644 --- a/site/404.html +++ b/site/404.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/built-on-ethereum/index.html b/site/built-on-ethereum/built-on-ethereum/index.html index a48cebfc1..78133603a 100644 --- a/site/built-on-ethereum/built-on-ethereum/index.html +++ b/site/built-on-ethereum/built-on-ethereum/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/collectables/cryptopunks/index.html b/site/built-on-ethereum/collectables/cryptopunks/index.html index 686e70248..7d09b7795 100644 --- a/site/built-on-ethereum/collectables/cryptopunks/index.html +++ b/site/built-on-ethereum/collectables/cryptopunks/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/collectables/decentraland/index.html b/site/built-on-ethereum/collectables/decentraland/index.html index 2ea540cfc..cc327d867 100644 --- a/site/built-on-ethereum/collectables/decentraland/index.html +++ b/site/built-on-ethereum/collectables/decentraland/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/collectables/mlb-crypto-baseball/index.html b/site/built-on-ethereum/collectables/mlb-crypto-baseball/index.html index 1f69cf793..4594e54df 100644 --- a/site/built-on-ethereum/collectables/mlb-crypto-baseball/index.html +++ b/site/built-on-ethereum/collectables/mlb-crypto-baseball/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/collectables/nftkred/index.html b/site/built-on-ethereum/collectables/nftkred/index.html index d4d28510f..6dcdf22a1 100644 --- a/site/built-on-ethereum/collectables/nftkred/index.html +++ b/site/built-on-ethereum/collectables/nftkred/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/decentralized-exchanges/aggregators/totle/index.html b/site/built-on-ethereum/decentralized-exchanges/aggregators/totle/index.html index 11afba9f5..3632714a3 100644 --- a/site/built-on-ethereum/decentralized-exchanges/aggregators/totle/index.html +++ b/site/built-on-ethereum/decentralized-exchanges/aggregators/totle/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-instant/index.html b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-instant/index.html index 516ead530..e5cf9dca9 100644 --- a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-instant/index.html +++ b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-instant/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-protocol/index.html b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-protocol/index.html index 11ea9d2e5..5675f7567 100644 --- a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-protocol/index.html +++ b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-protocol/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-relayers/index.html b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-relayers/index.html index 967d5732f..0761b7108 100644 --- a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-relayers/index.html +++ b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/0x-relayers/index.html @@ -33,7 +33,7 @@ - + diff --git a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta/index.html b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta/index.html index 30caba959..b78fbe62f 100644 --- a/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta/index.html +++ b/site/built-on-ethereum/decentralized-exchanges/off-chain-orderbook/etherdelta/index.html @@ -33,7 +33,7 @@ - + @@ -3481,7 +3481,7 @@

EtherDelta

Description

EtherDelta is a decentralized exchange. It processes both orders and trade settlements on chain.

Interface

-

+

Resources