From 922b8debdee7a67324a09f2c77f0f1367f956410 Mon Sep 17 00:00:00 2001 From: Erik Tierney Date: Thu, 18 Oct 2018 13:24:15 -0400 Subject: [PATCH] Merge master into multi-issuer to pick up CI changes. (#231) * Fix typo in readme * remove encoder and decoder tools * Update readme add link to centre.io * housekeeping * cleanup * readme cleanup remove out of date comments about openzeppelin - now installed via yarn * add cloudformation template for codebuild project (#222) * add cloudformation template for codebuild project * fix linter warnings * adjust policy name, linter fix * Initial .travis.yml file --- .travis.yml | 16 ++++ README.md | 14 +--- ci/{codebuild.yml => codebuild.yaml} | 11 +-- package.json | 3 +- scripts/decodeTxData.js | 113 --------------------------- scripts/encodeTxData.js | 50 ------------ scripts/tests/dataEncodingTests.js | 84 -------------------- yarn.lock | 87 +-------------------- 8 files changed, 25 insertions(+), 353 deletions(-) create mode 100644 .travis.yml rename ci/{codebuild.yml => codebuild.yaml} (89%) delete mode 100644 scripts/decodeTxData.js delete mode 100644 scripts/encodeTxData.js delete mode 100644 scripts/tests/dataEncodingTests.js diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..85696c4fa --- /dev/null +++ b/.travis.yml @@ -0,0 +1,16 @@ +language: node_js +node_js: + - 8 + +before_install: + - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.9.2 + - export PATH="$HOME/.yarn/bin:$PATH" + + +install: + - npm install -g truffle@4.1.13 + - yarn install --frozen-lockfile + +script: + - yarn check --integrity && truffle compile && npm test + diff --git a/README.md b/README.md index d8bcf0db1..cf1fdf91e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # centre-tokens -Fiat tokens on the CENTRE network. +Fiat tokens on the [CENTRE](https://centre.io) network. # Setup Tests need node v8.0.0 or higher, as they depend on async/await functionality. Interacting with eth is very async-y so await makes it much easier to write tests. @@ -27,7 +27,7 @@ to generate test coverage on all tests run: # Contracts The implementation uses 2 separate contracts - a proxy contract (`FiatTokenProxy.sol`)and an implementation contract(`FiatToken.sol`). -This allows upgrading the contract, as a new implentation contact can be deployed and the Proxy updated to point to it. +This allows upgrading the contract, as a new implementation contact can be deployed and the Proxy updated to point to it. ## FiatToken The FiatToken offers a number of capabilities, which briefly are described below. There are more [detailed design docs](./doc/tokendesign.md) in the `doc` folder. @@ -57,13 +57,3 @@ need the allowance increased again by the `masterMinter`. The contract has an Owner, who can change the `owner`, `pauser`, `blacklister`, or `masterMinter` addresses. The `owner` can not change the `proxyOwner` address. -# OpenZeppelin -Contracts from OpenZeppelin version 1.10 are used where possible, with some modifications. These contracts are located -in `contracts/thirdparty/openzepplin`. `Ownable` and `Pausable` have been modified. The other contacts are unmodified. - -## `Ownable` has been modified to: -1. Remove the renounceOwnership function and OwnershipdRenounced event. -## `Pausable` has been modified to: -1. Add the pauser role, which controlls `pause`/`unpause` -2. Remove `whenPaused`/`whenNotPaused` modifiers on `unpause`/`pause` methods -3. Remove `whenPaused` as is is no longer used diff --git a/ci/codebuild.yml b/ci/codebuild.yaml similarity index 89% rename from ci/codebuild.yml rename to ci/codebuild.yaml index e4b175990..43a75d77d 100644 --- a/ci/codebuild.yml +++ b/ci/codebuild.yaml @@ -40,7 +40,7 @@ Resources: Location: !Ref CodeBuildBucket Name: artifacts NamespaceType: BUILD_ID - BadgeEnabled: True + BadgeEnabled: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL @@ -79,7 +79,7 @@ Resources: Action: "sts:AssumeRole" Path: "/" Policies: - - PolicyName: !Ref AWS::StackName + - PolicyName: "CodeBuildAccess" PolicyDocument: Version: "2012-10-17" Statement: @@ -98,12 +98,9 @@ Resources: Resource: !Sub "arn:aws:s3:::${AWS::StackName}-${AWS::AccountId}-${AWS::Region}*" - Sid: "AllowPublishToSNS" Effect: "Allow" - Action: "SNS:Publish" + Action: + - "SNS:Publish" Resource: !Ref FailedBuildTopic FailedBuildTopic: Type: AWS::SNS::Topic - Properties: - Subscription: - - { "Endpoint": "o6j1v0d5h5d8h5h7@circlefin.slack.com", "Protocol": "email" } # Slack notification - - { "Endpoint": "ohudson@circle.com", "Protocol": "email" } # Oliver's email \ No newline at end of file diff --git a/package.json b/package.json index 33ac07789..c4674aa05 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "dev": "lite-server", "truffle-test": "scripts/start-ganache.sh && truffle test", - "test": "scripts/start-ganache.sh && truffle test scripts/tests/dataEncodingTests.js && ./node_modules/.bin/solidity-coverage" + "test": "scripts/start-ganache.sh && ./node_modules/.bin/solidity-coverage" }, "repository": { "type": "git", @@ -28,7 +28,6 @@ "bignumber.js": "6.0.0", "clone": "2.1.2", "csv-parse": "3.0.0", - "ethereum-input-data-decoder": "0.0.12", "ethereumjs-abi": "^0.6.5", "ethereumjs-tx": "1.3.1", "g": "^2.0.1", diff --git a/scripts/decodeTxData.js b/scripts/decodeTxData.js deleted file mode 100644 index a827fa2c8..000000000 --- a/scripts/decodeTxData.js +++ /dev/null @@ -1,113 +0,0 @@ -const InputDataDecoder = require('ethereum-input-data-decoder') -var fs = require('fs') -var mkdirp = require('mkdirp') -var args = process.argv; - -var helpText = `Decodes "data" field of ethereum transactions -args: -"--truffle-artifact" or "--abi-path": - "--truffle-artifact": name of truffle-artifact (contract name) - "--abi-path": /path/to/abi.json (contents of file should be one abi array) -"--data": hex used as input data to ethereum transaction. Encodes function name, parameter types, and parameter values -"--filename": (optional) file name used for decoded output. File is saved to ./decoded_data/.json. If no filename is provided, output is logged to stdout. - -example using truffle with --truffle-artifact: -- in process 1, run ganache: $ ganache-cli -- in process 2, compile contracts to /build/contracts/ folder: $ truffle compile -- in process 2, run decoder: $ truffle exec decodeTxData.js --truffle-artifact FiatTokenV1 --data 0x4e44d9560000000000000000000000009c08210cc65b5c9f1961cdbd9ea9bf017522464d000000000000000000000000000000000000000000000000000000003b9aca00$ --filename configureMinter -Output: new file is created at decoded_data/configureMinter.json: -{ - "name":"configureMinter", - "types":[ - "address", - "uint256" - ], - "inputs":[ - "9c08210cc65b5c9f1961cdbd9ea9bf017522464d", - "1000000000" - ] -} - -example using just node with --abi-path: -- (ensure that correct abi is located at --abi-path) -- run decoder: $ node decodeTxData.js --abi-path ./tests/FiatTokenProxy_abi.json --data 4f1ef286000000000000000000000000023fe1585d8361f0584aaa78c152f94cdcff7b3000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064d76c43c60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aca94ef8bd5ffee41947b4585a84bda5a3d3da6e000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000 --filename upgradeToAndCall -Output: new file is created at decoded_data/upgradeToAndCall.json: -{ - "name":"upgradeToAndCall", - "types":[ - "address", - "bytes" - ], - "inputs":[ - "023fe1585d8361f0584aaa78c152f94cdcff7b30", - "d76c43c60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aca94ef8bd5ffee41947b4585a84bda5a3d3da6e000000000000000000000000000000000000000000000000000000000000000c" - ] -} -` - -function toHexString(byteArray) { - return Array.from(byteArray, function(byte) { - return ('0' + (byte & 0xFF).toString(16)).slice(-2); - }).join('') -} - -function decode() { - var helpFlagIndex = args.indexOf("--help"); - if (helpFlagIndex != -1) { - console.log(helpText) - return - } - - var dataFlagIndex = args.indexOf("--data"); - var data = args[dataFlagIndex + 1] - var truffleArtifactFlagIndex = args.indexOf("--truffle-artifact") - var abiPathFlagIndex = args.indexOf("--abi-path") - var outputFileNameFlagIndex = args.indexOf("--filename") - - var abi; - - if (abiPathFlagIndex != -1) { - var abiPathIndex = args[abiPathFlagIndex + 1] - var abiStr = fs.readFileSync(abiPathIndex, "utf8") - abi = JSON.parse(abiStr) - } else { - if (truffleArtifactFlagIndex != -1) { - var truffleArtifactName = args[truffleArtifactFlagIndex + 1] - var truffleArtifact = artifacts.require(truffleArtifactName) - abi = truffleArtifact.abi - } else { - throw new Error(`ABI is missing. Pass in the ABI with one of the following flags: - --abi-path /path/to/abi.json - --truffle-artifact nameOfContract - print full instructions with: --help - `) - } - } - - var decoder = new InputDataDecoder(abi) - result = decoder.decodeData(data) - for (i = 0; i < result.inputs.length; i++) { - // if the the type is object and corresponding type in type array is uint, try to parse it - if ((typeof result.inputs[i] == "object") && result.types[i].includes("uint")) { - result.inputs[i] = result.inputs[i].toString() - } - if (result.types[i] == "bytes") { - result.inputs[i] = toHexString(result.inputs[i]) - } - } - var decodedDataJson = JSON.stringify(result) - - if (outputFileNameFlagIndex != -1) { - outputFileName = args[outputFileNameFlagIndex + 1] - mkdirp.sync('decoded_data') - fs.writeFileSync('decoded_data/' + outputFileName + '.json', decodedDataJson, 'utf8'); - } else { - console.log(decodedDataJson) - } -} - -decode() - -module.exports = async function(callback) { - callback() -} \ No newline at end of file diff --git a/scripts/encodeTxData.js b/scripts/encodeTxData.js deleted file mode 100644 index 7cfd9ac99..000000000 --- a/scripts/encodeTxData.js +++ /dev/null @@ -1,50 +0,0 @@ -// Description: -// Returns "data" parameter for Ethereum transaction of an upgraded token -// Note: Addresses must start with 0x - -// Args: -// arg0: truffle -// arg1: exec -// arg2: --compile -// arg3: encodeTxData.js -// arg4: name of contract (e.g. FiatTokenV2NewFieldsTest). Do not pass the source file name. -// arg5: function name (e.g. initV2) -// arg6+: solidity argument values - -// Example usage: -// make sure Ganache is running (`ganache-cli --defaultBalanceEther 1000000 --deterministic --a 15`) -// run `truffle compile` to generate build artifacts, or pass `-c` or `--compile` after exec, as in the following example: -// `truffle exec --compile encodeTxData.js FiatTokenV2NewFieldsTest initV2 true 0xaca94ef8bd5ffee41947b4585a84bda5a3d3da6e 12` -// returns -// 0xd76c43c60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aca94ef8bd5ffee41947b4585a84bda5a3d3da6e000000000000000000000000000000000000000000000000000000000000000c - -var args = process.argv; -// slice off the paths to node and truffle executables, which are included automatically -args = args.slice(2) -// slice off everything from truffle through name of this file -if (args[1] == "--compile" || args[1] == "-c") { - args = args.slice(3) -} else { - args = args.slice(2) -} - -var contractName = args[0] -// slice off name of contract -args = args.slice(1); - -var ContractArtifact = artifacts.require(contractName) - -async function run() { - // TODO support contracts with more than zero constructor parameters - var contract = await ContractArtifact.new(); - var func = args[0] - // slice off name of function, leaving only solidity parameter values - args = args.slice(1) - var data = contract[func].request.apply(null, args)["params"][0]["data"] - console.log(data) -} - -module.exports = async function(callback) { - await run(); - callback(); -} \ No newline at end of file diff --git a/scripts/tests/dataEncodingTests.js b/scripts/tests/dataEncodingTests.js deleted file mode 100644 index 9ab767928..000000000 --- a/scripts/tests/dataEncodingTests.js +++ /dev/null @@ -1,84 +0,0 @@ -const assert = require('assert'); -const util = require('util'); -const exec = util.promisify(require('child_process').exec); -var fs = require('fs') - -describe('transaction data encoding and decoding tests', function() { - // disable timeouts - this.timeout(0); - - var initV2Data = "d76c43c60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aca94ef8bd5ffee41947b4585a84bda5a3d3da6e000000000000000000000000000000000000000000000000000000000000000c"; - var upgradeToAndCallData = "4f1ef286000000000000000000000000023fe1585d8361f0584aaa78c152f94cdcff7b3000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064d76c43c60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aca94ef8bd5ffee41947b4585a84bda5a3d3da6e000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000" - var configureMinterData = "4e44d9560000000000000000000000009c08210cc65b5c9f1961cdbd9ea9bf017522464d000000000000000000000000000000000000000000000000000000003b9aca00" - - it('td001 should return correct data using encodeTxData with --compile flag', async function () { - const { stdout, stderr } = await exec('truffle exec --compile ./scripts/encodeTxData.js FiatTokenV2NewFieldsTest initV2 true 0xaca94ef8bd5ffee41947b4585a84bda5a3d3da6e 12'); - assert(stdout.includes(initV2Data)) - }) - - it('td002 should return correct data using encodeTxData with -c flag', async function () { - const { stdout, stderr } = await exec('truffle exec -c ./scripts/encodeTxData.js FiatTokenV2NewFieldsTest initV2 true 0xaca94ef8bd5ffee41947b4585a84bda5a3d3da6e 12'); - assert(stdout.includes(initV2Data)) - }) - - it('td003 should return correct data using encodeTxData without using compile flag', async function () { - const { stdout, stderr } = await exec('truffle exec ./scripts/encodeTxData.js FiatTokenV2NewFieldsTest initV2 true 0xaca94ef8bd5ffee41947b4585a84bda5a3d3da6e 12'); - assert(stdout.includes(initV2Data)) - }) - - it('td004 should return correct data for FiatTokenV1 method configureMinter', async function () { - const { stdout, stderr } = await exec('truffle exec ./scripts/encodeTxData.js FiatTokenV1 configureMinter 0x9c08210cc65b5c9f1961cdbd9ea9bf017522464d 1000000000'); - assert(stdout.includes(configureMinterData)) - }) - - it("td005 should decode a data string and output decoded result to stdout stream", async function () { - const { stdout, stderr } = await exec("truffle exec ./scripts/decodeTxData.js --truffle-artifact FiatTokenV1 --data " + configureMinterData); - - // trim extra output from truffle - var bracketIndex = stdout.indexOf("{") - var stdoutJson = stdout.substring(bracketIndex) - var decodedData = JSON.parse(stdoutJson); - assert.equal(decodedData.name, "configureMinter") - assert.equal(decodedData.types[0], "address") - assert.equal(decodedData.types[1], "uint256") - assert.equal(decodedData.inputs[0], "9c08210cc65b5c9f1961cdbd9ea9bf017522464d") - assert.equal(decodedData.inputs[1], "1000000000") - }) - - it('td006 should decode a data string and output decoded result to a file', async function () { - await exec("truffle exec ./scripts/decodeTxData.js --truffle-artifact FiatTokenV1 --data " + configureMinterData + " --filename configureMinterTest"); - var decodedDataJson = fs.readFileSync('./scripts/decoded_data/configureMinterTest.json'); - var decodedData = JSON.parse(decodedDataJson); - assert.equal(decodedData.name, "configureMinter") - assert.equal(decodedData.types[0], "address") - assert.equal(decodedData.types[1], "uint256") - assert.equal(decodedData.inputs[0], "9c08210cc65b5c9f1961cdbd9ea9bf017522464d") - assert.equal(decodedData.inputs[1], "1000000000") - }) - - it('td007 should decode a data string for FiatTokenProxy and its byte array input to a hex string', async function () { - await exec ("truffle exec scripts/decodeTxData.js --truffle-artifact FiatTokenProxy --data " + upgradeToAndCallData + " --filename upgradeToAndCallTruffleTest") - var decodedDataJson = fs.readFileSync('./scripts/decoded_data/upgradeToAndCallTruffleTest.json'); - var decodedData = JSON.parse(decodedDataJson); - assert.equal(decodedData.name, "upgradeToAndCall") - assert.equal(decodedData.types[0], "address") - assert.equal(decodedData.types[1], "bytes") - assert.equal(decodedData.inputs[0], "023fe1585d8361f0584aaa78c152f94cdcff7b30") - assert.equal(decodedData.inputs[1], initV2Data) - }) - - it('td008 should decode a data string using --abi-path', async function () { - fiatTokenProxyCompiled = fs.readFileSync("./build/contracts/FiatTokenProxy.json", "utf8"); - fiatTokenProxyJson = JSON.parse(fiatTokenProxyCompiled) - fs.writeFileSync("./scripts/tests/FiatTokenProxy_abi.json", JSON.stringify(fiatTokenProxyJson.abi), 'utf8') - - await exec ("cd scripts && node ./decodeTxData.js --abi-path ./tests/FiatTokenProxy_abi.json --data " + upgradeToAndCallData + " --filename upgradeToAndCallNodeTest") - var decodedDataJson = fs.readFileSync('./scripts/decoded_data/upgradeToAndCallNodeTest.json'); - var decodedData = JSON.parse(decodedDataJson); - assert.equal(decodedData.name, "upgradeToAndCall") - assert.equal(decodedData.types[0], "address") - assert.equal(decodedData.types[1], "bytes") - assert.equal(decodedData.inputs[0], "023fe1585d8361f0584aaa78c152f94cdcff7b30") - assert.equal(decodedData.inputs[1], initV2Data) - }) -}) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4d9c8440b..e8835105d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -57,10 +57,6 @@ accepts@~1.3.4: mime-types "~2.1.18" negotiator "0.6.1" -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - aes-js@^0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" @@ -2177,15 +2173,6 @@ elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" -elliptic@6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - inherits "^2.0.1" - elliptic@^6.2.3: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -2470,14 +2457,7 @@ ethereum-common@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" -ethereum-input-data-decoder@0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/ethereum-input-data-decoder/-/ethereum-input-data-decoder-0.0.12.tgz#e7abd764e76ba6942028051717759234cf64ba6d" - dependencies: - ethereumjs-abi "^0.6.4" - ethers "^2.1.3" - -ethereumjs-abi@^0.6.4, ethereumjs-abi@^0.6.5: +ethereumjs-abi@^0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" dependencies: @@ -2600,49 +2580,6 @@ ethereumjs-wallet@0.6.0: utf8 "^2.1.1" uuid "^2.0.1" -ethers-contracts@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ethers-contracts/-/ethers-contracts-2.2.1.tgz#e2bf5dd5e157313ba454b50c646c8472fcd0a8b3" - dependencies: - ethers-utils "^2.1.0" - -ethers-providers@2.1.19: - version "2.1.19" - resolved "https://registry.yarnpkg.com/ethers-providers/-/ethers-providers-2.1.19.tgz#d597e298f70cfbf8da207c303af0a5cbed5b4cd2" - dependencies: - ethers-utils "^2.1.0" - inherits "2.0.1" - xmlhttprequest "1.8.0" - -ethers-utils@2.1.11, ethers-utils@^2.1.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/ethers-utils/-/ethers-utils-2.1.11.tgz#b27535ca3226118be300211c39c896b1e5e21641" - dependencies: - bn.js "^4.4.0" - hash.js "^1.0.0" - js-sha3 "0.5.7" - xmlhttprequest "1.8.0" - -ethers-wallet@2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/ethers-wallet/-/ethers-wallet-2.1.8.tgz#2819a51d439525ddedeec84992b0b83f59da3cef" - dependencies: - aes-js "3.0.0" - elliptic "6.3.3" - ethers-utils "^2.1.0" - scrypt-js "2.0.3" - setimmediate "1.0.4" - uuid "2.0.1" - -ethers@^2.1.3: - version "2.2.6" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-2.2.6.tgz#d1081c3e132930686fa7a3b508ae4d0ef8bd986a" - dependencies: - ethers-contracts "2.2.1" - ethers-providers "2.1.19" - ethers-utils "2.1.11" - ethers-wallet "2.1.8" - ethjs-abi@0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.1.8.tgz#cd288583ed628cdfadaf8adefa3ba1dbcbca6c18" @@ -3652,10 +3589,6 @@ inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, i version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -4061,10 +3994,6 @@ 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.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - js-sha3@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243" @@ -6542,10 +6471,6 @@ scoped-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" -scrypt-js@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" - scrypt.js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" @@ -6669,10 +6594,6 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -7594,10 +7515,6 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" @@ -7899,7 +7816,7 @@ xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" -xmlhttprequest@*, xmlhttprequest@1.8.0: +xmlhttprequest@*: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"