diff --git a/.gitignore b/.gitignore
index bdfc5ff..b249c0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
build/*
+keystore
+pass
# Created by https://www.gitignore.io/api/node
diff --git a/abis/Distribution.json b/abis/Distribution.json
new file mode 100644
index 0000000..9f8680d
--- /dev/null
+++ b/abis/Distribution.json
@@ -0,0 +1,337 @@
+[
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_newController",
+ "type": "address"
+ }
+ ],
+ "name": "changeController",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "finalizedBlock",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalReserve",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupplyCap",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "reserveWallet",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "controller",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "token",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "name": "_token",
+ "type": "address"
+ },
+ {
+ "name": "_reserveWallet",
+ "type": "address"
+ },
+ {
+ "name": "_totalSupplyCap",
+ "type": "uint256"
+ },
+ {
+ "name": "_totalReserve",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "_token",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "_controller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "ClaimedTokens",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "_amount",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "name": "_paidTxID",
+ "type": "bytes32"
+ }
+ ],
+ "name": "Purchase",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [],
+ "name": "Finalized",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "distributionCap",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "finalize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_th",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ },
+ {
+ "name": "_paidTxID",
+ "type": "bytes32"
+ }
+ ],
+ "name": "proxyMintTokens",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "onTransfer",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "address"
+ },
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "onApprove",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_token",
+ "type": "address"
+ }
+ ],
+ "name": "claimTokens",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "totalTransactionCount",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "getTransactionAtIndex",
+ "outputs": [
+ {
+ "name": "_amount",
+ "type": "uint256"
+ },
+ {
+ "name": "_paidTxID",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
\ No newline at end of file
diff --git a/abis/SEN.json b/abis/SEN.json
new file mode 100644
index 0000000..12d38dd
--- /dev/null
+++ b/abis/SEN.json
@@ -0,0 +1,509 @@
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "creationBlock",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "burner",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_newController",
+ "type": "address"
+ }
+ ],
+ "name": "changeController",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "finalize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "balanceOfAt",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "version",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "name": "balance",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "parentToken",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_newBurner",
+ "type": "address"
+ }
+ ],
+ "name": "changeBurner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "totalSupplyAt",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "finalized",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "parentSnapShotBlock",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ },
+ {
+ "name": "_extraData",
+ "type": "bytes"
+ }
+ ],
+ "name": "approveAndCall",
+ "outputs": [
+ {
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "destroyTokens",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "name": "remaining",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_token",
+ "type": "address"
+ }
+ ],
+ "name": "claimTokens",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "mintTokens",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "controller",
+ "outputs": [
+ {
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "_token",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "_controller",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "ClaimedTokens",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "_amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ }
+]
\ No newline at end of file
diff --git a/contracts/MiniMeToken.sol b/contracts/MiniMeToken.sol
index de01694..4f0f984 100644
--- a/contracts/MiniMeToken.sol
+++ b/contracts/MiniMeToken.sol
@@ -2,6 +2,7 @@ pragma solidity ^0.4.18;
/*
Copyright 2017, Anton Egorov (Mothership Foundation)
+ Copyright 2017, An Hoang Phan Ngo (Mothership Foundation)
Copyright 2017, Joel Mislav Kunst (Mothership Fundation)
Copyright 2016, Jordi Baylina
diff --git a/etherscan/Distribution.sol b/etherscan/Distribution.sol
new file mode 100644
index 0000000..adc6043
--- /dev/null
+++ b/etherscan/Distribution.sol
@@ -0,0 +1,407 @@
+pragma solidity ^0.4.18;
+
+/*
+ Copyright 2017, Anton Egorov (Mothership Foundation)
+ Copyright 2017, An Hoang Phan Ngo (Mothership Foundation)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+// File: contracts/interface/Controlled.sol
+
+contract Controlled {
+ /// @notice The address of the controller is the only address that can call
+ /// a function with this modifier
+ modifier onlyController {
+ require(msg.sender == controller);
+ _;
+ }
+
+ address public controller;
+
+ function Controlled() public { controller = msg.sender; }
+
+ /// @notice Changes the controller of the contract
+ /// @param _newController The new controller of the contract
+ function changeController(address _newController) public onlyController {
+ controller = _newController;
+ }
+}
+
+// File: contracts/interface/Burnable.sol
+
+/// @dev Burnable introduces a burner role, which could be used to destroy
+/// tokens. The burner address could be changed by himself.
+contract Burnable is Controlled {
+ address public burner;
+
+ /// @notice The function with this modifier could be called by a controller
+ /// as well as by a burner. But burner could use the onlt his/her address as
+ /// a target.
+ modifier onlyControllerOrBurner(address target) {
+ assert(msg.sender == controller || (msg.sender == burner && msg.sender == target));
+ _;
+ }
+
+ modifier onlyBurner {
+ assert(msg.sender == burner);
+ _;
+ }
+
+ /// Contract creator become a burner by default
+ function Burnable() public { burner = msg.sender;}
+
+ /// @notice Change a burner address
+ /// @param _newBurner The new burner address
+ function changeBurner(address _newBurner) public onlyBurner {
+ burner = _newBurner;
+ }
+}
+
+// File: contracts/interface/ERC20Token.sol
+
+// @dev Abstract contract for the full ERC 20 Token standard
+// https://github.com/ethereum/EIPs/issues/20
+contract ERC20Token {
+ /// total amount of tokens
+ function totalSupply() public view returns (uint256 balance);
+
+ /// @param _owner The address from which the balance will be retrieved
+ /// @return The balance
+ function balanceOf(address _owner) public view returns (uint256 balance);
+
+ /// @notice send `_value` token to `_to` from `msg.sender`
+ /// @param _to The address of the recipient
+ /// @param _value The amount of token to be transferred
+ /// @return Whether the transfer was successful or not
+ function transfer(address _to, uint256 _value) public returns (bool success);
+
+ /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
+ /// @param _from The address of the sender
+ /// @param _to The address of the recipient
+ /// @param _value The amount of token to be transferred
+ /// @return Whether the transfer was successful or not
+ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
+
+ /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @param _value The amount of tokens to be approved for transfer
+ /// @return Whether the approval was successful or not
+ function approve(address _spender, uint256 _value) public returns (bool success);
+
+ /// @param _owner The address of the account owning tokens
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @return Amount of remaining tokens allowed to spent
+ function allowance(address _owner, address _spender) public view returns (uint256 remaining);
+
+ event Transfer(address indexed _from, address indexed _to, uint256 _value);
+ event Approval(address indexed _owner, address indexed _spender, uint256 _value);
+}
+
+// File: contracts/interface/MiniMeTokenI.sol
+
+/// @dev MiniMeToken interface. Using this interface instead of whole contracts
+/// will reduce contract sise and gas cost
+contract MiniMeTokenI is ERC20Token, Burnable {
+
+ string public name; //The Token's name: e.g. DigixDAO Tokens
+ uint8 public decimals; //Number of decimals of the smallest unit
+ string public symbol; //An identifier: e.g. REP
+ string public version = "MMT_0.1"; //An arbitrary versioning scheme
+
+///////////////////
+// ERC20 Methods
+///////////////////
+
+ /// @notice `msg.sender` approves `_spender` to send `_amount` tokens on
+ /// its behalf, and then a function is triggered in the contract that is
+ /// being approved, `_spender`. This allows users to use their tokens to
+ /// interact with contracts in one function call instead of two
+ /// @param _spender The address of the contract able to transfer the tokens
+ /// @param _amount The amount of tokens to be approved for transfer
+ /// @return True if the function call was successful
+ function approveAndCall(
+ address _spender,
+ uint256 _amount,
+ bytes _extraData) public returns (bool success);
+
+////////////////
+// Query balance and totalSupply in History
+////////////////
+
+ /// @dev Queries the balance of `_owner` at a specific `_blockNumber`
+ /// @param _owner The address from which the balance will be retrieved
+ /// @param _blockNumber The block number when the balance is queried
+ /// @return The balance at `_blockNumber`
+ function balanceOfAt(
+ address _owner,
+ uint _blockNumber) public constant returns (uint);
+
+ /// @notice Total amount of tokens at a specific `_blockNumber`.
+ /// @param _blockNumber The block number when the totalSupply is queried
+ /// @return The total amount of tokens at `_blockNumber`
+ function totalSupplyAt(uint _blockNumber) public constant returns(uint);
+
+////////////////
+// Generate and destroy tokens
+////////////////
+
+ /// @notice Generates `_amount` tokens that are assigned to `_owner`
+ /// @param _owner The address that will be assigned the new tokens
+ /// @param _amount The quantity of tokens generated
+ /// @return True if the tokens are generated correctly
+ function mintTokens(address _owner, uint _amount) public returns (bool);
+
+
+ /// @notice Burns `_amount` tokens from `_owner`
+ /// @param _owner The address that will lose the tokens
+ /// @param _amount The quantity of tokens to burn
+ /// @return True if the tokens are burned correctly
+ function destroyTokens(address _owner, uint _amount) public returns (bool);
+
+/////////////////
+// Finalize
+////////////////
+ function finalize() public;
+
+//////////
+// Safety Methods
+//////////
+
+ /// @notice This method can be used by the controller to extract mistakenly
+ /// sent tokens to this contract.
+ /// @param _token The address of the token contract that you want to recover
+ /// set to 0 in case you want to extract ether.
+ function claimTokens(address _token) public;
+
+////////////////
+// Events
+////////////////
+
+ event ClaimedTokens(address indexed _token, address indexed _controller, uint _amount);
+}
+
+// File: contracts/interface/TokenController.sol
+
+/// @dev The token controller contract must implement these functions
+contract TokenController {
+ /// @notice Called when `_owner` sends ether to the MiniMe Token contract
+ /// @param _owner The address that sent the ether to create tokens
+ /// @return True if the ether is accepted, false if it throws
+ function proxyMintTokens(
+ address _owner,
+ uint _amount,
+ bytes32 _paidTxID) public returns(bool);
+
+ /// @notice Notifies the controller about a token transfer allowing the
+ /// controller to react if desired
+ /// @param _from The origin of the transfer
+ /// @param _to The destination of the transfer
+ /// @param _amount The amount of the transfer
+ /// @return False if the controller does not authorize the transfer
+ function onTransfer(address _from, address _to, uint _amount) public returns(bool);
+
+ /// @notice Notifies the controller about an approval allowing the
+ /// controller to react if desired
+ /// @param _owner The address that calls `approve()`
+ /// @param _spender The spender in the `approve()` call
+ /// @param _amount The amount in the `approve()` call
+ /// @return False if the controller does not authorize the approval
+ function onApprove(address _owner, address _spender, uint _amount) public
+ returns(bool);
+}
+
+// File: contracts/Distribution.sol
+
+contract Distribution is Controlled, TokenController {
+
+ /// Record tx details for each minting operation
+ struct Transaction {
+ uint256 amount;
+ bytes32 paidTxID;
+ }
+
+ MiniMeTokenI public token;
+
+ address public reserveWallet; // Team's wallet address
+
+ uint256 public totalSupplyCap; // Total Token supply to be generated
+ uint256 public totalReserve; // A number of tokens to reserve for the team/bonuses
+
+ uint256 public finalizedBlock;
+
+ /// Record all transaction details for all minting operations
+ mapping (address => Transaction[]) allTransactions;
+
+ /// @param _token Address of the SEN token contract
+ /// the contribution finalizes.
+ /// @param _reserveWallet Team's wallet address to distribute reserved pool
+ /// @param _totalSupplyCap Maximum amount of tokens to generate during the contribution
+ /// @param _totalReserve A number of tokens to reserve for the team/bonuses
+ function Distribution(
+ address _token,
+ address _reserveWallet,
+ uint256 _totalSupplyCap,
+ uint256 _totalReserve
+ ) public onlyController
+ {
+ // Initialize only once
+ assert(address(token) == 0x0);
+
+ token = MiniMeTokenI(_token);
+ reserveWallet = _reserveWallet;
+
+ require(_totalReserve < _totalSupplyCap);
+ totalSupplyCap = _totalSupplyCap;
+ totalReserve = _totalReserve;
+
+ assert(token.totalSupply() == 0);
+ assert(token.decimals() == 18); // Same amount of decimals as ETH
+ }
+
+ function distributionCap() public constant returns (uint256) {
+ return totalSupplyCap - totalReserve;
+ }
+
+ /// @notice This method can be called the distribution cap is reached only
+ function finalize() public onlyController {
+ assert(token.totalSupply() >= distributionCap());
+
+ // Mint reserve pool
+ doMint(reserveWallet, totalReserve);
+
+ finalizedBlock = getBlockNumber();
+ token.finalize(); // Token becomes unmintable after this
+
+ // Distribution controller becomes a Token controller
+ token.changeController(controller);
+
+ Finalized();
+ }
+
+//////////
+// TokenController functions
+//////////
+
+ function proxyMintTokens(
+ address _th,
+ uint256 _amount,
+ bytes32 _paidTxID
+ ) public onlyController returns (bool)
+ {
+ require(_th != 0x0);
+
+ require(_amount + token.totalSupply() <= distributionCap());
+
+ doMint(_th, _amount);
+ addTransaction(
+ allTransactions[_th],
+ _amount,
+ _paidTxID);
+
+ Purchase(
+ _th,
+ _amount,
+ _paidTxID);
+
+ return true;
+ }
+
+ function onTransfer(address, address, uint256) public returns (bool) {
+ return false;
+ }
+
+ function onApprove(address, address, uint256) public returns (bool) {
+ return false;
+ }
+
+ //////////
+ // Safety Methods
+ //////////
+
+ /// @notice This method can be used by the controller to extract mistakenly
+ /// sent tokens to this contract.
+ /// @param _token The address of the token contract that you want to recover
+ /// set to 0 in case you want to extract ether.
+ function claimTokens(address _token) public onlyController {
+ if (token.controller() == address(this)) {
+ token.claimTokens(_token);
+ }
+ if (_token == 0x0) {
+ controller.transfer(this.balance);
+ return;
+ }
+
+ ERC20Token otherToken = ERC20Token(_token);
+ uint256 balance = otherToken.balanceOf(this);
+ otherToken.transfer(controller, balance);
+ ClaimedTokens(_token, controller, balance);
+ }
+
+ //////////////////////////////////
+ // Minting tokens and oraclization
+ //////////////////////////////////
+
+ /// Total transaction count belong to an address
+ function totalTransactionCount(address _owner) public constant returns(uint) {
+ return allTransactions[_owner].length;
+ }
+
+ /// Query a transaction details by address and its index in transactions array
+ function getTransactionAtIndex(address _owner, uint index) public constant returns(
+ uint256 _amount,
+ bytes32 _paidTxID
+ ) {
+ _amount = allTransactions[_owner][index].amount;
+ _paidTxID = allTransactions[_owner][index].paidTxID;
+ }
+
+ /// Save transaction details belong to an address
+ /// @param transactions all transactions belong to an address
+ /// @param _amount amount of tokens issued in the transaction
+ /// @param _paidTxID blockchain tx_hash
+ function addTransaction(
+ Transaction[] storage transactions,
+ uint _amount,
+ bytes32 _paidTxID
+ ) internal
+ {
+ Transaction storage newTx = transactions[transactions.length++];
+ newTx.amount = _amount;
+ newTx.paidTxID = _paidTxID;
+ }
+
+ function doMint(address _th, uint256 _amount) internal {
+ assert(token.mintTokens(_th, _amount));
+ }
+
+//////////
+// Testing specific methods
+//////////
+
+ /// @notice This function is overridden by the test Mocks.
+ function getBlockNumber() internal constant returns (uint256) { return block.number; }
+
+
+////////////////
+// Events
+////////////////
+ event ClaimedTokens(address indexed _token, address indexed _controller, uint256 _amount);
+ event Purchase(
+ address indexed _owner,
+ uint256 _amount,
+ bytes32 _paidTxID
+ );
+ event Finalized();
+}
diff --git a/etherscan/SEN.sol b/etherscan/SEN.sol
new file mode 100644
index 0000000..84f984a
--- /dev/null
+++ b/etherscan/SEN.sol
@@ -0,0 +1,655 @@
+pragma solidity ^0.4.18;
+
+/*
+ Copyright 2017, Anton Egorov (Mothership Foundation)
+ Copyright 2017, An Hoang Phan Ngo (Mothership Foundation)
+ Copyright 2017, Joel Mislav Kunst (Mothership Fundation)
+ Copyright 2016, Jordi Baylina
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+// File: contracts/interface/ApproveAndCallFallBack.sol
+
+contract ApproveAndCallFallBack {
+ function receiveApproval(
+ address _from,
+ uint256 _amount,
+ address _token,
+ bytes _data) public;
+}
+
+// File: contracts/interface/Controlled.sol
+
+contract Controlled {
+ /// @notice The address of the controller is the only address that can call
+ /// a function with this modifier
+ modifier onlyController {
+ require(msg.sender == controller);
+ _;
+ }
+
+ address public controller;
+
+ function Controlled() public { controller = msg.sender; }
+
+ /// @notice Changes the controller of the contract
+ /// @param _newController The new controller of the contract
+ function changeController(address _newController) public onlyController {
+ controller = _newController;
+ }
+}
+
+// File: contracts/interface/Burnable.sol
+
+/// @dev Burnable introduces a burner role, which could be used to destroy
+/// tokens. The burner address could be changed by himself.
+contract Burnable is Controlled {
+ address public burner;
+
+ /// @notice The function with this modifier could be called by a controller
+ /// as well as by a burner. But burner could use the onlt his/her address as
+ /// a target.
+ modifier onlyControllerOrBurner(address target) {
+ assert(msg.sender == controller || (msg.sender == burner && msg.sender == target));
+ _;
+ }
+
+ modifier onlyBurner {
+ assert(msg.sender == burner);
+ _;
+ }
+
+ /// Contract creator become a burner by default
+ function Burnable() public { burner = msg.sender;}
+
+ /// @notice Change a burner address
+ /// @param _newBurner The new burner address
+ function changeBurner(address _newBurner) public onlyBurner {
+ burner = _newBurner;
+ }
+}
+
+// File: contracts/interface/ERC20Token.sol
+
+// @dev Abstract contract for the full ERC 20 Token standard
+// https://github.com/ethereum/EIPs/issues/20
+contract ERC20Token {
+ /// total amount of tokens
+ function totalSupply() public view returns (uint256 balance);
+
+ /// @param _owner The address from which the balance will be retrieved
+ /// @return The balance
+ function balanceOf(address _owner) public view returns (uint256 balance);
+
+ /// @notice send `_value` token to `_to` from `msg.sender`
+ /// @param _to The address of the recipient
+ /// @param _value The amount of token to be transferred
+ /// @return Whether the transfer was successful or not
+ function transfer(address _to, uint256 _value) public returns (bool success);
+
+ /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
+ /// @param _from The address of the sender
+ /// @param _to The address of the recipient
+ /// @param _value The amount of token to be transferred
+ /// @return Whether the transfer was successful or not
+ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
+
+ /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @param _value The amount of tokens to be approved for transfer
+ /// @return Whether the approval was successful or not
+ function approve(address _spender, uint256 _value) public returns (bool success);
+
+ /// @param _owner The address of the account owning tokens
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @return Amount of remaining tokens allowed to spent
+ function allowance(address _owner, address _spender) public view returns (uint256 remaining);
+
+ event Transfer(address indexed _from, address indexed _to, uint256 _value);
+ event Approval(address indexed _owner, address indexed _spender, uint256 _value);
+}
+
+// File: contracts/interface/MiniMeTokenI.sol
+
+/// @dev MiniMeToken interface. Using this interface instead of whole contracts
+/// will reduce contract sise and gas cost
+contract MiniMeTokenI is ERC20Token, Burnable {
+
+ string public name; //The Token's name: e.g. DigixDAO Tokens
+ uint8 public decimals; //Number of decimals of the smallest unit
+ string public symbol; //An identifier: e.g. REP
+ string public version = "MMT_0.1"; //An arbitrary versioning scheme
+
+///////////////////
+// ERC20 Methods
+///////////////////
+
+ /// @notice `msg.sender` approves `_spender` to send `_amount` tokens on
+ /// its behalf, and then a function is triggered in the contract that is
+ /// being approved, `_spender`. This allows users to use their tokens to
+ /// interact with contracts in one function call instead of two
+ /// @param _spender The address of the contract able to transfer the tokens
+ /// @param _amount The amount of tokens to be approved for transfer
+ /// @return True if the function call was successful
+ function approveAndCall(
+ address _spender,
+ uint256 _amount,
+ bytes _extraData) public returns (bool success);
+
+////////////////
+// Query balance and totalSupply in History
+////////////////
+
+ /// @dev Queries the balance of `_owner` at a specific `_blockNumber`
+ /// @param _owner The address from which the balance will be retrieved
+ /// @param _blockNumber The block number when the balance is queried
+ /// @return The balance at `_blockNumber`
+ function balanceOfAt(
+ address _owner,
+ uint _blockNumber) public constant returns (uint);
+
+ /// @notice Total amount of tokens at a specific `_blockNumber`.
+ /// @param _blockNumber The block number when the totalSupply is queried
+ /// @return The total amount of tokens at `_blockNumber`
+ function totalSupplyAt(uint _blockNumber) public constant returns(uint);
+
+////////////////
+// Generate and destroy tokens
+////////////////
+
+ /// @notice Generates `_amount` tokens that are assigned to `_owner`
+ /// @param _owner The address that will be assigned the new tokens
+ /// @param _amount The quantity of tokens generated
+ /// @return True if the tokens are generated correctly
+ function mintTokens(address _owner, uint _amount) public returns (bool);
+
+
+ /// @notice Burns `_amount` tokens from `_owner`
+ /// @param _owner The address that will lose the tokens
+ /// @param _amount The quantity of tokens to burn
+ /// @return True if the tokens are burned correctly
+ function destroyTokens(address _owner, uint _amount) public returns (bool);
+
+/////////////////
+// Finalize
+////////////////
+ function finalize() public;
+
+//////////
+// Safety Methods
+//////////
+
+ /// @notice This method can be used by the controller to extract mistakenly
+ /// sent tokens to this contract.
+ /// @param _token The address of the token contract that you want to recover
+ /// set to 0 in case you want to extract ether.
+ function claimTokens(address _token) public;
+
+////////////////
+// Events
+////////////////
+
+ event ClaimedTokens(address indexed _token, address indexed _controller, uint _amount);
+}
+
+// File: contracts/interface/TokenController.sol
+
+/// @dev The token controller contract must implement these functions
+contract TokenController {
+ /// @notice Called when `_owner` sends ether to the MiniMe Token contract
+ /// @param _owner The address that sent the ether to create tokens
+ /// @return True if the ether is accepted, false if it throws
+ function proxyMintTokens(
+ address _owner,
+ uint _amount,
+ bytes32 _paidTxID) public returns(bool);
+
+ /// @notice Notifies the controller about a token transfer allowing the
+ /// controller to react if desired
+ /// @param _from The origin of the transfer
+ /// @param _to The destination of the transfer
+ /// @param _amount The amount of the transfer
+ /// @return False if the controller does not authorize the transfer
+ function onTransfer(address _from, address _to, uint _amount) public returns(bool);
+
+ /// @notice Notifies the controller about an approval allowing the
+ /// controller to react if desired
+ /// @param _owner The address that calls `approve()`
+ /// @param _spender The spender in the `approve()` call
+ /// @param _amount The amount in the `approve()` call
+ /// @return False if the controller does not authorize the approval
+ function onApprove(address _owner, address _spender, uint _amount) public
+ returns(bool);
+}
+
+// File: contracts/MiniMeToken.sol
+
+/// @title MiniMeToken Contract
+/// @dev The actual token contract, the default controller is the msg.sender
+/// that deploys the contract, so usually this token will be deployed by a
+/// token controller contract, which Giveth will call a "Campaign"
+contract MiniMeToken is MiniMeTokenI {
+
+ /// @dev `Checkpoint` is the structure that attaches a block number to a
+ /// given value, the block number attached is the one that last changed the
+ /// value
+ struct Checkpoint {
+
+ // `fromBlock` is the block number that the value was generated from
+ uint128 fromBlock;
+
+ // `value` is the amount of tokens at a specific block number
+ uint128 value;
+ }
+
+ // `parentToken` is the Token address that was cloned to produce this token;
+ // it will be 0x0 for a token that was not cloned
+ MiniMeToken public parentToken;
+
+ // `parentSnapShotBlock` is the block number from the Parent Token that was
+ // used to determine the initial distribution of the Clone Token
+ uint public parentSnapShotBlock;
+
+ // `creationBlock` is the block number that the Clone Token was created
+ uint public creationBlock;
+
+ // `balances` is the map that tracks the balance of each address, in this
+ // contract when the balance changes the block number that the change
+ // occurred is also included in the map
+ mapping (address => Checkpoint[]) balances;
+
+ // `allowed` tracks any extra transfer rights as in all ERC20 tokens
+ mapping (address => mapping (address => uint256)) allowed;
+
+ // Tracks the history of the `totalSupply` of the token
+ Checkpoint[] totalSupplyHistory;
+
+
+ bool public finalized;
+
+ modifier notFinalized() {
+ require(!finalized);
+ _;
+ }
+
+////////////////
+// Constructor
+////////////////
+
+ /// @notice Constructor to create a MiniMeToken
+ /// @param _parentToken Address of the parent token, set to 0x0 if it is a
+ /// new token
+ /// @param _parentSnapShotBlock Block of the parent token that will
+ /// determine the initial distribution of the clone token, set to 0 if it
+ /// is a new token
+ /// @param _tokenName Name of the new token
+ /// @param _decimalUnits Number of decimals of the new token
+ /// @param _tokenSymbol Token Symbol for the new token
+ function MiniMeToken(
+ address _parentToken,
+ uint _parentSnapShotBlock,
+ string _tokenName,
+ uint8 _decimalUnits,
+ string _tokenSymbol
+ ) public
+ {
+ name = _tokenName; // Set the name
+ decimals = _decimalUnits; // Set the decimals
+ symbol = _tokenSymbol; // Set the symbol
+ parentToken = MiniMeToken(_parentToken);
+ parentSnapShotBlock = _parentSnapShotBlock;
+ creationBlock = block.number;
+ }
+
+///////////////////
+// ERC20 Methods
+///////////////////
+
+ /// @notice Send `_amount` tokens to `_to` from `msg.sender`
+ /// @param _to The address of the recipient
+ /// @param _amount The amount of tokens to be transferred
+ /// @return Whether the transfer was successful or not
+ function transfer(address _to, uint256 _amount) public returns (bool success) {
+ return doTransfer(msg.sender, _to, _amount);
+ }
+
+ /// @notice Send `_amount` tokens to `_to` from `_from` on the condition it
+ /// is approved by `_from`
+ /// @param _from The address holding the tokens being transferred
+ /// @param _to The address of the recipient
+ /// @param _amount The amount of tokens to be transferred
+ /// @return True if the transfer was successful
+ function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) {
+ // The standard ERC 20 transferFrom functionality
+ require(allowed[_from][msg.sender] >= _amount);
+ allowed[_from][msg.sender] -= _amount;
+
+ return doTransfer(_from, _to, _amount);
+ }
+
+ /// @dev This is the actual transfer function in the token contract, it can
+ /// only be called by other functions in this contract.
+ /// @param _from The address holding the tokens being transferred
+ /// @param _to The address of the recipient
+ /// @param _amount The amount of tokens to be transferred
+ /// @return True if the transfer was successful
+ function doTransfer(address _from, address _to, uint _amount) internal returns(bool) {
+ if (_amount == 0) {
+ return true;
+ }
+
+ require(parentSnapShotBlock < block.number);
+
+ // Do not allow transfer to 0x0 or the token contract itself
+ require((_to != 0) && (_to != address(this)));
+
+ // If the amount being transfered is more than the balance of the
+ // account the transfer returns false
+ var previousBalanceFrom = balanceOfAt(_from, block.number);
+ if (previousBalanceFrom < _amount) {
+ return false;
+ }
+
+ // Alerts the token controller of the transfer
+ // Check for transfer enable from controller
+ if (isContract(controller)) {
+ require(TokenController(controller).onTransfer(_from, _to, _amount));
+ }
+
+ // First update the balance array with the new value for the address
+ // sending the tokens
+ updateValueAtNow(balances[_from], previousBalanceFrom - _amount);
+
+ // Then update the balance array with the new value for the address
+ // receiving the tokens
+ var previousBalanceTo = balanceOfAt(_to, block.number);
+ require(previousBalanceTo + _amount >= previousBalanceTo); // Check for overflow
+ updateValueAtNow(balances[_to], previousBalanceTo + _amount);
+
+ // An event to make the transfer easy to find on the blockchain
+ Transfer(_from, _to, _amount);
+
+ return true;
+ }
+
+ /// @param _owner The address that's balance is being requested
+ /// @return The balance of `_owner` at the current block
+ function balanceOf(address _owner) public view returns (uint256 balance) {
+ return balanceOfAt(_owner, block.number);
+ }
+
+ /// @notice `msg.sender` approves `_spender` to spend `_amount` tokens on
+ /// its behalf. This is a modified version of the ERC20 approve function
+ /// to be a little bit safer
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @param _amount The amount of tokens to be approved for transfer
+ /// @return True if the approval was successful
+ function approve(address _spender, uint256 _amount) public returns (bool success) {
+
+ // To change the approve amount you first have to reduce the addresses`
+ // allowance to zero by calling `approve(_spender,0)` if it is not
+ // already 0 to mitigate the race condition described here:
+ // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+ require((_amount == 0) || (allowed[msg.sender][_spender] == 0));
+
+ // Alerts the token controller of the approve function call
+ if (isContract(controller)) {
+ require(TokenController(controller).onApprove(msg.sender, _spender, _amount));
+ }
+
+ allowed[msg.sender][_spender] = _amount;
+ Approval(msg.sender, _spender, _amount);
+ return true;
+ }
+
+ /// @dev This function makes it easy to read the `allowed[]` map
+ /// @param _owner The address of the account that owns the token
+ /// @param _spender The address of the account able to transfer the tokens
+ /// @return Amount of remaining tokens of _owner that _spender is allowed
+ /// to spend
+ function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
+ return allowed[_owner][_spender];
+ }
+
+ /// @notice `msg.sender` approves `_spender` to send `_amount` tokens on
+ /// its behalf, and then a function is triggered in the contract that is
+ /// being approved, `_spender`. This allows users to use their tokens to
+ /// interact with contracts in one function call instead of two
+ /// @param _spender The address of the contract able to transfer the tokens
+ /// @param _amount The amount of tokens to be approved for transfer
+ /// @return True if the function call was successful
+ function approveAndCall(address _spender, uint256 _amount, bytes _extraData) public returns (bool success) {
+ require(approve(_spender, _amount));
+
+ ApproveAndCallFallBack(_spender).receiveApproval(
+ msg.sender,
+ _amount,
+ this,
+ _extraData
+ );
+
+ return true;
+ }
+
+ /// @dev This function makes it easy to get the total number of tokens
+ /// @return The total number of tokens
+ function totalSupply() public view returns (uint) {
+ return totalSupplyAt(block.number);
+ }
+
+////////////////
+// Query balance and totalSupply in History
+////////////////
+
+ /// @dev Queries the balance of `_owner` at a specific `_blockNumber`
+ /// @param _owner The address from which the balance will be retrieved
+ /// @param _blockNumber The block number when the balance is queried
+ /// @return The balance at `_blockNumber`
+ function balanceOfAt(address _owner, uint _blockNumber) public view returns (uint) {
+
+ // These next few lines are used when the balance of the token is
+ // requested before a check point was ever created for this token, it
+ // requires that the `parentToken.balanceOfAt` be queried at the
+ // genesis block for that token as this contains initial balance of
+ // this token
+ if ((balances[_owner].length == 0) ||
+ (balances[_owner][0].fromBlock > _blockNumber)) {
+ if (address(parentToken) != 0) {
+ return parentToken.balanceOfAt(_owner, min(_blockNumber, parentSnapShotBlock));
+ } else {
+ // Has no parent
+ return 0;
+ }
+
+ // This will return the expected balance during normal situations
+ } else {
+ return getValueAt(balances[_owner], _blockNumber);
+ }
+ }
+
+ /// @notice Total amount of tokens at a specific `_blockNumber`.
+ /// @param _blockNumber The block number when the totalSupply is queried
+ /// @return The total amount of tokens at `_blockNumber`
+ function totalSupplyAt(uint _blockNumber) public view returns(uint) {
+
+ // These next few lines are used when the totalSupply of the token is
+ // requested before a check point was ever created for this token, it
+ // requires that the `parentToken.totalSupplyAt` be queried at the
+ // genesis block for this token as that contains totalSupply of this
+ // token at this block number.
+ if ((totalSupplyHistory.length == 0) ||
+ (totalSupplyHistory[0].fromBlock > _blockNumber)) {
+ if (address(parentToken) != 0) {
+ return parentToken.totalSupplyAt(min(_blockNumber, parentSnapShotBlock));
+ } else {
+ return 0;
+ }
+
+ // This will return the expected totalSupply during normal situations
+ } else {
+ return getValueAt(totalSupplyHistory, _blockNumber);
+ }
+ }
+
+////////////////
+// Mint and destroy tokens
+////////////////
+
+ /// @notice Mint `_amount` tokens that are assigned to `_owner`
+ /// @param _owner The address that will be assigned the new tokens
+ /// @param _amount The quantity of tokens minted
+ /// @return True if the tokens are minted correctly
+ function mintTokens(address _owner, uint _amount) public onlyController notFinalized returns (bool) {
+ uint curTotalSupply = totalSupply();
+ require(curTotalSupply + _amount >= curTotalSupply); // Check for overflow
+ uint previousBalanceTo = balanceOf(_owner);
+ require(previousBalanceTo + _amount >= previousBalanceTo); // Check for overflow
+ updateValueAtNow(totalSupplyHistory, curTotalSupply + _amount);
+ updateValueAtNow(balances[_owner], previousBalanceTo + _amount);
+ Transfer(0, _owner, _amount);
+ return true;
+ }
+
+ /// @notice Burns `_amount` tokens from `_owner`
+ /// @param _owner The address that will lose the tokens
+ /// @param _amount The quantity of tokens to burn
+ /// @return True if the tokens are burned correctly
+ function destroyTokens(address _owner, uint _amount) public onlyControllerOrBurner(_owner) returns (bool) {
+ uint curTotalSupply = totalSupply();
+ require(curTotalSupply >= _amount);
+ uint previousBalanceFrom = balanceOf(_owner);
+ require(previousBalanceFrom >= _amount);
+ updateValueAtNow(totalSupplyHistory, curTotalSupply - _amount);
+ updateValueAtNow(balances[_owner], previousBalanceFrom - _amount);
+ Transfer(_owner, 0, _amount);
+ return true;
+ }
+
+////////////////
+// Internal helper functions to query and set a value in a snapshot array
+////////////////
+
+ /// @dev `getValueAt` retrieves the number of tokens at a given block number
+ /// @param checkpoints The history of values being queried
+ /// @param _block The block number to retrieve the value at
+ /// @return The number of tokens being queried
+ function getValueAt(Checkpoint[] storage checkpoints, uint _block) internal view returns (uint) {
+ if (checkpoints.length == 0)
+ return 0;
+
+ // Shortcut for the actual value
+ if (_block >= checkpoints[checkpoints.length-1].fromBlock)
+ return checkpoints[checkpoints.length-1].value;
+ if (_block < checkpoints[0].fromBlock)
+ return 0;
+
+ // Binary search of the value in the array
+ uint min = 0;
+ uint max = checkpoints.length-1;
+ while (max > min) {
+ uint mid = (max + min + 1) / 2;
+ if (checkpoints[mid].fromBlock<=_block) {
+ min = mid;
+ } else {
+ max = mid-1;
+ }
+ }
+ return checkpoints[min].value;
+ }
+
+ /// @dev `updateValueAtNow` used to update the `balances` map and the
+ /// `totalSupplyHistory`
+ /// @param checkpoints The history of data being updated
+ /// @param _value The new number of tokens
+ function updateValueAtNow(Checkpoint[] storage checkpoints, uint _value) internal {
+ if ((checkpoints.length == 0) ||
+ (checkpoints[checkpoints.length - 1].fromBlock < block.number)) {
+ Checkpoint storage newCheckPoint = checkpoints[checkpoints.length++];
+ newCheckPoint.fromBlock = uint128(block.number);
+ newCheckPoint.value = uint128(_value);
+ } else {
+ Checkpoint storage oldCheckPoint = checkpoints[checkpoints.length-1];
+ oldCheckPoint.value = uint128(_value);
+ }
+ }
+
+ /// @dev Internal function to determine if an address is a contract
+ /// @param _addr The address being queried
+ /// @return True if `_addr` is a contract
+ function isContract(address _addr) internal view returns(bool) {
+ uint size;
+ if (_addr == 0)
+ return false;
+ assembly {
+ size := extcodesize(_addr)
+ }
+ return size>0;
+ }
+
+ /// @dev Helper function to return a min betwen the two uints
+ function min(uint a, uint b) pure internal returns (uint) {
+ return a < b ? a : b;
+ }
+
+//////////
+// Safety Methods
+//////////
+
+ /// @notice This method can be used by the controller to extract mistakenly
+ /// sent tokens to this contract.
+ /// @param _token The address of the token contract that you want to recover
+ /// set to 0 in case you want to extract ether.
+ function claimTokens(address _token) public onlyController {
+ if (_token == 0x0) {
+ controller.transfer(this.balance);
+ return;
+ }
+
+ ERC20Token otherToken = ERC20Token(_token);
+ uint balance = otherToken.balanceOf(this);
+ otherToken.transfer(controller, balance);
+ ClaimedTokens(_token, controller, balance);
+ }
+
+ function finalize() public onlyController notFinalized {
+ finalized = true;
+ }
+
+////////////////
+// Events
+////////////////
+
+ event ClaimedTokens(address indexed _token, address indexed _controller, uint _amount);
+ event Transfer(address indexed _from, address indexed _to, uint256 _amount);
+ event Approval(
+ address indexed _owner,
+ address indexed _spender,
+ uint256 _amount
+ );
+
+}
+
+// File: contracts/SEN.sol
+
+contract SEN is MiniMeToken {
+ function SEN() public MiniMeToken(
+ 0x0, // no parent token
+ 0, // no snapshot block number from parent
+ "Consensus Token", // Token name
+ 18, // Decimals
+ "SEN" // Symbolh
+ )
+ {}
+}
diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js
index 4d5f3f9..a7a4fdb 100644
--- a/migrations/1_initial_migration.js
+++ b/migrations/1_initial_migration.js
@@ -1,5 +1,5 @@
-var Migrations = artifacts.require("./Migrations.sol");
+const Migrations = artifacts.require('Migrations')
module.exports = function(deployer) {
- deployer.deploy(Migrations);
-};
+ deployer.deploy(Migrations)
+}
diff --git a/migrations/2_sen_and_distribution.js b/migrations/2_sen_and_distribution.js
new file mode 100644
index 0000000..0daf317
--- /dev/null
+++ b/migrations/2_sen_and_distribution.js
@@ -0,0 +1,19 @@
+const SEN = artifacts.require('SEN')
+const Distribution = artifacts.require('Distribution')
+
+const reserveWallet = process.env['SEN_RESERVE']
+const totalSupplyCap = process.env['SEN_TOTAL_SUPPLY'] || 2e11
+const totalReserve = process.env['SEN_TOTAL_RESERVE'] || 2e9
+
+const toWei = value => value * 1e18
+
+module.exports = async function(deployer) {
+ const sen = await SEN.new()
+ const distribution = await Distribution.new(
+ sen.address,
+ reserveWallet,
+ toWei(totalSupplyCap),
+ toWei(totalReserve)
+ )
+ await sen.changeController(distribution.address)
+}
diff --git a/package.json b/package.json
index b8c02b4..e15daf1 100644
--- a/package.json
+++ b/package.json
@@ -11,17 +11,23 @@
"solium": "solium -d contracts",
"lint": "yarn eslint",
"precommit": "yarn lint && yarn solium",
- "prepush": "yarn lint && yarn solium"
+ "prepush": "yarn lint && yarn solium",
+ "flatten-token": "mkdir -p etherscan && truffle-flattener contracts/SEN.sol > etherscan/SEN.sol",
+ "flatten-distribution": "mkdir -p etherscan && truffle-flattener contracts/Distribution.sol > etherscan/Distribution.sol",
+ "flatten": "yarn flatten-token && yarn flatten-distribution"
},
"devDependencies": {
"bignumber.js": "^4.1.0",
"eslint": "^4.12.1",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-prettier": "^2.3.1",
+ "ethereumjs-wallet": "^0.6.0",
"husky": "^0.14.3",
"prettier": "^1.8.2",
"solium": "^1.0.9",
- "truffle": "^4.1.3"
+ "truffle": "^4.1.3",
+ "truffle-flattener": "^1.2.5",
+ "truffle-wallet-provider": "^0.0.5"
},
"dependencies": {},
"prettier": {
diff --git a/truffle-config.js b/truffle-config.js
index efec0ab..5dafbec 100644
--- a/truffle-config.js
+++ b/truffle-config.js
@@ -1,4 +1,35 @@
+const WalletProvider = require('truffle-wallet-provider')
+
+const infuraToken = process.env['INFURA_TOKEN']
+
+// Read and unlock keystore
+const keystore = require('fs')
+ .readFileSync('./keystore')
+ .toString()
+const pass = require('fs')
+ .readFileSync('./pass')
+ .toString()
+ .trim()
+const wallet = require('ethereumjs-wallet').fromV3(keystore, pass, true)
+
module.exports = {
// See
// to customize your Truffle configuration!
+ networks: {
+ ganache: {
+ host: '127.0.0.1',
+ port: 7545,
+ network_id: 5777
+ },
+ ropsten: {
+ provider: new WalletProvider(wallet, 'https://ropsten.infura.io/'),
+ network_id: 3,
+ gas: 4000000
+ },
+ mainnet: {
+ provider: new WalletProvider(wallet, 'https://mainnet.infura.io/'),
+ network_id: 1,
+ gas: 4000000
+ }
+ }
}
diff --git a/yarn.lock b/yarn.lock
index 2fe8abf..e76c051 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6,6 +6,18 @@ abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+abstract-leveldown@~2.6.0:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8"
+ dependencies:
+ xtend "~4.0.0"
+
+abstract-leveldown@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93"
+ dependencies:
+ xtend "~4.0.0"
+
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -20,6 +32,10 @@ acorn@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
+aes-js@^0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d"
+
ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
@@ -31,6 +47,15 @@ ajv@^4.9.1:
co "^4.6.0"
json-stable-stringify "^1.0.1"
+ajv@^5.1.0, ajv@^5.1.1:
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+ dependencies:
+ co "^4.6.0"
+ fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.3.0"
+
ajv@^5.2.2, ajv@^5.2.3, ajv@^5.3.0:
version "5.5.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2"
@@ -130,6 +155,22 @@ async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+async-eventemitter@^0.2.2:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca"
+ dependencies:
+ async "^2.4.0"
+
+async@^1.4.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.4.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+ dependencies:
+ lodash "^4.14.0"
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -138,7 +179,11 @@ aws-sign2@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-aws4@^1.2.1:
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+
+aws4@^1.2.1, aws4@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
@@ -154,6 +199,10 @@ balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+base-x@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/base-x/-/base-x-1.1.0.tgz#42d3d717474f9ea02207f6d1aa1f426913eeb7ac"
+
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
@@ -164,22 +213,64 @@ bignumber.js@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1"
+"bignumber.js@git+https://github.com/debris/bignumber.js#master":
+ version "2.0.7"
+ resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9"
+
+"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2":
+ version "2.0.7"
+ resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2"
+
+"bignumber.js@git+https://github.com/frozeman/bignumber.js-nolookahead.git":
+ version "2.0.7"
+ resolved "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934"
+
binary-extensions@^1.0.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+bindings@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
+
+bip66@^1.1.3:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22"
+ dependencies:
+ safe-buffer "^5.0.1"
+
block-stream@*:
version "0.0.9"
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
dependencies:
inherits "~2.0.0"
+bn.js@4.11.6:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+
+bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+
boom@2.x.x:
version "2.10.1"
resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
dependencies:
hoek "2.x.x"
+boom@4.x.x:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
+ dependencies:
+ hoek "4.x.x"
+
+boom@5.x.x:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
+ dependencies:
+ hoek "4.x.x"
+
brace-expansion@^1.1.7:
version "1.1.8"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
@@ -195,10 +286,52 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+
browser-stdout@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+browserify-aes@^1.0.6:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-sha3@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.1.tgz#3ff34a3006ef15c0fb3567e541b91a2340123d11"
+ dependencies:
+ js-sha3 "^0.3.1"
+
+bs58@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d"
+
+bs58@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bs58/-/bs58-3.1.0.tgz#d4c26388bf4804cac714141b1945aa47e5eb248e"
+ dependencies:
+ base-x "^1.1.0"
+
+bs58check@^1.0.8:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-1.3.4.tgz#c52540073749117714fa042c3047eb8f9151cbf8"
+ dependencies:
+ bs58 "^3.1.0"
+ create-hash "^1.1.0"
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
builtin-modules@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -247,6 +380,12 @@ chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+checkpoint-store@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06"
+ dependencies:
+ functional-red-black-tree "^1.0.1"
+
chokidar@^1.6.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -266,6 +405,13 @@ ci-info@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
circular-json@^0.3.1:
version "0.3.3"
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
@@ -288,6 +434,10 @@ cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
+clone@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -296,6 +446,13 @@ code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+coinstring@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-2.3.0.tgz#cdb63363a961502404a25afb82c2e26d5ff627a4"
+ dependencies:
+ bs58 "^2.0.1"
+ create-hash "^1.1.1"
+
color-convert@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
@@ -310,16 +467,30 @@ colors@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+combined-stream@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
+ dependencies:
+ delayed-stream "~1.0.0"
+
combined-stream@^1.0.5, combined-stream@~1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
dependencies:
delayed-stream "~1.0.0"
+commander@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
+
commander@2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
+commander@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
+
commander@2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
@@ -350,6 +521,26 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.4:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -364,19 +555,39 @@ cryptiles@2.x.x:
dependencies:
boom "2.x.x"
+cryptiles@3.x.x:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
+ dependencies:
+ boom "5.x.x"
+
+crypto-js@^3.1.4:
+ version "3.1.8"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5"
+
+crypto-js@^3.1.9-1:
+ version "3.1.9-1"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8"
+
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
dependencies:
assert-plus "^1.0.0"
+debug@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ dependencies:
+ ms "0.7.1"
+
debug@2.6.8:
version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies:
ms "2.0.0"
-debug@3.1.0, debug@^3.0.1:
+debug@3.1.0, debug@^3.0.1, debug@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
@@ -392,6 +603,10 @@ decamelize@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+deep-equal@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+
deep-extend@~0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
@@ -400,6 +615,23 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+deferred-leveldown@~1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb"
+ dependencies:
+ abstract-leveldown "~2.6.0"
+
+define-properties@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+ dependencies:
+ foreach "^2.0.5"
+ object-keys "^1.0.8"
+
+defined@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
del@^2.0.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
@@ -424,6 +656,10 @@ detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+diff@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
+
diff@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
@@ -438,18 +674,76 @@ doctrine@^2.0.2:
dependencies:
esutils "^2.0.2"
+dom-walk@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
+
+drbg.js@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b"
+ dependencies:
+ browserify-aes "^1.0.6"
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
dependencies:
jsbn "~0.1.0"
+elliptic@^6.2.3:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+encoding@^0.1.11:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
+ dependencies:
+ iconv-lite "~0.4.13"
+
+errno@~0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ dependencies:
+ prr "~1.0.1"
+
error-ex@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
dependencies:
is-arrayish "^0.2.1"
+es-abstract@^1.5.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
+es-to-primitive@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+ dependencies:
+ is-callable "^1.1.1"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.1"
+
+escape-string-regexp@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
+
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -548,6 +842,110 @@ esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ethereum-common@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca"
+
+ethereum-common@^0.0.18:
+ version "0.0.18"
+ resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f"
+
+ethereumjs-account@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.4.tgz#f8c30231bcb707f4514d8a052c1f9da103624d47"
+ dependencies:
+ ethereumjs-util "^4.0.1"
+ rlp "^2.0.0"
+
+ethereumjs-block@^1.2.2, ethereumjs-block@~1.7.0:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f"
+ dependencies:
+ async "^2.0.1"
+ ethereum-common "0.2.0"
+ ethereumjs-tx "^1.2.2"
+ ethereumjs-util "^5.0.0"
+ merkle-patricia-tree "^2.1.2"
+
+ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.4.tgz#c2304912f6c07af03237ad8675ac036e290dad48"
+ dependencies:
+ ethereum-common "^0.0.18"
+ ethereumjs-util "^5.0.0"
+
+ethereumjs-util@^4.0.1, ethereumjs-util@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6"
+ dependencies:
+ bn.js "^4.8.0"
+ create-hash "^1.1.2"
+ keccakjs "^0.2.0"
+ rlp "^2.0.0"
+ secp256k1 "^3.0.1"
+
+ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.1.5.tgz#2f02575852627d45622426f25ee4a0b5f377f27a"
+ dependencies:
+ bn.js "^4.11.0"
+ create-hash "^1.1.2"
+ ethjs-util "^0.1.3"
+ keccak "^1.0.2"
+ rlp "^2.0.0"
+ safe-buffer "^5.1.1"
+ secp256k1 "^3.0.1"
+
+ethereumjs-vm@^2.0.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.3.3.tgz#05719139e0c4a59e829022964a6048b17d2d84b0"
+ dependencies:
+ async "^2.1.2"
+ async-eventemitter "^0.2.2"
+ ethereum-common "0.2.0"
+ ethereumjs-account "^2.0.3"
+ ethereumjs-block "~1.7.0"
+ ethereumjs-util "^5.1.3"
+ fake-merkle-patricia-tree "^1.0.1"
+ functional-red-black-tree "^1.0.1"
+ merkle-patricia-tree "^2.1.2"
+ rustbn.js "~0.1.1"
+ safe-buffer "^5.1.1"
+
+ethereumjs-wallet@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz#82763b1697ee7a796be7155da9dfb49b2f98cfdb"
+ dependencies:
+ aes-js "^0.2.3"
+ bs58check "^1.0.8"
+ ethereumjs-util "^4.4.0"
+ hdkey "^0.7.0"
+ scrypt.js "^0.2.0"
+ utf8 "^2.1.1"
+ uuid "^2.0.1"
+
+ethjs-abi@0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.1.8.tgz#cd288583ed628cdfadaf8adefa3ba1dbcbca6c18"
+ dependencies:
+ bn.js "4.11.6"
+ js-sha3 "0.5.5"
+ number-to-bn "1.7.0"
+
+ethjs-util@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.4.tgz#1c8b6879257444ef4d3f3fbbac2ded12cd997d93"
+ dependencies:
+ is-hex-prefixed "1.0.0"
+ strip-hex-prefix "1.0.0"
+
+evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
execa@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
@@ -572,7 +970,7 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-extend@~3.0.0:
+extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -598,6 +996,12 @@ extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+fake-merkle-patricia-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3"
+ dependencies:
+ checkpoint-store "^1.1.0"
+
fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
@@ -663,6 +1067,12 @@ flat-cache@^1.2.1:
graceful-fs "^4.1.2"
write "^0.2.1"
+for-each@^0.3.2, for-each@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4"
+ dependencies:
+ is-function "~1.0.0"
+
for-in@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -673,6 +1083,10 @@ for-own@^0.1.4:
dependencies:
for-in "^1.0.1"
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -685,6 +1099,14 @@ form-data@~2.1.1:
combined-stream "^1.0.5"
mime-types "^2.1.12"
+form-data@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "1.0.6"
+ mime-types "^2.1.12"
+
fs-extra@^0.30.0:
version "0.30.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
@@ -723,6 +1145,10 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
mkdirp ">=0.5 0"
rimraf "2"
+function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
@@ -771,6 +1197,13 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
+glob@3.2.11:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
+ dependencies:
+ inherits "2"
+ minimatch "0.3"
+
glob@7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
@@ -782,7 +1215,7 @@ glob@7.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
+glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
dependencies:
@@ -793,6 +1226,13 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global@~4.3.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
+ dependencies:
+ min-document "^2.19.0"
+ process "~0.5.1"
+
globals@^11.0.1:
version "11.0.1"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.0.1.tgz#12a87bb010e5154396acc535e1e43fc753b0e5e8"
@@ -828,6 +1268,10 @@ har-schema@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+
har-validator@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -835,6 +1279,13 @@ har-validator@~4.2.1:
ajv "^4.9.1"
har-schema "^1.0.5"
+har-validator@~5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
+ dependencies:
+ ajv "^5.1.0"
+ har-schema "^2.0.0"
+
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -853,6 +1304,32 @@ has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+has@^1.0.1, has@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+ dependencies:
+ function-bind "^1.0.2"
+
+hash-base@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+ dependencies:
+ inherits "^2.0.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.0"
+
hawk@3.1.3, hawk@~3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
@@ -862,14 +1339,42 @@ hawk@3.1.3, hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
+hawk@~6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
+ dependencies:
+ boom "4.x.x"
+ cryptiles "3.x.x"
+ hoek "4.x.x"
+ sntp "2.x.x"
+
+hdkey@^0.7.0:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-0.7.1.tgz#caee4be81aa77921e909b8d228dd0f29acaee632"
+ dependencies:
+ coinstring "^2.0.0"
+ secp256k1 "^3.0.1"
+
he@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+hoek@4.x.x:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
+
hosted-git-info@^2.1.4:
version "2.6.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
@@ -882,6 +1387,14 @@ http-signature@~1.1.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
husky@^0.14.3:
version "0.14.3"
resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
@@ -890,7 +1403,7 @@ husky@^0.14.3:
normalize-path "^1.0.0"
strip-indent "^2.0.0"
-iconv-lite@^0.4.17:
+iconv-lite@^0.4.17, iconv-lite@~0.4.13:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
@@ -898,6 +1411,10 @@ ignore@^3.3.3:
version "3.3.7"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+immediate@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c"
+
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -909,7 +1426,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3:
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@@ -960,12 +1477,20 @@ is-builtin-module@^1.0.0:
dependencies:
builtin-modules "^1.0.0"
+is-callable@^1.1.1, is-callable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
is-ci@^1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
dependencies:
ci-info "^1.0.0"
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+
is-dotfile@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@@ -994,12 +1519,20 @@ is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+is-function@^1.0.1, is-function@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
+
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
dependencies:
is-extglob "^1.0.0"
+is-hex-prefixed@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554"
+
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -1040,16 +1573,26 @@ is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ dependencies:
+ has "^1.0.1"
+
is-resolvable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
dependencies:
tryit "^1.0.1"
-is-stream@^1.1.0:
+is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+is-symbol@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -1058,6 +1601,10 @@ is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -1072,14 +1619,36 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
+isomorphic-fetch@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+ dependencies:
+ node-fetch "^1.0.1"
+ whatwg-fetch ">=0.10.0"
+
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+jade@0.26.3:
+ version "0.26.3"
+ resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c"
+ dependencies:
+ commander "0.6.1"
+ mkdirp "0.3.0"
+
jest-docblock@^21.0.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
+js-sha3@0.5.5:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a"
+
+js-sha3@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243"
+
js-string-escape@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
@@ -1144,6 +1713,22 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+keccak@^1.0.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80"
+ dependencies:
+ bindings "^1.2.1"
+ inherits "^2.0.3"
+ nan "^2.2.1"
+ safe-buffer "^5.1.0"
+
+keccakjs@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.1.tgz#1d633af907ef305bbf9f2fa616d56c44561dfa4d"
+ dependencies:
+ browserify-sha3 "^0.0.1"
+ sha3 "^1.1.0"
+
kind-of@^3.0.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -1168,6 +1753,50 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
+level-codec@~7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7"
+
+level-errors@^1.0.3:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d"
+ dependencies:
+ errno "~0.1.1"
+
+level-errors@~1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859"
+ dependencies:
+ errno "~0.1.1"
+
+level-iterator-stream@~1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed"
+ dependencies:
+ inherits "^2.0.1"
+ level-errors "^1.0.3"
+ readable-stream "^1.0.33"
+ xtend "^4.0.0"
+
+level-ws@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b"
+ dependencies:
+ readable-stream "~1.0.15"
+ xtend "~2.1.1"
+
+levelup@^1.2.1:
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab"
+ dependencies:
+ deferred-leveldown "~1.2.1"
+ level-codec "~7.0.0"
+ level-errors "~1.0.3"
+ level-iterator-stream "~1.3.0"
+ prr "~1.0.1"
+ semver "~5.4.1"
+ xtend "~4.0.0"
+
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -1243,10 +1872,18 @@ lodash.keys@^3.0.0:
lodash.isarguments "^3.0.0"
lodash.isarray "^3.0.0"
+lodash@^4.14.0:
+ version "4.17.5"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
+
lodash@^4.14.2, lodash@^4.17.4, lodash@^4.3.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+lru-cache@2:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
+
lru-cache@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
@@ -1254,16 +1891,51 @@ lru-cache@^4.0.1:
pseudomap "^1.0.2"
yallist "^2.1.2"
+ltgt@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
+
+md5.js@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
mem@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
dependencies:
mimic-fn "^1.0.0"
+memdown@^1.0.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215"
+ dependencies:
+ abstract-leveldown "~2.7.1"
+ functional-red-black-tree "^1.0.1"
+ immediate "^3.2.3"
+ inherits "~2.0.1"
+ ltgt "~2.2.0"
+ safe-buffer "~5.1.1"
+
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
+merkle-patricia-tree@^2.1.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.1.tgz#7d4e7263a9c85c1679187cad4a6d71f48d524c71"
+ dependencies:
+ async "^1.4.2"
+ ethereumjs-util "^5.0.0"
+ level-ws "0.0.0"
+ levelup "^1.2.1"
+ memdown "^1.0.0"
+ readable-stream "^2.0.0"
+ rlp "^2.0.0"
+ semaphore ">=1.0.1"
+
micromatch@^2.1.5:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
@@ -1286,16 +1958,47 @@ mime-db@~1.30.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+
mime-types@^2.1.12, mime-types@~2.1.7:
version "2.1.17"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
dependencies:
mime-db "~1.30.0"
+mime-types@~2.1.17:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+ dependencies:
+ mime-db "~1.33.0"
+
mimic-fn@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+min-document@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+ dependencies:
+ dom-walk "^0.1.0"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+
+minimatch@0.3:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
+ dependencies:
+ lru-cache "2"
+ sigmund "~1.0.0"
+
minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -1306,16 +2009,35 @@ minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-minimist@^1.2.0:
+minimist@^1.2.0, minimist@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+mkdirp@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
+
mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
minimist "0.0.8"
+mocha@^2.4.5:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58"
+ dependencies:
+ commander "2.3.0"
+ debug "2.2.0"
+ diff "1.4.0"
+ escape-string-regexp "1.0.2"
+ glob "3.2.11"
+ growl "1.9.2"
+ jade "0.26.3"
+ mkdirp "0.5.1"
+ supports-color "1.2.0"
+ to-iso-string "0.0.2"
+
mocha@^3.4.2:
version "3.5.3"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
@@ -1348,6 +2070,10 @@ mocha@^4.0.1:
mkdirp "0.5.1"
supports-color "4.4.0"
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -1356,6 +2082,10 @@ mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+nan@^2.0.5, nan@^2.0.8, nan@^2.2.1:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
+
nan@^2.3.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
@@ -1364,6 +2094,13 @@ natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+node-fetch@^1.0.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
node-pre-gyp@^0.6.39:
version "0.6.39"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
@@ -1425,7 +2162,14 @@ number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-oauth-sign@~0.8.1:
+number-to-bn@1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"
+ dependencies:
+ bn.js "4.11.6"
+ strip-hex-prefix "1.0.0"
+
+oauth-sign@~0.8.1, oauth-sign@~0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
@@ -1433,6 +2177,18 @@ object-assign@^4.0.1, object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+object-inspect@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.5.0.tgz#9d876c11e40f485c79215670281b767488f9bfe3"
+
+object-keys@^1.0.8:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+
+object-keys@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+
object.omit@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -1463,7 +2219,7 @@ optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
-original-require@^1.0.1:
+original-require@^1.0.0, original-require@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20"
@@ -1519,6 +2275,13 @@ parse-glob@^3.0.4:
is-extglob "^1.0.0"
is-glob "^2.0.0"
+parse-headers@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536"
+ dependencies:
+ for-each "^0.3.2"
+ trim "0.0.1"
+
parse-json@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
@@ -1547,6 +2310,10 @@ path-key@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+path-parse@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@@ -1555,6 +2322,16 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
+pbkdf2@^3.0.3:
+ version "3.0.14"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
pegjs@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd"
@@ -1563,6 +2340,10 @@ performance-now@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -1597,10 +2378,22 @@ process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+
+process@~0.5.1:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
+
progress@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+
pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
@@ -1613,6 +2406,10 @@ qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+qs@~6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+
randomatic@^1.1.3:
version "1.1.7"
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
@@ -1644,6 +2441,27 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
+readable-stream@^1.0.33:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.0.0:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.0.3"
+ util-deprecate "~1.0.1"
+
readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
@@ -1656,6 +2474,15 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable
string_decoder "~1.0.3"
util-deprecate "~1.0.1"
+readable-stream@~1.0.15:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
readdirp@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
@@ -1710,6 +2537,33 @@ request@2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
+request@^2.67.0:
+ version "2.85.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa"
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.6.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.1"
+ forever-agent "~0.6.1"
+ form-data "~2.3.1"
+ har-validator "~5.0.3"
+ hawk "~6.0.2"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.17"
+ oauth-sign "~0.8.2"
+ performance-now "^2.1.0"
+ qs "~6.5.1"
+ safe-buffer "^5.1.1"
+ stringstream "~0.0.5"
+ tough-cookie "~2.3.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.1.0"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -1733,6 +2587,12 @@ resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+resolve@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+ dependencies:
+ path-parse "^1.0.5"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -1740,18 +2600,39 @@ restore-cursor@^2.0.0:
onetime "^2.0.0"
signal-exit "^3.0.2"
+resumer@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
+ dependencies:
+ through "~2.3.4"
+
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
glob "^7.0.5"
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+ dependencies:
+ hash-base "^2.0.0"
+ inherits "^2.0.1"
+
+rlp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0"
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
dependencies:
is-promise "^2.1.0"
+rustbn.js@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.1.2.tgz#979fa0f9562216dd667c9d2cd179ae5d13830eff"
+
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
@@ -1762,14 +2643,54 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
+scrypt.js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada"
+ dependencies:
+ scrypt "^6.0.2"
+ scryptsy "^1.2.1"
+
+scrypt@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d"
+ dependencies:
+ nan "^2.0.8"
+
+scryptsy@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163"
+ dependencies:
+ pbkdf2 "^3.0.3"
+
+secp256k1@^3.0.1:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.5.0.tgz#677d3b8a8e04e1a5fa381a1ae437c54207b738d0"
+ dependencies:
+ bindings "^1.2.1"
+ bip66 "^1.1.3"
+ bn.js "^4.11.3"
+ create-hash "^1.1.2"
+ drbg.js "^1.0.1"
+ elliptic "^6.2.3"
+ nan "^2.2.1"
+ safe-buffer "^5.1.0"
+
+semaphore@>=1.0.1, semaphore@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa"
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1:
version "5.5.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+semver@~5.4.1:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -1778,6 +2699,19 @@ set-immediate-shim@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+sha3@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.0.tgz#6989f1b70a498705876a373e2c62ace96aa9399a"
+ dependencies:
+ nan "^2.0.5"
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -1788,6 +2722,10 @@ shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+sigmund@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -1804,6 +2742,12 @@ sntp@1.x.x:
dependencies:
hoek "2.x.x"
+sntp@2.x.x:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
+ dependencies:
+ hoek "4.x.x"
+
sol-digger@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/sol-digger/-/sol-digger-0.0.2.tgz#406c4a9d31e269e7f88eb1c2ea101318e5e09025"
@@ -1822,6 +2766,24 @@ solc@0.4.19:
semver "^5.3.0"
yargs "^4.7.1"
+solc@^0.4.2:
+ version "0.4.21"
+ resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264"
+ dependencies:
+ fs-extra "^0.30.0"
+ memorystream "^0.3.1"
+ require-from-string "^1.1.0"
+ semver "^5.3.0"
+ yargs "^4.7.1"
+
+solidity-parser@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/solidity-parser/-/solidity-parser-0.4.0.tgz#a343f13da73c91683279034680e80c491de340fa"
+ dependencies:
+ mocha "^2.4.5"
+ pegjs "^0.10.0"
+ yargs "^4.6.0"
+
solium-plugin-security@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/solium-plugin-security/-/solium-plugin-security-0.0.2.tgz#2e1d690c2d260713b61bbc4194efea2306abd940"
@@ -1905,13 +2867,25 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string.prototype.trim@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.0"
+ function-bind "^1.0.2"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
string_decoder@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4:
+stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
@@ -1937,6 +2911,12 @@ strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+strip-hex-prefix@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f"
+ dependencies:
+ is-hex-prefixed "1.0.0"
+
strip-indent@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
@@ -1945,6 +2925,10 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+supports-color@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
+
supports-color@3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
@@ -1978,6 +2962,24 @@ table@^4.0.1:
slice-ansi "1.0.0"
string-width "^2.1.1"
+tape@^4.4.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/tape/-/tape-4.9.0.tgz#855c08360395133709d34d3fbf9ef341eb73ca6a"
+ dependencies:
+ deep-equal "~1.0.1"
+ defined "~1.0.0"
+ for-each "~0.3.2"
+ function-bind "~1.1.1"
+ glob "~7.1.2"
+ has "~1.0.1"
+ inherits "~2.0.3"
+ minimist "~1.2.0"
+ object-inspect "~1.5.0"
+ resolve "~1.5.0"
+ resumer "~0.0.0"
+ string.prototype.trim "~1.1.2"
+ through "~2.3.8"
+
tar-pack@^3.4.0:
version "3.4.1"
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
@@ -2003,7 +3005,7 @@ text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-through@^2.3.6:
+through@^2.3.6, through@~2.3.4, through@~2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -2013,12 +3015,105 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
+to-iso-string@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1"
+
tough-cookie@~2.3.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
dependencies:
punycode "^1.4.1"
+tough-cookie@~2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
+ dependencies:
+ punycode "^1.4.1"
+
+trim@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
+
+truffle-blockchain-utils@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.4.tgz#e31a346db61775c80ccd6f632de5e72f97f20ea5"
+
+truffle-config@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-1.0.4.tgz#6f2eaa4203b8248e7e5335163766f913be35b0bf"
+ dependencies:
+ find-up "^2.1.0"
+ lodash "^4.17.4"
+ original-require "^1.0.0"
+ truffle-error "^0.0.2"
+ truffle-provider "^0.0.4"
+
+truffle-contract-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-2.0.0.tgz#535378c0b6a7f58011ea8d84f57771771cb45163"
+ dependencies:
+ ajv "^5.1.1"
+ crypto-js "^3.1.9-1"
+ debug "^3.1.0"
+
+truffle-contract@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-3.0.4.tgz#be169ce00a14d025431e95318e8bae049fca9cfc"
+ dependencies:
+ ethjs-abi "0.1.8"
+ truffle-blockchain-utils "^0.0.4"
+ truffle-contract-schema "^2.0.0"
+ truffle-error "0.0.2"
+ web3 "^0.20.1"
+
+truffle-error@0.0.2, truffle-error@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.2.tgz#01b189b78505566ae1689c239c7ca2dd121cfe4c"
+
+truffle-expect@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.3.tgz#9b75cef343bd596e7e5dbc878f5f1b2e318a944c"
+
+truffle-flattener@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.2.5.tgz#a2d1fb9262a9d67158e2861319118fab97a3ca62"
+ dependencies:
+ find-up "^2.1.0"
+ semver "^5.4.1"
+ solidity-parser "^0.4.0"
+ truffle-config "^1.0.2"
+ truffle-resolver "^4.0.1"
+ tsort "0.0.1"
+
+truffle-provider@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.0.4.tgz#910937a163c47208b65b21befda60ddbd0404a3c"
+ dependencies:
+ truffle-error "^0.0.2"
+ web3 "^0.20.1"
+
+truffle-provisioner@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/truffle-provisioner/-/truffle-provisioner-0.1.0.tgz#029e5249c1015300738535e04fded931a53c4f62"
+
+truffle-resolver@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/truffle-resolver/-/truffle-resolver-4.0.2.tgz#ebc4ca35e5fecc33a726c6bd690e2210f11141e5"
+ dependencies:
+ async "^2.1.4"
+ truffle-contract "^3.0.4"
+ truffle-expect "0.0.3"
+ truffle-provisioner "^0.1.0"
+
+truffle-wallet-provider@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/truffle-wallet-provider/-/truffle-wallet-provider-0.0.5.tgz#db59ce6fa1c558766011137509a94dfca8d1408e"
+ dependencies:
+ ethereumjs-wallet "^0.6.0"
+ web3 "^0.18.2"
+ web3-provider-engine "^8.4.0"
+
truffle@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.3.tgz#55b7095bcd2cd3751bc874601affa3ceb70df672"
@@ -2031,6 +3126,10 @@ tryit@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+tsort@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786"
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -2055,14 +3154,26 @@ uid-number@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+utf8@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+uuid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+
uuid@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+uuid@^3.1.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
+
validate-npm-package-license@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
@@ -2078,6 +3189,58 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
+web3-provider-engine@^8.4.0:
+ version "8.6.1"
+ resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz#4d86e19e30caaf97df351511ec0f60136e5b30eb"
+ dependencies:
+ async "^2.1.2"
+ clone "^2.0.0"
+ ethereumjs-block "^1.2.2"
+ ethereumjs-tx "^1.2.0"
+ ethereumjs-util "^5.0.1"
+ ethereumjs-vm "^2.0.2"
+ isomorphic-fetch "^2.2.0"
+ request "^2.67.0"
+ semaphore "^1.0.3"
+ solc "^0.4.2"
+ tape "^4.4.0"
+ web3 "^0.16.0"
+ xhr "^2.2.0"
+ xtend "^4.0.1"
+
+web3@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/web3/-/web3-0.16.0.tgz#a4554175cd462943035b1f1d39432f741c6b6019"
+ dependencies:
+ bignumber.js "git+https://github.com/debris/bignumber.js#master"
+ crypto-js "^3.1.4"
+ utf8 "^2.1.1"
+ xmlhttprequest "*"
+
+web3@^0.18.2:
+ version "0.18.4"
+ resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d"
+ dependencies:
+ bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2"
+ crypto-js "^3.1.4"
+ utf8 "^2.1.1"
+ xhr2 "*"
+ xmlhttprequest "*"
+
+web3@^0.20.1:
+ version "0.20.6"
+ resolved "https://registry.yarnpkg.com/web3/-/web3-0.20.6.tgz#3e97306ae024fb24e10a3d75c884302562215120"
+ dependencies:
+ bignumber.js "git+https://github.com/frozeman/bignumber.js-nolookahead.git"
+ crypto-js "^3.1.4"
+ utf8 "^2.1.1"
+ xhr2 "*"
+ xmlhttprequest "*"
+
+whatwg-fetch@>=0.10.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+
which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
@@ -2123,6 +3286,33 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
+xhr2@*:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f"
+
+xhr@^2.2.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.1.tgz#ba982cced205ae5eec387169ac9dc77ca4853d38"
+ dependencies:
+ global "~4.3.0"
+ is-function "^1.0.1"
+ parse-headers "^2.0.0"
+ xtend "^4.0.0"
+
+xmlhttprequest@*:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+xtend@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+ dependencies:
+ object-keys "~0.4.0"
+
y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
@@ -2161,7 +3351,7 @@ yargs@^10.0.3:
y18n "^3.2.1"
yargs-parser "^8.0.0"
-yargs@^4.7.1:
+yargs@^4.6.0, yargs@^4.7.1:
version "4.8.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"
dependencies: