aboutsummaryrefslogtreecommitdiffstats
path: root/packages/metacoin
diff options
context:
space:
mode:
Diffstat (limited to 'packages/metacoin')
-rw-r--r--packages/metacoin/README.md97
-rw-r--r--packages/metacoin/compiler.json15
-rw-r--r--packages/metacoin/contracts/Metacoin.sol40
-rw-r--r--packages/metacoin/coverage/.gitkeep0
-rw-r--r--packages/metacoin/package.json65
-rw-r--r--packages/metacoin/src/global.d.ts4
-rw-r--r--packages/metacoin/test/global_hooks.ts15
-rw-r--r--packages/metacoin/test/metacoin_test.ts120
-rw-r--r--packages/metacoin/test/utils/chai_setup.ts13
-rw-r--r--packages/metacoin/test/utils/config.ts12
-rw-r--r--packages/metacoin/test/utils/coverage.ts21
-rw-r--r--packages/metacoin/test/utils/profiler.ts27
-rw-r--r--packages/metacoin/test/utils/web3_wrapper.ts76
-rw-r--r--packages/metacoin/tsconfig.json16
-rw-r--r--packages/metacoin/tslint.json3
15 files changed, 0 insertions, 524 deletions
diff --git a/packages/metacoin/README.md b/packages/metacoin/README.md
deleted file mode 100644
index 6f35dfc25..000000000
--- a/packages/metacoin/README.md
+++ /dev/null
@@ -1,97 +0,0 @@
-## @0x/metacoin
-
-This is an example project that demonstrates how the many Ethereum dev tools developed by 0x can be used in any Solidity/TS project.
-It supports:
-
-- Compiling & testing smart contracts
-- Generating typed contract wrappers
-- Solidity coverage
-- Solidity gas profiling
-- Running tests against Ganache
-- Running tests against our fork of Geth (it supports snapshotting & time travel)
-
-## Contributing
-
-We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
-
-Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
-
-### Install dependencies
-
-If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
-
-```bash
-yarn config set workspaces-experimental true
-```
-
-Then install dependencies
-
-```bash
-yarn install
-```
-
-### Build
-
-To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
-
-```bash
-PKG=@0x/metacoin yarn build
-```
-
-Or continuously rebuild on change:
-
-```bash
-PKG=@0x/metacoin yarn watch
-```
-
-### Clean
-
-```bash
-yarn clean
-```
-
-### Lint
-
-```bash
-yarn lint
-```
-
-### Test providers
-
-By default tests run against an in-process Ganache instance. If you want to use Geth you'll need to [start a Geth dev node](https://github.com/0xProject/0x-monorepo/blob/v2-prototype/packages/devnet/README.md) first.
-
-```bash
-cd ../devnet
-docker build -t 0x-devnet .
-docker run -it --rm -p 8501:8501 0x-devnet
-```
-
-This Geth version supports snapshots and time travel. Then - run your tests against it.
-
-```
-TEST_PROVIDER=geth yarn test
-```
-
-### Coverage
-
-```bash
-yarn test:coverage
-yarn coverage:report:html
-```
-
-### Profiling
-
-Please note that traces emitted by ganache have incorrect gas costs so we recommend using Geth for profiling.
-
-```bash
-TEST_PROVIDER=geth yarn test:profile
-```
-
-You'll see a warning that you need to explicitly enable and disable the profiler before and after the block of code you want to profile.
-
-```typescript
-import { profiler } from './utils/profiler';
-profiler.start();
-// Some solidity stuff
-profiler.stop();
-```
diff --git a/packages/metacoin/compiler.json b/packages/metacoin/compiler.json
deleted file mode 100644
index f5817e0c8..000000000
--- a/packages/metacoin/compiler.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "compilerSettings": {
- "outputSelection": {
- "*": {
- "*": [
- "abi",
- "evm.bytecode.object",
- "evm.bytecode.sourceMap",
- "evm.deployedBytecode.object",
- "evm.deployedBytecode.sourceMap"
- ]
- }
- }
- }
-}
diff --git a/packages/metacoin/contracts/Metacoin.sol b/packages/metacoin/contracts/Metacoin.sol
deleted file mode 100644
index dc67e6242..000000000
--- a/packages/metacoin/contracts/Metacoin.sol
+++ /dev/null
@@ -1,40 +0,0 @@
-pragma solidity ^0.4.24;
-pragma experimental ABIEncoderV2;
-
-contract Metacoin {
- mapping (address => uint) public balances;
-
- event Transfer(address indexed _from, address indexed _to, uint256 _value);
-
- struct TransferData {
- address to;
- uint256 amount;
- }
-
- struct NestedTransferData {
- TransferData transferData;
- uint32 callback;
- }
-
- constructor () public {
- balances[msg.sender] = 10000;
- }
-
- function transfer(TransferData transferData) public returns (bool success) {
- if (balances[msg.sender] < transferData.amount) return false;
- balances[msg.sender] -= transferData.amount;
- balances[transferData.to] += transferData.amount;
- emit Transfer(msg.sender, transferData.to, transferData.amount);
- return true;
- }
-
- function transfer(TransferData transferData, uint32 callback) public returns (int) {
- transfer(transferData);
- return callback;
- }
-
- function transfer(NestedTransferData nestedTransferData) public returns (int) {
- return transfer(nestedTransferData.transferData, nestedTransferData.callback);
- }
-
-}
diff --git a/packages/metacoin/coverage/.gitkeep b/packages/metacoin/coverage/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/metacoin/coverage/.gitkeep
+++ /dev/null
diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json
deleted file mode 100644
index 3afe8eb8c..000000000
--- a/packages/metacoin/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "@0x/metacoin",
- "version": "0.0.39",
- "engines": {
- "node": ">=6.12"
- },
- "private": true,
- "description": "Example solidity project using 0x dev tools",
- "scripts": {
- "lint": "tslint --format stylish --project . --exclude **/src/contract_wrappers/**/*",
- "build": "yarn pre_build && tsc -b",
- "build:ci": "yarn build",
- "pre_build": "run-s compile generate_contract_wrappers copy_artifacts",
- "clean": "shx rm -rf lib artifacts src/contract_wrappers",
- "copy_artifacts": "copyfiles './artifacts/**/*' './contracts/**/*' ./lib",
- "test": "yarn run_mocha",
- "rebuild_and_test": "run-s build test",
- "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov",
- "test:profile": "SOLIDITY_PROFILER=true run-s build run_mocha profiler:report:html",
- "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js lib/test/global_hooks.js --bail --exit --timeout 10000",
- "generate_contract_wrappers": "abi-gen --abis 'artifacts/Metacoin.json' --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output src/contract_wrappers --backend ethers",
- "coverage:report:text": "istanbul report text",
- "coverage:report:html": "istanbul report html && open coverage/index.html",
- "profiler:report:html": "istanbul report html && open coverage/index.html",
- "coverage:report:lcov": "istanbul report lcov",
- "test:circleci": "yarn test:coverage",
- "compile": "sol-compiler",
- "watch": "sol-compiler -w"
- },
- "author": "",
- "license": "Apache-2.0",
- "dependencies": {
- "@0x/abi-gen": "^2.0.2",
- "@0x/abi-gen-templates": "^2.0.0",
- "@0x/base-contract": "^4.0.2",
- "@0x/sol-coverage": "^2.0.2",
- "@0x/sol-profiler": "^2.0.3",
- "@0x/sol-trace": "^2.0.3",
- "@0x/subproviders": "^3.0.2",
- "@0x/tslint-config": "^3.0.0",
- "@0x/types": "^2.0.2",
- "@0x/typescript-typings": "^4.0.0",
- "@0x/utils": "^4.0.3",
- "@0x/web3-wrapper": "^4.0.2",
- "@types/mocha": "^2.2.42",
- "copyfiles": "^2.0.0",
- "ethereum-types": "^2.0.0",
- "ethers": "~4.0.4",
- "lodash": "^4.17.11",
- "run-s": "^0.0.0"
- },
- "devDependencies": {
- "@0x/dev-utils": "^2.0.2",
- "@0x/sol-compiler": "^3.0.2",
- "chai": "^4.0.1",
- "chai-as-promised": "^7.1.0",
- "chai-bignumber": "^3.0.0",
- "dirty-chai": "^2.0.1",
- "make-promises-safe": "^1.1.0",
- "npm-run-all": "^4.1.2",
- "shx": "^0.2.2",
- "tslint": "5.11.0",
- "typescript": "3.0.1"
- }
-}
diff --git a/packages/metacoin/src/global.d.ts b/packages/metacoin/src/global.d.ts
deleted file mode 100644
index 783b92913..000000000
--- a/packages/metacoin/src/global.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-declare module '*.json' {
- const value: any;
- export default value;
-}
diff --git a/packages/metacoin/test/global_hooks.ts b/packages/metacoin/test/global_hooks.ts
deleted file mode 100644
index 437061b46..000000000
--- a/packages/metacoin/test/global_hooks.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { env, EnvVars } from '@0x/dev-utils';
-
-import { coverage } from './utils/coverage';
-import { profiler } from './utils/profiler';
-
-after('generate coverage || profiler report', async () => {
- if (env.parseBoolean(EnvVars.SolidityCoverage)) {
- const coverageSubprovider = coverage.getCoverageSubproviderSingleton();
- await coverageSubprovider.writeCoverageAsync();
- }
- if (env.parseBoolean(EnvVars.SolidityProfiler)) {
- const profilerSubprovider = profiler.getProfilerSubproviderSingleton();
- await profilerSubprovider.writeProfilerOutputAsync();
- }
-});
diff --git a/packages/metacoin/test/metacoin_test.ts b/packages/metacoin/test/metacoin_test.ts
deleted file mode 100644
index a8ba85814..000000000
--- a/packages/metacoin/test/metacoin_test.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-import { BlockchainLifecycle, devConstants } from '@0x/dev-utils';
-import { BigNumber } from '@0x/utils';
-import * as chai from 'chai';
-import { ContractArtifact, LogWithDecodedArgs } from 'ethereum-types';
-
-import * as MetacoinArtifact from '../artifacts/Metacoin.json';
-import { MetacoinContract, MetacoinTransferEventArgs } from '../src/contract_wrappers/metacoin';
-
-import { chaiSetup } from './utils/chai_setup';
-import { config } from './utils/config';
-// Comment out the next line enable profiling
-// import { profiler } from './utils/profiler';
-import { provider, web3Wrapper } from './utils/web3_wrapper';
-
-const artifact: ContractArtifact = MetacoinArtifact as any;
-
-chaiSetup.configure();
-const { expect } = chai;
-const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
-// tslint:disable:no-unnecessary-type-assertion
-describe('Metacoin', () => {
- let metacoin: MetacoinContract;
- const ownerAddress = devConstants.TESTRPC_FIRST_ADDRESS;
- const INITIAL_BALANCE = new BigNumber(10000);
- before(async () => {
- metacoin = await MetacoinContract.deployFrom0xArtifactAsync(artifact, provider, config.txDefaults);
- web3Wrapper.abiDecoder.addABI(metacoin.abi);
- });
- beforeEach(async () => {
- await blockchainLifecycle.startAsync();
- });
- afterEach(async () => {
- await blockchainLifecycle.revertAsync();
- });
- describe('#constructor', () => {
- it(`should initialy give ${INITIAL_BALANCE} tokens to the creator`, async () => {
- const balance = await metacoin.balances.callAsync(ownerAddress);
- expect(balance).to.be.bignumber.equal(INITIAL_BALANCE);
- });
- });
- describe('#transfer', () => {
- it(`should successfully transfer tokens (via transfer1)`, async () => {
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
- const amount = INITIAL_BALANCE.div(2);
- const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(oldBalance).to.be.bignumber.equal(0);
- // profiler.start();
- const txHash = await metacoin.transfer1.sendTransactionAsync(
- {
- to: ZERO_ADDRESS,
- amount,
- },
- { from: devConstants.TESTRPC_FIRST_ADDRESS },
- );
- // profiler.stop();
- const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
- const transferLogs = txReceipt.logs[0] as LogWithDecodedArgs<MetacoinTransferEventArgs>;
- expect(transferLogs.args).to.be.deep.equal({
- _to: ZERO_ADDRESS,
- _from: devConstants.TESTRPC_FIRST_ADDRESS,
- _value: amount,
- });
- const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(newBalance).to.be.bignumber.equal(amount);
- });
-
- it(`should successfully transfer tokens (via transfer2)`, async () => {
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
- const amount = INITIAL_BALANCE.div(2);
- const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(oldBalance).to.be.bignumber.equal(0);
- const callback = 59;
- const txHash = await metacoin.transfer2.sendTransactionAsync(
- {
- to: ZERO_ADDRESS,
- amount,
- },
- callback,
- { from: devConstants.TESTRPC_FIRST_ADDRESS },
- );
- const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
- const transferLogs = txReceipt.logs[0] as LogWithDecodedArgs<MetacoinTransferEventArgs>;
- expect(transferLogs.args).to.be.deep.equal({
- _to: ZERO_ADDRESS,
- _from: devConstants.TESTRPC_FIRST_ADDRESS,
- _value: amount,
- });
- const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(newBalance).to.be.bignumber.equal(amount);
- });
-
- it(`should successfully transfer tokens (via transfer3)`, async () => {
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
- const amount = INITIAL_BALANCE.div(2);
- const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(oldBalance).to.be.bignumber.equal(0);
- const callback = 59;
- const txHash = await metacoin.transfer3.sendTransactionAsync(
- {
- transferData: {
- to: ZERO_ADDRESS,
- amount,
- },
- callback,
- },
- { from: devConstants.TESTRPC_FIRST_ADDRESS },
- );
- const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
- const transferLogs = txReceipt.logs[0] as LogWithDecodedArgs<MetacoinTransferEventArgs>;
- expect(transferLogs.args).to.be.deep.equal({
- _to: ZERO_ADDRESS,
- _from: devConstants.TESTRPC_FIRST_ADDRESS,
- _value: amount,
- });
- const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS);
- expect(newBalance).to.be.bignumber.equal(amount);
- });
- });
-});
-// tslint:enable:no-unnecessary-type-assertion
diff --git a/packages/metacoin/test/utils/chai_setup.ts b/packages/metacoin/test/utils/chai_setup.ts
deleted file mode 100644
index 1a8733093..000000000
--- a/packages/metacoin/test/utils/chai_setup.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import * as chai from 'chai';
-import chaiAsPromised = require('chai-as-promised');
-import ChaiBigNumber = require('chai-bignumber');
-import * as dirtyChai from 'dirty-chai';
-
-export const chaiSetup = {
- configure(): void {
- chai.config.includeStack = true;
- chai.use(ChaiBigNumber());
- chai.use(dirtyChai);
- chai.use(chaiAsPromised);
- },
-};
diff --git a/packages/metacoin/test/utils/config.ts b/packages/metacoin/test/utils/config.ts
deleted file mode 100644
index 05f524d52..000000000
--- a/packages/metacoin/test/utils/config.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { devConstants } from '@0x/dev-utils';
-
-export const config = {
- networkId: 50,
- artifactsDir: 'artifacts',
- contractsDir: 'contracts',
- ganacheLogFile: 'ganache.log',
- txDefaults: {
- from: devConstants.TESTRPC_FIRST_ADDRESS,
- },
- mnemonic: 'concert load couple harbor equip island argue ramp clarify fence smart topic',
-};
diff --git a/packages/metacoin/test/utils/coverage.ts b/packages/metacoin/test/utils/coverage.ts
deleted file mode 100644
index 1a06d8c3c..000000000
--- a/packages/metacoin/test/utils/coverage.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { devConstants } from '@0x/dev-utils';
-import { CoverageSubprovider, SolCompilerArtifactAdapter } from '@0x/sol-coverage';
-import * as _ from 'lodash';
-
-import { config } from './config';
-
-let coverageSubprovider: CoverageSubprovider;
-
-export const coverage = {
- getCoverageSubproviderSingleton(): CoverageSubprovider {
- if (_.isUndefined(coverageSubprovider)) {
- coverageSubprovider = coverage._getCoverageSubprovider();
- }
- return coverageSubprovider;
- },
- _getCoverageSubprovider(): CoverageSubprovider {
- const defaultFromAddress = devConstants.TESTRPC_FIRST_ADDRESS;
- const zeroExArtifactsAdapter = new SolCompilerArtifactAdapter(config.artifactsDir, config.contractsDir);
- return new CoverageSubprovider(zeroExArtifactsAdapter, defaultFromAddress);
- },
-};
diff --git a/packages/metacoin/test/utils/profiler.ts b/packages/metacoin/test/utils/profiler.ts
deleted file mode 100644
index 6e6fc309f..000000000
--- a/packages/metacoin/test/utils/profiler.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { devConstants } from '@0x/dev-utils';
-import { ProfilerSubprovider, SolCompilerArtifactAdapter } from '@0x/sol-profiler';
-import * as _ from 'lodash';
-
-import { config } from './config';
-
-let profilerSubprovider: ProfilerSubprovider;
-
-export const profiler = {
- start(): void {
- profiler.getProfilerSubproviderSingleton().start();
- },
- stop(): void {
- profiler.getProfilerSubproviderSingleton().stop();
- },
- getProfilerSubproviderSingleton(): ProfilerSubprovider {
- if (_.isUndefined(profilerSubprovider)) {
- profilerSubprovider = profiler._getProfilerSubprovider();
- }
- return profilerSubprovider;
- },
- _getProfilerSubprovider(): ProfilerSubprovider {
- const defaultFromAddress = devConstants.TESTRPC_FIRST_ADDRESS;
- const zeroExArtifactsAdapter = new SolCompilerArtifactAdapter(config.artifactsDir, config.contractsDir);
- return new ProfilerSubprovider(zeroExArtifactsAdapter, defaultFromAddress);
- },
-};
diff --git a/packages/metacoin/test/utils/web3_wrapper.ts b/packages/metacoin/test/utils/web3_wrapper.ts
deleted file mode 100644
index 258cf560f..000000000
--- a/packages/metacoin/test/utils/web3_wrapper.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { env, EnvVars } from '@0x/dev-utils';
-import { GanacheSubprovider, prependSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders';
-import { errorUtils, logUtils } from '@0x/utils';
-import { Web3Wrapper } from '@0x/web3-wrapper';
-import * as fs from 'fs';
-
-import { config } from './config';
-import { coverage } from './coverage';
-import { profiler } from './profiler';
-
-enum ProviderType {
- Ganache = 'ganache',
- Geth = 'geth',
-}
-
-let testProvider: ProviderType;
-switch (process.env.TEST_PROVIDER) {
- case undefined:
- testProvider = ProviderType.Ganache;
- break;
- case 'ganache':
- testProvider = ProviderType.Ganache;
- break;
- case 'geth':
- testProvider = ProviderType.Geth;
- break;
- default:
- throw errorUtils.spawnSwitchErr('TEST_PROVIDER', process.env.TEST_PROVIDER);
-}
-
-export const provider = new Web3ProviderEngine();
-if (testProvider === ProviderType.Ganache) {
- provider.addProvider(
- new GanacheSubprovider({
- logger: {
- log: (arg: any) => {
- fs.appendFileSync(config.ganacheLogFile, `${arg}\n`);
- },
- },
- verbose: env.parseBoolean(EnvVars.SolidityCoverage),
- networkId: config.networkId,
- mnemonic: config.mnemonic,
- }),
- );
-} else {
- provider.addProvider(new RPCSubprovider('http://localhost:8501'));
-}
-provider.start();
-
-const isCoverageEnabled = env.parseBoolean(EnvVars.SolidityCoverage);
-const isProfilerEnabled = env.parseBoolean(EnvVars.SolidityProfiler);
-if (isCoverageEnabled && isProfilerEnabled) {
- throw new Error(
- `Unfortunately for now you can't enable both coverage and profiler at the same time. They both use coverage.json file and there is no way to configure that.`,
- );
-}
-if (isCoverageEnabled) {
- const coverageSubprovider = coverage.getCoverageSubproviderSingleton();
- prependSubprovider(provider, coverageSubprovider);
-}
-if (isProfilerEnabled) {
- if (testProvider === ProviderType.Ganache) {
- logUtils.warn(
- "Gas costs in Ganache traces are incorrect and we don't recommend using it for profiling. Please switch to Geth. Check README for more details",
- );
- process.exit(1);
- }
- const profilerSubprovider = profiler.getProfilerSubproviderSingleton();
- logUtils.log(
- "By default profilerSubprovider is stopped so that you don't get noise from setup code. Don't forget to start it before the code you want to profile and stop it afterwards",
- );
- profilerSubprovider.stop();
- prependSubprovider(provider, profilerSubprovider);
-}
-
-export const web3Wrapper = new Web3Wrapper(provider);
diff --git a/packages/metacoin/tsconfig.json b/packages/metacoin/tsconfig.json
deleted file mode 100644
index 163465cf5..000000000
--- a/packages/metacoin/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "typeRoots": [
- "comment: for building within 0x-monorepo:",
- "../../node_modules/@0x/typescript-typings/types",
- "../../node_modules/@types",
- "comment: for building in an isolated environment:",
- "node_modules/@0x/typescript-typings/types",
- "node_modules/@types"
- ]
- },
- "include": ["src/**/*", "test/**/*"]
-}
diff --git a/packages/metacoin/tslint.json b/packages/metacoin/tslint.json
deleted file mode 100644
index dd9053357..000000000
--- a/packages/metacoin/tslint.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": ["@0x/tslint-config"]
-}