aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2019-02-02 02:08:56 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2019-02-02 02:08:56 +0800
commit79adf5cec69cf397d4e7165ee69b3df9ee84acae (patch)
tree8aaf8a479ce791cde6989749ad88826a83120022
parente1244648e06faee44fd030f8a1323ab649cb6443 (diff)
parent78bdc2d6b4aa87e1e973d90ad83ee97ecaf4615e (diff)
downloaddexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar.gz
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar.bz2
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar.lz
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar.xz
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.tar.zst
dexon-0x-contracts-79adf5cec69cf397d4e7165ee69b3df9ee84acae.zip
Merge development
-rw-r--r--.circleci/config.yml6
-rw-r--r--packages/instant/src/assets/icons/usdc.svg5
-rw-r--r--packages/instant/src/components/erc20_asset_amount_input.tsx2
-rw-r--r--packages/instant/src/data/asset_data_network_mapping.ts5
-rw-r--r--packages/instant/src/data/asset_meta_data_map.ts7
-rw-r--r--packages/migrations/CHANGELOG.json12
-rw-r--r--packages/migrations/src/cli.ts3
-rw-r--r--packages/migrations/src/migration.ts54
-rw-r--r--packages/sol-trace/CHANGELOG.json9
-rw-r--r--packages/sol-trace/package.json1
-rw-r--r--packages/sol-trace/src/revert_trace_subprovider.ts17
-rw-r--r--packages/sol-tracing-utils/CHANGELOG.json8
-rw-r--r--packages/sol-tracing-utils/package.json1
-rw-r--r--packages/sol-tracing-utils/src/ast_visitor.ts4
-rw-r--r--packages/sol-tracing-utils/src/trace_collector.ts17
-rw-r--r--packages/website/public/index.html1
-rw-r--r--packages/website/ts/components/portal/back_button.tsx2
-rw-r--r--packages/website/ts/components/portal/portal.tsx2
-rw-r--r--packages/website/ts/icons/illustrations/low-cost.svg52
-rwxr-xr-xpackages/website/ts/icons/illustrations/networkedLiquidity.svg46
-rwxr-xr-xpackages/website/ts/icons/illustrations/secureTrading.svg28
-rw-r--r--packages/website/ts/pages/why.tsx4
-rw-r--r--yarn.lock25
23 files changed, 193 insertions, 118 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index a1fc7dc93..0aec168cf 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -202,7 +202,7 @@ jobs:
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
+ - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
@@ -250,7 +250,7 @@ jobs:
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
+ - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
@@ -278,7 +278,7 @@ jobs:
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
+ - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
diff --git a/packages/instant/src/assets/icons/usdc.svg b/packages/instant/src/assets/icons/usdc.svg
new file mode 100644
index 000000000..a9201efb6
--- /dev/null
+++ b/packages/instant/src/assets/icons/usdc.svg
@@ -0,0 +1,5 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.5625 19.039C7.5625 19.3437 7.31875 19.5164 7.03438 19.425C3.09375 18.1656 0.25 14.489 0.25 10.132C0.25 5.78513 3.09375 2.09841 7.03438 0.839039C7.32891 0.747633 7.5625 0.920289 7.5625 1.22498V1.9867C7.5625 2.18982 7.41016 2.42341 7.21719 2.49451C4.09922 3.64216 1.875 6.63826 1.875 10.132C1.875 13.6359 4.09922 16.6219 7.21719 17.7594C7.41016 17.8304 7.5625 18.064 7.5625 18.2672V19.039Z" fill="white"/>
+<path d="M10.8125 16.2258C10.8125 16.4492 10.6297 16.632 10.4063 16.632H9.59376C9.37033 16.632 9.18751 16.4492 9.18751 16.2258V14.9461C7.41017 14.7023 6.54689 13.7172 6.31329 12.3562C6.27267 12.1226 6.45548 11.9195 6.68908 11.9195H7.61329C7.80626 11.9195 7.96876 12.0617 8.00939 12.2445C8.18204 13.0469 8.64923 13.6664 10.0711 13.6664C11.1172 13.6664 11.8688 13.0773 11.8688 12.2039C11.8688 11.3305 11.432 10.9953 9.88829 10.7414C7.61329 10.4367 6.53673 9.74608 6.53673 7.96874C6.53673 6.59764 7.58282 5.52108 9.18751 5.29764V4.03827C9.18751 3.81483 9.37033 3.63202 9.59376 3.63202H10.4063C10.6297 3.63202 10.8125 3.81483 10.8125 4.03827V5.32811C12.1227 5.56171 12.9555 6.30311 13.2297 7.54218C13.2805 7.77577 13.0977 7.98905 12.8539 7.98905H12.0008C11.818 7.98905 11.6656 7.86718 11.6149 7.69452C11.3813 6.91249 10.8227 6.56717 9.84767 6.56717C8.77111 6.56717 8.21251 7.08514 8.21251 7.81639C8.21251 8.58827 8.52736 8.97421 10.1828 9.2078C12.4172 9.51249 13.575 10.1523 13.575 12.0515C13.575 13.4937 12.4985 14.6617 10.8227 14.9258V16.2258H10.8125Z" fill="white"/>
+<path d="M12.9656 19.425C12.6711 19.5164 12.4375 19.3437 12.4375 19.0391V18.2773C12.4375 18.0539 12.5695 17.8406 12.7828 17.7695C15.8906 16.632 18.125 13.6359 18.125 10.1422C18.125 6.63827 15.9008 3.65233 12.7828 2.51483C12.5898 2.44374 12.4375 2.21015 12.4375 2.00702V1.2453C12.4375 0.940614 12.6812 0.767957 12.9656 0.859364C16.9062 2.09843 19.75 5.78515 19.75 10.132C19.75 14.4891 16.9062 18.1656 12.9656 19.425Z" fill="white"/>
+</svg>
diff --git a/packages/instant/src/components/erc20_asset_amount_input.tsx b/packages/instant/src/components/erc20_asset_amount_input.tsx
index 0418f9165..7e09f777a 100644
--- a/packages/instant/src/components/erc20_asset_amount_input.tsx
+++ b/packages/instant/src/components/erc20_asset_amount_input.tsx
@@ -95,7 +95,7 @@ export class ERC20AssetAmountInput extends React.PureComponent<ERC20AssetAmountI
if (_.isUndefined(numberOfAssetsAvailable)) {
text = 'Loading...';
} else if (numberOfAssetsAvailable === 0) {
- text = 'Assets Unavailable';
+ text = 'Tokens Unavailable';
}
return (
<Flex>
diff --git a/packages/instant/src/data/asset_data_network_mapping.ts b/packages/instant/src/data/asset_data_network_mapping.ts
index 4fd0a25ed..77fe75adc 100644
--- a/packages/instant/src/data/asset_data_network_mapping.ts
+++ b/packages/instant/src/data/asset_data_network_mapping.ts
@@ -63,4 +63,9 @@ export const assetDataNetworkMapping: AssetDataByNetwork[] = [
[Network.Kovan]: '0xf47261b00000000000000000000000008cb3971b8eb709c14616bd556ff6683019e90d9c',
[Network.Mainnet]: '0xf47261b00000000000000000000000001985365e9f78359a9b6ad760e32412f4a445e862',
},
+ // USDC
+ {
+ [Network.Kovan]: '',
+ [Network.Mainnet]: '0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
+ },
];
diff --git a/packages/instant/src/data/asset_meta_data_map.ts b/packages/instant/src/data/asset_meta_data_map.ts
index 88611a8c0..a8cb349f0 100644
--- a/packages/instant/src/data/asset_meta_data_map.ts
+++ b/packages/instant/src/data/asset_meta_data_map.ts
@@ -199,4 +199,11 @@ export const assetMetaDataMap: ObjectMap<AssetMetaData> = {
symbol: 'dai',
name: 'Dai Stablecoin',
},
+ '0xf47261b0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': {
+ assetProxyId: AssetProxyId.ERC20,
+ decimals: 6,
+ primaryColor: '#2775CA',
+ symbol: 'usdc',
+ name: 'USD Coin',
+ },
};
diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json
index 64ae94b14..ffda41e10 100644
--- a/packages/migrations/CHANGELOG.json
+++ b/packages/migrations/CHANGELOG.json
@@ -5,6 +5,18 @@
{
"note": "Upgrade the bignumber.js to v8.0.2",
"pr": 1517
+ },
+ {
+ "note": "Removed `owner` in Migrations",
+ "pr": 1533
+ },
+ {
+ "note": "`txDefaults` parameter now requires the `from` field",
+ "pr": 1533
+ },
+ {
+ "note": "Convert `from` to lower case when passed in via cli",
+ "pr": 1533
}
]
},
diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts
index 2404e7921..4e8ce982f 100644
--- a/packages/migrations/src/cli.ts
+++ b/packages/migrations/src/cli.ts
@@ -27,8 +27,9 @@ const args = yargs
const provider = new Web3ProviderEngine();
provider.addProvider(rpcSubprovider);
provider.start();
+ const normalizedFromAddress = (args.from as string).toLowerCase();
const txDefaults = {
- from: args.from,
+ from: normalizedFromAddress,
};
await runMigrationsAsync(provider, txDefaults);
process.exit(0);
diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts
index e0f245017..7668ec923 100644
--- a/packages/migrations/src/migration.ts
+++ b/packages/migrations/src/migration.ts
@@ -16,10 +16,8 @@ import { erc20TokenInfo, erc721TokenInfo } from './utils/token_info';
* @param txDefaults Default transaction values to use when deploying contracts (e.g., specify the desired contract creator with the `from` parameter).
* @returns The addresses of the contracts that were deployed.
*/
-export async function runMigrationsAsync(provider: Provider, txDefaults: Partial<TxData>): Promise<ContractAddresses> {
+export async function runMigrationsAsync(provider: Provider, txDefaults: TxData): Promise<ContractAddresses> {
const web3Wrapper = new Web3Wrapper(provider);
- const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync();
- const owner = accounts[0];
// Proxies
const erc20Proxy = await wrappers.ERC20ProxyContract.deployFrom0xArtifactAsync(
@@ -84,48 +82,38 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc20Proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, {
- from: owner,
- }),
+ await erc20Proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc721Proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, {
- from: owner,
- }),
+ await erc721Proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await multiAssetProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, {
- from: owner,
- }),
+ await multiAssetProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, txDefaults),
);
// MultiAssetProxy
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc20Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, {
- from: owner,
- }),
+ await erc20Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc721Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, {
- from: owner,
- }),
+ await erc721Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await multiAssetProxy.registerAssetProxy.sendTransactionAsync(erc20Proxy.address),
+ await multiAssetProxy.registerAssetProxy.sendTransactionAsync(erc20Proxy.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await multiAssetProxy.registerAssetProxy.sendTransactionAsync(erc721Proxy.address),
+ await multiAssetProxy.registerAssetProxy.sendTransactionAsync(erc721Proxy.address, txDefaults),
);
// Register the Asset Proxies to the Exchange
await web3Wrapper.awaitTransactionSuccessAsync(
- await exchange.registerAssetProxy.sendTransactionAsync(erc20Proxy.address),
+ await exchange.registerAssetProxy.sendTransactionAsync(erc20Proxy.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await exchange.registerAssetProxy.sendTransactionAsync(erc721Proxy.address),
+ await exchange.registerAssetProxy.sendTransactionAsync(erc721Proxy.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await exchange.registerAssetProxy.sendTransactionAsync(multiAssetProxy.address),
+ await exchange.registerAssetProxy.sendTransactionAsync(multiAssetProxy.address, txDefaults),
);
// Forwarder
@@ -156,7 +144,8 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial
);
// Multisigs
- const owners = [accounts[0], accounts[1]];
+ const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync();
+ const owners = _.uniq([accounts[0], accounts[1], txDefaults.from]);
const confirmationsRequired = new BigNumber(2);
const secondsRequired = new BigNumber(0);
@@ -173,19 +162,13 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial
// Transfer Ownership to the Asset Proxy Owner
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc20Proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, {
- from: owner,
- }),
+ await erc20Proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await erc721Proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, {
- from: owner,
- }),
+ await erc721Proxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, txDefaults),
);
await web3Wrapper.awaitTransactionSuccessAsync(
- await multiAssetProxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, {
- from: owner,
- }),
+ await multiAssetProxy.transferOwnership.sendTransactionAsync(assetProxyOwner.address, txDefaults),
);
// Fund the Forwarder with ZRX
@@ -220,10 +203,7 @@ let _cachedContractAddresses: ContractAddresses;
* @param txDefaults Default transaction values to use when deploying contracts (e.g., specify the desired contract creator with the `from` parameter).
* @returns The addresses of the contracts that were deployed.
*/
-export async function runMigrationsOnceAsync(
- provider: Provider,
- txDefaults: Partial<TxData>,
-): Promise<ContractAddresses> {
+export async function runMigrationsOnceAsync(provider: Provider, txDefaults: TxData): Promise<ContractAddresses> {
if (!_.isUndefined(_cachedContractAddresses)) {
return _cachedContractAddresses;
}
diff --git a/packages/sol-trace/CHANGELOG.json b/packages/sol-trace/CHANGELOG.json
index 550ca2feb..b633b3d21 100644
--- a/packages/sol-trace/CHANGELOG.json
+++ b/packages/sol-trace/CHANGELOG.json
@@ -1,5 +1,14 @@
[
{
+ "version": "2.0.1",
+ "changes": [
+ {
+ "note": "Improve error messages when unable to find matching bytecode",
+ "pr": 1558
+ }
+ ]
+ },
+ {
"version": "2.0.0",
"changes": [
{
diff --git a/packages/sol-trace/package.json b/packages/sol-trace/package.json
index 2aedf7ebc..25e81a82a 100644
--- a/packages/sol-trace/package.json
+++ b/packages/sol-trace/package.json
@@ -32,6 +32,7 @@
"@0x/sol-tracing-utils": "^4.0.1",
"@0x/subproviders": "^2.1.11",
"@0x/typescript-typings": "^3.0.8",
+ "chalk": "^2.3.0",
"ethereum-types": "^1.1.6",
"ethereumjs-util": "^5.1.1",
"lodash": "^4.17.5",
diff --git a/packages/sol-trace/src/revert_trace_subprovider.ts b/packages/sol-trace/src/revert_trace_subprovider.ts
index 046dad812..ea2b684a5 100644
--- a/packages/sol-trace/src/revert_trace_subprovider.ts
+++ b/packages/sol-trace/src/revert_trace_subprovider.ts
@@ -11,6 +11,7 @@ import {
TraceCollectionSubprovider,
utils,
} from '@0x/sol-tracing-utils';
+import chalk from 'chalk';
import { stripHexPrefix } from 'ethereumjs-util';
import * as _ from 'lodash';
import { getLogger, levels, Logger } from 'loglevel';
@@ -71,9 +72,21 @@ export class RevertTraceSubprovider extends TraceCollectionSubprovider {
const bytecode = await this._web3Wrapper.getContractCodeAsync(evmCallStackEntry.address);
const contractData = utils.getContractDataIfExists(this._contractsData, bytecode);
if (_.isUndefined(contractData)) {
+ const shortenHex = (hex: string) => {
+ /**
+ * Length choosen so that both error messages are of the same length
+ * and it's enough data to figure out which artifact has a problem.
+ */
+ const length = 18;
+ return `${hex.substr(0, length + 2)}...${hex.substr(hex.length - length, length)}`;
+ };
const errMsg = isContractCreation
- ? `Unknown contract creation transaction`
- : `Transaction to an unknown address: ${evmCallStackEntry.address}`;
+ ? `Unable to find matching bytecode for contract creation ${chalk.bold(
+ shortenHex(bytecode),
+ )}, please check your artifacts. Ignoring...`
+ : `Unable to find matching bytecode for contract address ${chalk.bold(
+ evmCallStackEntry.address,
+ )}, please check your artifacts. Ignoring...`;
this._logger.warn(errMsg);
continue;
}
diff --git a/packages/sol-tracing-utils/CHANGELOG.json b/packages/sol-tracing-utils/CHANGELOG.json
index 16a12ca63..89a5b6876 100644
--- a/packages/sol-tracing-utils/CHANGELOG.json
+++ b/packages/sol-tracing-utils/CHANGELOG.json
@@ -17,6 +17,14 @@
{
"note": "Print resasonable error message on bytecode collision",
"pr": 1535
+ },
+ {
+ "note": "Fix the bug in `ASTVisitor` causing the 'cannot read property `range` of `null`' error",
+ "pr": 1557
+ },
+ {
+ "note": "Improve error messages when unable to find matching bytecode",
+ "pr": 1558
}
]
},
diff --git a/packages/sol-tracing-utils/package.json b/packages/sol-tracing-utils/package.json
index 4b0fff222..929c73b84 100644
--- a/packages/sol-tracing-utils/package.json
+++ b/packages/sol-tracing-utils/package.json
@@ -53,6 +53,7 @@
"ethereum-types": "^1.1.6",
"ethereumjs-util": "^5.1.1",
"glob": "^7.1.2",
+ "chalk": "^2.3.0",
"istanbul": "^0.4.5",
"lodash": "^4.17.5",
"loglevel": "^1.6.1",
diff --git a/packages/sol-tracing-utils/src/ast_visitor.ts b/packages/sol-tracing-utils/src/ast_visitor.ts
index 1ac9cd1de..27f19378b 100644
--- a/packages/sol-tracing-utils/src/ast_visitor.ts
+++ b/packages/sol-tracing-utils/src/ast_visitor.ts
@@ -89,7 +89,9 @@ export class ASTVisitor {
this._visitStatement(ast);
}
public ExpressionStatement(ast: Parser.ExpressionStatement): void {
- this._visitStatement(ast.expression);
+ if (!_.isNull(ast.expression)) {
+ this._visitStatement(ast.expression);
+ }
}
public InlineAssemblyStatement(ast: Parser.InlineAssemblyStatement): void {
this._visitStatement(ast);
diff --git a/packages/sol-tracing-utils/src/trace_collector.ts b/packages/sol-tracing-utils/src/trace_collector.ts
index f5dde8762..2a1f15b83 100644
--- a/packages/sol-tracing-utils/src/trace_collector.ts
+++ b/packages/sol-tracing-utils/src/trace_collector.ts
@@ -1,4 +1,5 @@
import { promisify } from '@0x/utils';
+import chalk from 'chalk';
import { stripHexPrefix } from 'ethereumjs-util';
import * as fs from 'fs';
import { Collector } from 'istanbul';
@@ -71,9 +72,21 @@ export class TraceCollector {
: (traceInfo as TraceInfoExistingContract).runtimeBytecode;
const contractData = utils.getContractDataIfExists(this._contractsData, bytecode);
if (_.isUndefined(contractData)) {
+ const shortenHex = (hex: string) => {
+ /**
+ * Length chooses so that both error messages are of the same length
+ * and it's enough data to figure out which artifact has a problem.
+ */
+ const length = 18;
+ return `${hex.substr(0, length + 2)}...${hex.substr(hex.length - length, length)}`;
+ };
const errMsg = isContractCreation
- ? `Unknown contract creation transaction`
- : `Transaction to an unknown address: ${traceInfo.address}`;
+ ? `Unable to find matching bytecode for contract creation ${chalk.bold(
+ shortenHex(bytecode),
+ )}, please check your artifacts. Ignoring...`
+ : `Unable to find matching bytecode for contract address ${chalk.bold(
+ traceInfo.address,
+ )}, please check your artifacts. Ignoring...`;
this._logger.warn(errMsg);
return;
}
diff --git a/packages/website/public/index.html b/packages/website/public/index.html
index 738b675e7..dd17beebc 100644
--- a/packages/website/public/index.html
+++ b/packages/website/public/index.html
@@ -11,6 +11,7 @@
content="An Open Protocol For Decentralized Exchange On The Ethereum Blockchain"
/>
<meta property="og:image" content="/images/og_image.png" />
+ <meta name="google-site-verification" content="0wu9KbpKgGXUhUboLQw-MGtAHJHQ67rMFQN8KrX5I1s" />
<title>0x: The Protocol for Trading Tokens</title>
<link rel="icon" type="image/png" href="/images/favicon/favicon-2-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/images/favicon/favicon-2-16x16.png" sizes="16x16" />
diff --git a/packages/website/ts/components/portal/back_button.tsx b/packages/website/ts/components/portal/back_button.tsx
index bea69bb95..9b4451196 100644
--- a/packages/website/ts/components/portal/back_button.tsx
+++ b/packages/website/ts/components/portal/back_button.tsx
@@ -31,7 +31,7 @@ export const BackButton = (props: BackButtonProps) => {
<i style={styles.backButtonIcon} className={`zmdi zmdi-arrow-left`} />
</div>
<div style={{ marginLeft: 12, marginRight: 12 }}>
- <div style={{ fontSize: 16, color: colors.lightGrey }}>{props.labelText}</div>
+ <div style={{ fontSize: 16, color: colors.mediumBlue }}>{props.labelText}</div>
</div>
</Island>
</Link>
diff --git a/packages/website/ts/components/portal/portal.tsx b/packages/website/ts/components/portal/portal.tsx
index 59cf2db71..6ebbf8d1f 100644
--- a/packages/website/ts/components/portal/portal.tsx
+++ b/packages/website/ts/components/portal/portal.tsx
@@ -321,7 +321,7 @@ export class Portal extends React.Component<PortalProps, PortalState> {
};
return (
<Section
- header={<BackButton to={WebsitePaths.Portal} labelText="back to Relayers" />}
+ header={<BackButton to={WebsitePaths.Portal} labelText="Back to Relayers" />}
body={<Menu selectedPath={routeComponentProps.location.pathname} theme={menuTheme} />}
/>
);
diff --git a/packages/website/ts/icons/illustrations/low-cost.svg b/packages/website/ts/icons/illustrations/low-cost.svg
index 530cbdd79..da0d2e27c 100644
--- a/packages/website/ts/icons/illustrations/low-cost.svg
+++ b/packages/website/ts/icons/illustrations/low-cost.svg
@@ -1,30 +1,30 @@
-<svg width="82" height="82" viewBox="0 0 82 82" fill="none" xmlns="http://www.w3.org/2000/svg">
-<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="82" height="82">
-<path d="M41 79.9333C62.5023 79.9333 79.9333 62.5023 79.9333 41C79.9333 19.4977 62.5023 2.06665 41 2.06665C19.4977 2.06665 2.06665 19.4977 2.06665 41C2.06665 62.5023 19.4977 79.9333 41 79.9333Z" fill="#00AE99" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
+<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80">
+<path d="M40 78.9333C61.5023 78.9333 78.9333 61.5023 78.9333 40C78.9333 18.4977 61.5023 1.06665 40 1.06665C18.4977 1.06665 1.06665 18.4977 1.06665 40C1.06665 61.5023 18.4977 78.9333 40 78.9333Z" fill="#FFFFFF" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10"/>
</mask>
<g mask="url(#mask0)">
-<ellipse cx="41" cy="76" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="41" cy="71" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="41" cy="66" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="41" cy="61" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="41" cy="56" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="41" cy="50" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="41" cy="44" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="18" cy="89" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="18" cy="84" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="18" cy="79" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="18" cy="74" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="18" cy="69" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="18" cy="63" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="18" cy="57" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="70" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="64" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="59" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="54" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="49" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="64" cy="44" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="64" cy="38" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="64" cy="32" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="3"/>
-<circle cx="41" cy="41" r="38.9333" stroke="#00AE99" stroke-width="3"/>
+<ellipse cx="40" cy="75" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="40" cy="70" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="40" cy="65" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="40" cy="60" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="40" cy="55" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="40" cy="49" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="40" cy="43" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="17" cy="88" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="17" cy="83" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="17" cy="78" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="17" cy="73" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="17" cy="68" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="17" cy="62" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="17" cy="56" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="69" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="63" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="58" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="53" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="48" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<ellipse cx="63" cy="43" rx="8" ry="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="63" cy="37" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="63" cy="31" r="8" fill="#F3F6F4" stroke="#00AE99" stroke-width="2"/>
+<circle cx="40" cy="40" r="38.9333" stroke="#00AE99" stroke-width="2"/>
</g>
</svg>
diff --git a/packages/website/ts/icons/illustrations/networkedLiquidity.svg b/packages/website/ts/icons/illustrations/networkedLiquidity.svg
index c50ba7e7c..e03488ac7 100755
--- a/packages/website/ts/icons/illustrations/networkedLiquidity.svg
+++ b/packages/website/ts/icons/illustrations/networkedLiquidity.svg
@@ -1,28 +1,20 @@
-<svg width="151" height="150" viewBox="0 0 151 150" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M138.211 65C136.62 55.0255 132.688 45.8318 126.996 38M138.211 85C136.62 94.9746 132.688 104.168 126.996 112M112.994 126C105.164 131.69 95.972 135.62 86 137.211M66 137.211C56.0279 135.62 46.8364 131.69 39.0059 126M25.0043 112C19.3121 104.168 15.3801 94.9746 13.7892 85M13.7892 65C15.3801 55.0255 19.3121 45.8318 25.0043 38M39.0059 24C46.8364 18.3101 56.0279 14.3797 66 12.7893M86 12.7893C95.9721 14.3797 105.164 18.3101 112.994 24" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M75.9998 21.882C81.4901 21.882 85.9408 17.4313 85.9408 11.941C85.9408 6.45074 81.4901 2 75.9998 2C70.5096 2 66.0588 6.45074 66.0588 11.941C66.0588 17.4313 70.5096 21.882 75.9998 21.882Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M75.9998 148C81.4901 148 85.9408 143.549 85.9408 138.059C85.9408 132.569 81.4901 128.118 75.9998 128.118C70.5096 128.118 66.0588 132.569 66.0588 138.059C66.0588 143.549 70.5096 148 75.9998 148Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M129.118 75.0001C129.118 80.4903 133.569 84.9411 139.059 84.9411C144.549 84.9411 149 80.4903 149 75.0001C149 69.5098 144.549 65.0591 139.059 65.0591C133.569 65.0591 129.118 69.5098 129.118 75.0001Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M2.99982 75.0001C2.99982 80.4903 7.45056 84.9411 12.9408 84.9411C18.4311 84.9411 22.8818 80.4903 22.8818 75.0001C22.8818 69.5098 18.4311 65.0591 12.9408 65.0591C7.45056 65.0591 2.99982 69.5098 2.99982 75.0001Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M113.56 37.4399C117.442 41.3221 123.737 41.3221 127.619 37.4399C131.501 33.5577 131.501 27.2634 127.619 23.3812C123.737 19.499 117.442 19.499 113.56 23.3812C109.678 27.2634 109.678 33.5577 113.56 37.4399Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M24.381 126.619C28.2632 130.501 34.5575 130.501 38.4397 126.619C42.322 122.737 42.322 116.442 38.4398 112.56C34.5576 108.678 28.2632 108.678 24.381 112.56C20.4988 116.442 20.4988 122.737 24.381 126.619Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M38.4397 37.4399C42.3219 33.5577 42.3219 27.2634 38.4397 23.3812C34.5575 19.499 28.2632 19.499 24.381 23.3812C20.4988 27.2634 20.4988 33.5577 24.381 37.4399C28.2632 41.3221 34.5575 41.3221 38.4397 37.4399Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M127.619 126.619C131.501 122.737 131.501 116.442 127.619 112.56C123.736 108.678 117.442 108.678 113.56 112.56C109.678 116.442 109.678 122.737 113.56 126.619C117.442 130.501 123.737 130.501 127.619 126.619Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M71.8365 79.1636C69.5464 76.8735 69.5464 73.1261 71.8365 70.784C74.1265 68.4939 77.8739 68.4939 80.216 70.784C82.5061 73.074 82.5061 76.8214 80.216 79.1636C77.8739 81.4537 74.1265 81.4537 71.8365 79.1636Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M51.7456 79.1636C49.4556 76.8735 49.4556 73.1261 51.7456 70.784C54.0357 68.4939 57.7831 68.4939 60.1252 70.784C62.4153 73.074 62.4153 76.8214 60.1252 79.1636C57.7831 81.4537 54.0878 81.4537 51.7456 79.1636Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M31.7071 79.1636C29.417 76.8735 29.417 73.1261 31.7071 70.784C33.9971 68.4939 37.7445 68.4939 40.0867 70.784C42.3767 73.074 42.3767 76.8214 40.0867 79.1636C37.7445 81.4537 33.9971 81.4537 31.7071 79.1636Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M91.8748 79.1636C89.5847 76.8736 89.5847 73.1262 91.8748 70.784C94.1649 68.4939 97.9123 68.4939 100.254 70.784C102.544 73.0741 102.544 76.8215 100.254 79.1636C97.9123 81.4537 94.1649 81.4537 91.8748 79.1636Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M111.912 79.1636C109.622 76.8736 109.622 73.1262 111.912 70.784C114.202 68.4939 117.95 68.4939 120.292 70.784C122.582 73.0741 122.582 76.8215 120.292 79.1636C117.95 81.4537 114.202 81.4537 111.912 79.1636Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M55.9113 60.7908C55.9113 57.5118 58.5657 54.9094 61.7926 54.9094C65.0716 54.9094 67.6739 57.5638 67.6739 60.7908C67.6739 64.0697 65.0195 66.6721 61.7926 66.6721C58.5657 66.7241 55.9113 64.0697 55.9113 60.7908Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M41.7526 46.6344C41.7526 43.3554 44.407 40.7531 47.6339 40.7531C50.9129 40.7531 53.5152 43.4075 53.5152 46.6344C53.5152 49.9134 50.8608 52.5157 47.6339 52.5157C44.3549 52.5157 41.7526 49.9134 41.7526 46.6344Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M84.2758 89.1566C84.2758 85.8776 86.9302 83.2753 90.1571 83.2753C93.4361 83.2753 96.0384 85.9297 96.0384 89.1566C96.0384 92.4356 93.384 95.0379 90.1571 95.0379C86.8781 95.09 84.2758 92.4356 84.2758 89.1566Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M98.4327 103.365C98.4327 100.086 101.087 97.4841 104.314 97.4841C107.593 97.4841 110.195 100.139 110.195 103.365C110.195 106.644 107.541 109.247 104.314 109.247C101.087 109.247 98.4327 106.592 98.4327 103.365Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M90.1579 54.9094C93.4369 54.9094 96.0392 57.5638 96.0392 60.7907C96.0392 64.0697 93.3848 66.672 90.1579 66.672C86.8789 66.672 84.2766 64.0176 84.2766 60.7907C84.2766 57.5638 86.8789 54.9094 90.1579 54.9094Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M104.366 40.7531C107.645 40.7531 110.248 43.4075 110.248 46.6344C110.248 49.9134 107.593 52.5157 104.366 52.5157C101.087 52.5157 98.4851 49.8613 98.4851 46.6344C98.4331 43.3554 101.087 40.7531 104.366 40.7531Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M61.7933 83.2753C65.0722 83.2753 67.6746 85.9297 67.6746 89.1566C67.6746 92.4356 65.0202 95.0379 61.7933 95.0379C58.5143 95.0379 55.9119 92.3835 55.9119 89.1566C55.9119 85.8776 58.5663 83.2753 61.7933 83.2753Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M47.6344 97.4323C50.9134 97.4323 53.5158 100.087 53.5158 103.314C53.5158 106.593 50.8614 109.195 47.6344 109.195C44.3555 109.195 41.7531 106.541 41.7531 103.314C41.7531 100.087 44.3555 97.4323 47.6344 97.4323Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M71.836 50.7461C74.1261 48.456 77.8735 48.456 80.2156 50.7461C82.5057 53.0362 82.5057 56.7836 80.2156 59.1257C77.9255 61.4158 74.1781 61.4158 71.836 59.1257C69.4939 56.7836 69.4939 53.0882 71.836 50.7461Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M71.836 30.7078C74.1261 28.4177 77.8735 28.4177 80.2156 30.7078C82.5057 32.9979 82.5057 36.7453 80.2156 39.0874C77.9255 41.3775 74.1781 41.3775 71.836 39.0874C69.4939 36.7453 69.4939 32.9979 71.836 30.7078Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M71.836 90.8745C74.1261 88.5844 77.8735 88.5844 80.2156 90.8745C82.5057 93.1646 82.5057 96.912 80.2156 99.2541C77.9255 101.544 74.1781 101.544 71.836 99.2541C69.4939 96.912 69.4939 93.1646 71.836 90.8745Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M71.836 110.913C74.1261 108.622 77.8735 108.622 80.2156 110.913C82.5057 113.203 82.5057 116.95 80.2156 119.292C77.9255 121.582 74.1781 121.582 71.836 119.292C69.4939 116.95 69.4939 113.203 71.836 110.913Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
+<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M34.6667 7.53809C29.5282 8.37352 24.7889 10.4019 20.7422 13.3299M45.2755 7.53809C50.4376 8.36615 55.1968 10.3967 59.2579 13.3334M66.6667 20.7417C69.5933 24.788 71.6214 29.5274 72.4589 34.6667M72.4589 45.3349C71.6214 50.4752 69.5933 55.2144 66.6667 59.2604M59.2579 66.6685C55.1968 69.6054 50.4376 71.6372 45.2755 72.4686M34.6667 72.4592C29.5269 71.6219 24.788 69.5944 20.7422 66.6685M13.3334 59.2604C10.4068 55.2144 8.3787 50.4752 7.54114 45.3349M7.54114 34.6671C8.37875 29.5277 10.407 24.7883 13.333 20.7417" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
+<path d="M37.4782 42.5218C36.0999 41.1434 36.0999 38.8879 37.4782 37.4782C38.8566 36.0999 41.1121 36.0999 42.5218 37.4782C43.9002 38.8566 43.9002 41.1121 42.5218 42.5218C41.1121 43.9002 38.8566 43.9002 37.4782 42.5218Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M37.4784 27.4107C36.1 26.0323 36.1 23.7768 37.4784 22.3671C38.8567 20.9888 41.1122 20.9888 42.5219 22.3671C43.9003 23.7455 43.9003 26.001 42.5219 27.4107C41.1122 28.7891 38.8567 28.7891 37.4784 27.4107Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M37.4784 57.633C36.1 56.2546 36.1 53.9991 37.4784 52.5894C38.8567 51.2111 41.1122 51.2111 42.5219 52.5894C43.9003 53.9678 43.9003 56.2233 42.5219 57.633C41.1122 59.0114 38.8567 59.0114 37.4784 57.633Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M36.2174 10.8938C34.1499 8.82629 34.1499 5.44303 36.2174 3.32849C38.285 1.26095 41.6682 1.26095 43.7828 3.32849C45.8503 5.39604 45.8503 8.7793 43.7828 10.8938C41.6682 12.9614 38.285 12.9614 36.2174 10.8938Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M36.2174 76.6717C34.1499 74.6041 34.1499 71.2209 36.2174 69.1063C38.285 67.0388 41.6682 67.0388 43.7828 69.1063C45.8503 71.1739 45.8503 74.5571 43.7828 76.6717C41.6682 78.7392 38.285 78.7392 36.2174 76.6717Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M27.4107 42.5218C26.0323 43.9001 23.7768 43.9001 22.3671 42.5218C20.9888 41.1434 20.9888 38.8879 22.3671 37.4782C23.7455 36.0998 26.001 36.0998 27.4107 37.4782C28.7891 38.8879 28.7891 41.1434 27.4107 42.5218Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M57.633 42.5218C56.2546 43.9001 53.9991 43.9001 52.5894 42.5218C51.2111 41.1434 51.2111 38.8879 52.5894 37.4782C53.9678 36.0998 56.2233 36.0998 57.633 37.4782C59.0114 38.8879 59.0114 41.1434 57.633 42.5218Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M10.8938 43.7827C8.82629 45.8503 5.44303 45.8503 3.32849 43.7827C1.26095 41.7152 1.26095 38.3319 3.32849 36.2174C5.39604 34.1498 8.7793 34.1498 10.8938 36.2174C12.9614 38.3319 12.9614 41.7152 10.8938 43.7827Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M76.6717 43.7827C74.6041 45.8503 71.2209 45.8503 69.1063 43.7827C67.0388 41.7152 67.0388 38.3319 69.1063 36.2174C71.1739 34.1498 74.5571 34.1498 76.6717 36.2174C78.7392 38.3319 78.7392 41.7152 76.6717 43.7827Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M29.3149 32.8813C27.3656 32.8813 25.7707 31.2864 25.7486 29.3149C25.7486 27.3656 27.3435 25.7708 29.3149 25.7486C31.2642 25.7486 32.8591 27.3435 32.8813 29.3149C32.8591 31.2864 31.2642 32.8813 29.3149 32.8813Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M50.6853 54.2516C48.736 54.2516 47.1411 52.6568 47.119 50.6853C47.119 48.736 48.7138 47.1411 50.6853 47.119C52.6346 47.119 54.2295 48.7138 54.2516 50.6853C54.2295 52.6568 52.6346 54.2516 50.6853 54.2516Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M16.7441 22.0936C13.8202 22.0936 11.4279 19.7013 11.3946 16.7441C11.3946 13.8202 13.787 11.4279 16.7441 11.3946C19.6681 11.3946 22.0604 13.787 22.0936 16.7441C22.0604 19.7013 19.6681 22.0936 16.7441 22.0936Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M63.2561 68.6056C60.3321 68.6056 57.9398 66.2133 57.9066 63.2561C57.9066 60.3321 60.2989 57.9398 63.2561 57.9066C66.18 57.9066 68.5724 60.2989 68.6056 63.2561C68.5724 66.2133 66.1801 68.6056 63.2561 68.6056Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M32.8813 50.6853C32.8813 52.6346 31.2864 54.2295 29.3149 54.2516C27.3656 54.2516 25.7708 52.6568 25.7486 50.6853C25.7486 48.736 27.3435 47.1411 29.3149 47.119C31.2864 47.1411 32.8813 48.736 32.8813 50.6853Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M54.2516 29.3149C54.2516 31.2642 52.6568 32.8591 50.6853 32.8813C48.736 32.8813 47.1411 31.2864 47.119 29.3149C47.119 27.3656 48.7138 25.7708 50.6853 25.7486C52.6568 25.7708 54.2516 27.3656 54.2516 29.3149Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M22.0936 63.2561C22.0936 66.1801 19.7013 68.5724 16.7441 68.6056C13.8202 68.6056 11.4279 66.2133 11.3946 63.2561C11.3946 60.3322 13.787 57.9398 16.7441 57.9066C19.7013 57.9398 22.0936 60.3322 22.0936 63.2561Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M68.6056 16.7441C68.6056 19.6681 66.2133 22.0604 63.2561 22.0937C60.3321 22.0937 57.9398 19.7013 57.9066 16.7442C57.9066 13.8202 60.2989 11.4279 63.2561 11.3946C66.2133 11.4279 68.6056 13.8202 68.6056 16.7441Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
</svg>
diff --git a/packages/website/ts/icons/illustrations/secureTrading.svg b/packages/website/ts/icons/illustrations/secureTrading.svg
index 21912961d..109ddbb5b 100755
--- a/packages/website/ts/icons/illustrations/secureTrading.svg
+++ b/packages/website/ts/icons/illustrations/secureTrading.svg
@@ -1,15 +1,15 @@
-<svg width="91" height="90" viewBox="0 0 91 90" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M2 45C2 68.7579 21.2421 88 45 88C68.7579 88 88 68.7579 88 45C88 21.6448 69.3906 2.63278 46.1793 2.02876C45.7478 2.02876 45.3452 2 44.9137 2C21.2134 2.02876 2 21.2709 2 45Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10" stroke-linejoin="round"/>
-<path d="M15 15H75V75H62.8125H26.25H15V15Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M68.2435 21.7253H21.7253V68.2436H30.4475H58.7945H68.2435V21.7253Z" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M14.6464 44.9844H21.7253" stroke="#00AE99" stroke-width="3"/>
-<path d="M14.6464 34.8718H21.7253" stroke="#00AE99" stroke-width="3"/>
-<path d="M14.6464 55.0971H21.7253" stroke="#00AE99" stroke-width="3"/>
-<circle cx="44.9844" cy="44.9844" r="14.1577" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
-<path d="M44.9844 30.8267V38.9168" stroke="#00AE99" stroke-width="3"/>
-<path d="M32.1647 38.9766L39.4902 42.4097" stroke="#00AE99" stroke-width="3"/>
-<path d="M35.2801 55.2932L40.8255 49.4026" stroke="#00AE99" stroke-width="3"/>
-<path d="M54.7349 55.2497L49.1632 49.3839" stroke="#00AE99" stroke-width="3"/>
-<path d="M57.8132 38.996L50.4825 42.4181" stroke="#00AE99" stroke-width="3"/>
-<ellipse cx="44.9844" cy="44.9844" rx="5.05633" ry="5.05633" stroke="#00AE99" stroke-width="3" stroke-miterlimit="10"/>
+<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1.77759 39.9988C1.77759 61.1163 18.8812 78.2199 39.9987 78.2199C61.1161 78.2199 78.2198 61.1163 78.2198 39.9988C78.2198 19.2392 61.6786 2.34016 41.0469 1.80328C40.6634 1.80328 40.3055 1.77771 39.922 1.77771C18.8556 1.80328 1.77759 18.9069 1.77759 39.9988Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10" stroke-linejoin="round"/>
+<path d="M13.3328 13.3329H66.6645V66.6646H55.8315H23.3325H13.3328V13.3329Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M60.659 19.3108H19.3107V60.6591H27.0635H52.2601H60.659V19.3108Z" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M13.0186 39.985H19.3107" stroke="#00AE99" stroke-width="2"/>
+<path d="M13.0186 30.9962H19.3107" stroke="#00AE99" stroke-width="2"/>
+<path d="M13.0186 48.9738H19.3107" stroke="#00AE99" stroke-width="2"/>
+<circle cx="39.9849" cy="39.985" r="12.5843" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
+<path d="M39.9849 27.4008V34.5918" stroke="#00AE99" stroke-width="2"/>
+<path d="M28.5898 34.6449L35.1013 37.6964" stroke="#00AE99" stroke-width="2"/>
+<path d="M31.359 49.1481L36.2881 43.9121" stroke="#00AE99" stroke-width="2"/>
+<path d="M48.6516 49.1094L43.6992 43.8955" stroke="#00AE99" stroke-width="2"/>
+<path d="M51.3879 34.6621L44.8719 37.7039" stroke="#00AE99" stroke-width="2"/>
+<circle cx="39.9849" cy="39.985" r="4.49438" stroke="#00AE99" stroke-width="2" stroke-miterlimit="10"/>
</svg>
diff --git a/packages/website/ts/pages/why.tsx b/packages/website/ts/pages/why.tsx
index a0ed5f95a..48888d10a 100644
--- a/packages/website/ts/pages/why.tsx
+++ b/packages/website/ts/pages/why.tsx
@@ -102,7 +102,7 @@ export class NextWhy extends React.Component {
<DocumentTitle title="Features & Benefits - 0x" />
<Hero
title="The exchange layer for the crypto economy"
- description="The world's assets are becoming tokenized on public blockchains. 0x Protocol is free, open-source infrastracture that developers and businesses utilize to build products that enable the purchasing and trading of crypto tokens."
+ description="The world's assets are becoming tokenized on public blockchains. 0x Protocol is free, open-source infrastructure that developers and businesses utilize to build products that enable the purchasing and trading of crypto tokens."
actions={buildAction}
/>
@@ -110,7 +110,7 @@ export class NextWhy extends React.Component {
<Definition
title="Support for all Ethereum Standards"
titleSize="small"
- description="0x Protocol facitilites the decentralized exchange of a growing number of Ethereum-based tokens, including all ERC-20 and ERC-721 assets."
+ description="0x Protocol facilitates the decentralized exchange of a growing number of Ethereum-based tokens, including all ERC-20 and ERC-721 assets."
icon="supportForAllEthereumStandards"
iconSize="large"
isInline={true}
diff --git a/yarn.lock b/yarn.lock
index 1b51eff11..3bc39a830 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13495,6 +13495,15 @@ react-dom@^16.3.2:
object-assign "^4.1.1"
prop-types "^15.6.0"
+react-dom@^16.4.2:
+ version "16.7.0"
+ resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8"
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.12.0"
+
react-dom@^16.5.2:
version "16.5.2"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7"
@@ -13821,6 +13830,15 @@ react@^16.3.2:
object-assign "^4.1.1"
prop-types "^15.6.0"
+react@^16.4.2:
+ version "16.7.0"
+ resolved "https://registry.npmjs.org/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.12.0"
+
react@^16.5.2:
version "16.5.2"
resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42"
@@ -14709,6 +14727,13 @@ schedule@^0.5.0:
dependencies:
object-assign "^4.1.1"
+scheduler@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b"
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
schema-utils@^0.4.4:
version "0.4.7"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"