From 1379f48ad0b73413876e18150594de091685b46a Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Fri, 5 Jun 2020 11:59:27 +0200 Subject: [PATCH 01/11] add dummy test --- package.json | 3 ++- test/unit/Datatokens.test.ts | 11 +++++++++++ test/unit/mocha.opts | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/unit/Datatokens.test.ts create mode 100644 test/unit/mocha.opts diff --git a/package.json b/package.json index b68fd277..5d384294 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "run": "ts-node", "release": "release-it --non-interactive", "changelog": "auto-changelog -p", - "prepublishOnly": "npm run build" + "prepublishOnly": "npm run build", + "test": "mocha --opts test/unit/mocha.opts" }, "repository": { "type": "git", diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts new file mode 100644 index 00000000..7c1c5449 --- /dev/null +++ b/test/unit/Datatokens.test.ts @@ -0,0 +1,11 @@ +import { assert } from 'chai' + +describe('Datatokens', () => { + + describe('#test()', () => { + it('should test', async () => { + const test = true + assert(test === true) + }) + }) +}) diff --git a/test/unit/mocha.opts b/test/unit/mocha.opts new file mode 100644 index 00000000..7a1a04c8 --- /dev/null +++ b/test/unit/mocha.opts @@ -0,0 +1,8 @@ +--require ts-node/register +--require source-map-support/register +--require mock-local-storage +--full-trace +--bail +--exit +--timeout 20000 +test/unit/config.ts test/unit/**/*.test.ts \ No newline at end of file From 85d5dc64e3602a8a0170b3a455154ba58a5fe164 Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Fri, 5 Jun 2020 16:21:07 +0200 Subject: [PATCH 02/11] wip add contracts deploy --- src/datatokens/FeeManagerABI.json | 132 ++++++++++++++++++++++++++++++ test/unit/Datatokens.test.ts | 25 +++++- 2 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 src/datatokens/FeeManagerABI.json diff --git a/src/datatokens/FeeManagerABI.json b/src/datatokens/FeeManagerABI.json new file mode 100644 index 00000000..dee6b4f1 --- /dev/null +++ b/src/datatokens/FeeManagerABI.json @@ -0,0 +1,132 @@ +[ + { + "constant": true, + "inputs": [ + { + "name": "tokens", + "type": "uint256" + }, + { + "name": "cap", + "type": "uint256" + } + ], + "name": "calculateFee", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "number", + "type": "uint256" + } + ], + "name": "calculateRange", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": false, + "inputs": [], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 7c1c5449..b5e314f9 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -1,6 +1,29 @@ import { assert } from 'chai' +const Web3 = require('web3'); +const web3 = new Web3("http://127.0.0.1:8545"); + +const factoryABI = require('../../src/datatokens/FactoryABI.json') +const datatokensABI = require('../../src/datatokens/DatatokensABI.json') +const feemanagerABI = require('../../src/datatokens/FeeManagerABI.json') + describe('Datatokens', () => { + + beforeEach(async () => { + const accounts = await web3.eth.getAccounts() + const Factory = new web3.eth.Contract(factoryABI) + const Template = new web3.eth.Contract(factoryABI) + const FeeManager = new web3.eth.Contract(feemanagerABI) + + let blob = 'https://example.com/dataset-1' + let minter = accounts[0] + let zeroAddress = '0x0000000000000000000000000000000000000000' + let cap = 1400000000 + let feeManager = await FeeManager.new() + let template = await Template.new('Template Contract', 'TEMPLATE', minter, cap, blob, feeManager.address) + let factory = await Factory.new(template.address, feeManager.address) + + }) describe('#test()', () => { it('should test', async () => { @@ -8,4 +31,4 @@ describe('Datatokens', () => { assert(test === true) }) }) -}) +}) \ No newline at end of file From 81e33fa99f09bc537be117dced7a1b9f2dda396d Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Mon, 8 Jun 2020 12:54:04 +0200 Subject: [PATCH 03/11] add deploy to ganache contracts --- test/unit/Datatokens.test.ts | 74 ++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 8 deletions(-) diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index b5e314f9..5031c9ef 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -12,17 +12,75 @@ describe('Datatokens', () => { beforeEach(async () => { const accounts = await web3.eth.getAccounts() const Factory = new web3.eth.Contract(factoryABI) - const Template = new web3.eth.Contract(factoryABI) + const Template = new web3.eth.Contract(datatokensABI) const FeeManager = new web3.eth.Contract(feemanagerABI) - let blob = 'https://example.com/dataset-1' - let minter = accounts[0] - let zeroAddress = '0x0000000000000000000000000000000000000000' - let cap = 1400000000 - let feeManager = await FeeManager.new() - let template = await Template.new('Template Contract', 'TEMPLATE', minter, cap, blob, feeManager.address) - let factory = await Factory.new(template.address, feeManager.address) + let blob = 'https://example.com/dataset-1' + let minter = accounts[0] + let zeroAddress = '0x0000000000000000000000000000000000000000' + let cap = 1400000000 + let feeManagerBytecode = "0x608060405234801561001057600080fd5b506103ec806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806334e731221461005857806390d3d862146100a4575b600080fd5b61008e6004803603604081101561006e57600080fd5b8101908080359060200190929190803590602001909291905050506100e6565b6040518082815260200191505060405180910390f35b6100d0600480360360208110156100ba57600080fd5b81019080803590602001909291905050506101bc565b6040518082815260200191505060405180910390f35b60008282101561015e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b6000610169846101bc565b9050600061018261abe08361020990919063ffffffff16565b90506101b2600a6101a4610195876101bc565b8461028f90919063ffffffff16565b61028f90919063ffffffff16565b9250505092915050565b600080829050600080905060008090505b600a83106101fe576101e9600a8461028f90919063ffffffff16565b925060018201915080806001019150506101cd565b508092505050919050565b60008083141561021c5760009050610289565b600082840290508284828161022d57fe5b0414610284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103a06021913960400191505060405180910390fd5b809150505b92915050565b60006102d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506102d9565b905092915050565b60008083118290610385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161039157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820735116290a59582c41578d47cdb770b710e8e0c8f396b9079b0e3a7b077eb7e00029" + let estGas = await FeeManager.deploy({ + data:feeManagerBytecode + }) + .estimateGas(function(err, estGas){ + return estGas + }) + + let feeManager = await FeeManager.deploy({data:feeManagerBytecode}) + .send({ + from: minter, + gas: estGas+1, + gasPrice: '12345678' + }) + .then(function(contract){ + return contract.options.address + }) + + let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef938038062002ef9833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e726030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec66033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e426030913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ea26024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a7806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127d06030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126fe6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126826035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161278360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061272f6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128246033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126526030913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061275f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128576025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128006024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127ab6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126d8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820b54d9723feafd7361ec91ee50cac2c20a74cae682da4044e9cb4ca91f228d6a5002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" + estGas = await Template.deploy({ + data:templateBytecode, + arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] + }) + .estimateGas(function(err, estGas){ + return estGas + }) + + let template = await Template.deploy({ + data:templateBytecode, + arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] + }) + .send({ + from: minter, + gas: estGas+1, + gasPrice: '12345678' + }) + .then(function(contract){ + return contract.options.address + }) + + let factoryBytecode = "0x6080604052600060025534801561001557600080fd5b50604051604080610dfc8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610dd0602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610c2f806101a16000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806345576f9414610058578063e939567914610153575b600080fd5b6101116004803603602081101561006e57600080fd5b810190808035906020019064010000000081111561008b57600080fd5b82018360208201111561009d57600080fd5b803590602001918460018302840111640100000000831117156100bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017f6004803603602081101561016957600080fd5b8101908080359060200190929190505050610977565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610227600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ac6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610bcc6038913960400191505060405180910390fd5b60606102bc600254610977565b905060606102cb600254610977565b905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b838110156104125780820151818401526020810190506103f7565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b8381101561047857808201518184015260208101905061045d565b50505050905090810190601f1680156104a55780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156104de5780820151818401526020810190506104c3565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505061065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610ba0602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561074957808201518184015260208101905061072e565b50505050905090810190601f1680156107765780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106107b95780518252602082019150602081019050602083039250610796565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b6020831061081a57805182526020820191506020810190506020830392506107f7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610921578082015181840152602081019050610906565b50505050905090810190601f16801561094e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606060008214156109bf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610ac1565b600082905060005b600082146109e9578080600101915050600a82816109e157fe5b0491506109c7565b6060816040519080825280601f01601f191660200182016040528015610a1e5781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610ab957600a8481610a3f57fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610a7857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610ab157fe5b049350610a2d565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a7230582099a26461b126314f2bebc2f3e92b238004eaf4cf4ddb267bd3707ac6ca73011a0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" + estGas = await Factory.deploy({ + data:factoryBytecode, + arguments:[template, feeManager] + }) + .estimateGas(function(err, estGas){ + return estGas + }) + + let factory = await Factory.deploy({ + data:factoryBytecode, + arguments:[template, feeManager] + }) + .send({ + from: minter, + gas: estGas+1, + gasPrice: '12345678' + }) + .then(function(contract){ + return contract.options.address + }) }) describe('#test()', () => { From 77b052286f9e54a522892e1fd22d7cad6ad530d8 Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Mon, 8 Jun 2020 13:10:07 +0200 Subject: [PATCH 04/11] add comments --- test/unit/Datatokens.test.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 5031c9ef..4022e355 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -11,6 +11,7 @@ describe('Datatokens', () => { beforeEach(async () => { const accounts = await web3.eth.getAccounts() + const Factory = new web3.eth.Contract(factoryABI) const Template = new web3.eth.Contract(datatokensABI) const FeeManager = new web3.eth.Contract(feemanagerABI) @@ -20,14 +21,16 @@ describe('Datatokens', () => { let zeroAddress = '0x0000000000000000000000000000000000000000' let cap = 1400000000 + // Deploy FeeManager let feeManagerBytecode = "0x608060405234801561001057600080fd5b506103ec806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806334e731221461005857806390d3d862146100a4575b600080fd5b61008e6004803603604081101561006e57600080fd5b8101908080359060200190929190803590602001909291905050506100e6565b6040518082815260200191505060405180910390f35b6100d0600480360360208110156100ba57600080fd5b81019080803590602001909291905050506101bc565b6040518082815260200191505060405180910390f35b60008282101561015e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b6000610169846101bc565b9050600061018261abe08361020990919063ffffffff16565b90506101b2600a6101a4610195876101bc565b8461028f90919063ffffffff16565b61028f90919063ffffffff16565b9250505092915050565b600080829050600080905060008090505b600a83106101fe576101e9600a8461028f90919063ffffffff16565b925060018201915080806001019150506101cd565b508092505050919050565b60008083141561021c5760009050610289565b600082840290508284828161022d57fe5b0414610284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103a06021913960400191505060405180910390fd5b809150505b92915050565b60006102d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506102d9565b905092915050565b60008083118290610385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161039157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820735116290a59582c41578d47cdb770b710e8e0c8f396b9079b0e3a7b077eb7e00029" + // get est gascost let estGas = await FeeManager.deploy({ data:feeManagerBytecode }) .estimateGas(function(err, estGas){ return estGas }) - + // deploy the contract and get it's address let feeManager = await FeeManager.deploy({data:feeManagerBytecode}) .send({ from: minter, @@ -38,7 +41,9 @@ describe('Datatokens', () => { return contract.options.address }) + // Deploy Template let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef938038062002ef9833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e726030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec66033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e426030913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ea26024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a7806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127d06030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126fe6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126826035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161278360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061272f6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128246033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126526030913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061275f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128576025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128006024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127ab6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126d8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820b54d9723feafd7361ec91ee50cac2c20a74cae682da4044e9cb4ca91f228d6a5002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" + // get est gascost estGas = await Template.deploy({ data:templateBytecode, arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] @@ -46,7 +51,7 @@ describe('Datatokens', () => { .estimateGas(function(err, estGas){ return estGas }) - + // deploy the contract and get it's address let template = await Template.deploy({ data:templateBytecode, arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] @@ -60,6 +65,7 @@ describe('Datatokens', () => { return contract.options.address }) + // Deploy Factory let factoryBytecode = "0x6080604052600060025534801561001557600080fd5b50604051604080610dfc8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610dd0602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610c2f806101a16000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806345576f9414610058578063e939567914610153575b600080fd5b6101116004803603602081101561006e57600080fd5b810190808035906020019064010000000081111561008b57600080fd5b82018360208201111561009d57600080fd5b803590602001918460018302840111640100000000831117156100bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017f6004803603602081101561016957600080fd5b8101908080359060200190929190505050610977565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610227600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ac6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610bcc6038913960400191505060405180910390fd5b60606102bc600254610977565b905060606102cb600254610977565b905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b838110156104125780820151818401526020810190506103f7565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b8381101561047857808201518184015260208101905061045d565b50505050905090810190601f1680156104a55780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156104de5780820151818401526020810190506104c3565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505061065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610ba0602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561074957808201518184015260208101905061072e565b50505050905090810190601f1680156107765780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106107b95780518252602082019150602081019050602083039250610796565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b6020831061081a57805182526020820191506020810190506020830392506107f7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610921578082015181840152602081019050610906565b50505050905090810190601f16801561094e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606060008214156109bf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610ac1565b600082905060005b600082146109e9578080600101915050600a82816109e157fe5b0491506109c7565b6060816040519080825280601f01601f191660200182016040528015610a1e5781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610ab957600a8481610a3f57fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610a7857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610ab157fe5b049350610a2d565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a7230582099a26461b126314f2bebc2f3e92b238004eaf4cf4ddb267bd3707ac6ca73011a0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" estGas = await Factory.deploy({ data:factoryBytecode, @@ -68,7 +74,7 @@ describe('Datatokens', () => { .estimateGas(function(err, estGas){ return estGas }) - + // deploy the contract and get it's address let factory = await Factory.deploy({ data:factoryBytecode, arguments:[template, feeManager] From 746d88eca88b1a36d24777c96c69cfa64355b300 Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Mon, 8 Jun 2020 16:15:28 +0200 Subject: [PATCH 05/11] add datatoken.create test --- src/datatokens/Datatokens.ts | 36 +++++++++--------------- test/unit/Datatokens.test.ts | 53 ++++++++++++++++++++++++------------ 2 files changed, 49 insertions(+), 40 deletions(-) diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index b2f72525..1de56c81 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -5,7 +5,7 @@ const defaultDatatokensABI = require('../datatokens/DatatokensABI.json') /** * Provides a interface to DataTokens - + */ export class DataTokens { public factoryAddress: string @@ -46,12 +46,22 @@ export class DataTokens { ): Promise { // Create factory contract object const factory = new this.web3.eth.Contract(this.factoryABI, this.factoryAddress, { - from: account.getId() + from: account }) + const estGas = await factory.methods + .createToken(metaDataStoreURI) + .estimateGas(function(err, estGas){ + return estGas + }) // Invoke createToken function of the contract const trxReceipt = await factory.methods .createToken(metaDataStoreURI) - .send() + .send({ + from: account, + gas: estGas+1, + gasPrice: '30000000000000' + }) + let tokenAddress = null try { tokenAddress = trxReceipt.events.TokenCreated.returnValues[0] @@ -84,26 +94,6 @@ export class DataTokens { return trxReceipt } - /** - * Approve & Lock for a specified number of blocks (reverts after that if not used) - * @param {String} dataTokenAddress - * @param {String} toAddress - * @param {Number} amount - * @param {Number} blocks - * @param {Account} account - * @return {Promise} transactionId - */ - public async approveAndLock( - dataTokenAddress: string, - toAddress: string, - amount: number, - blocks: number, - account: Account - ): Promise { - // TO DO - return '' - } - /** * Mint * @param {String} dataTokenAddress diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 4022e355..12f3d33c 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -1,4 +1,5 @@ import { assert } from 'chai' +import { DataTokens } from '../../src/datatokens/Datatokens' const Web3 = require('web3'); const web3 = new Web3("http://127.0.0.1:8545"); @@ -7,19 +8,32 @@ const factoryABI = require('../../src/datatokens/FactoryABI.json') const datatokensABI = require('../../src/datatokens/DatatokensABI.json') const feemanagerABI = require('../../src/datatokens/FeeManagerABI.json') -describe('Datatokens', () => { - +describe('DataTokens', () => { + let Factory + let Template + let FeeManager + + let feeManager + let template + let factory + + let accounts + let blob + let minter + let zeroAddress + let cap + beforeEach(async () => { - const accounts = await web3.eth.getAccounts() + accounts = await web3.eth.getAccounts() - const Factory = new web3.eth.Contract(factoryABI) - const Template = new web3.eth.Contract(datatokensABI) - const FeeManager = new web3.eth.Contract(feemanagerABI) + Factory = new web3.eth.Contract(factoryABI) + Template = new web3.eth.Contract(datatokensABI) + FeeManager = new web3.eth.Contract(feemanagerABI) - let blob = 'https://example.com/dataset-1' - let minter = accounts[0] - let zeroAddress = '0x0000000000000000000000000000000000000000' - let cap = 1400000000 + blob = 'https://example.com/dataset-1' + minter = accounts[0] + zeroAddress = '0x0000000000000000000000000000000000000000' + cap = 1400000000 // Deploy FeeManager let feeManagerBytecode = "0x608060405234801561001057600080fd5b506103ec806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806334e731221461005857806390d3d862146100a4575b600080fd5b61008e6004803603604081101561006e57600080fd5b8101908080359060200190929190803590602001909291905050506100e6565b6040518082815260200191505060405180910390f35b6100d0600480360360208110156100ba57600080fd5b81019080803590602001909291905050506101bc565b6040518082815260200191505060405180910390f35b60008282101561015e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b6000610169846101bc565b9050600061018261abe08361020990919063ffffffff16565b90506101b2600a6101a4610195876101bc565b8461028f90919063ffffffff16565b61028f90919063ffffffff16565b9250505092915050565b600080829050600080905060008090505b600a83106101fe576101e9600a8461028f90919063ffffffff16565b925060018201915080806001019150506101cd565b508092505050919050565b60008083141561021c5760009050610289565b600082840290508284828161022d57fe5b0414610284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103a06021913960400191505060405180910390fd5b809150505b92915050565b60006102d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506102d9565b905092915050565b60008083118290610385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161039157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820735116290a59582c41578d47cdb770b710e8e0c8f396b9079b0e3a7b077eb7e00029" @@ -31,7 +45,7 @@ describe('Datatokens', () => { return estGas }) // deploy the contract and get it's address - let feeManager = await FeeManager.deploy({data:feeManagerBytecode}) + feeManager = await FeeManager.deploy({data:feeManagerBytecode}) .send({ from: minter, gas: estGas+1, @@ -52,7 +66,7 @@ describe('Datatokens', () => { return estGas }) // deploy the contract and get it's address - let template = await Template.deploy({ + template = await Template.deploy({ data:templateBytecode, arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] }) @@ -75,7 +89,7 @@ describe('Datatokens', () => { return estGas }) // deploy the contract and get it's address - let factory = await Factory.deploy({ + factory = await Factory.deploy({ data:factoryBytecode, arguments:[template, feeManager] }) @@ -89,10 +103,15 @@ describe('Datatokens', () => { }) }) - describe('#test()', () => { - it('should test', async () => { - const test = true - assert(test === true) + describe('#test', () => { + it('should create Datatoken object', async () => { + const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + assert(datatoken !== null) + }) + + it('should create Datatoken contract', async () => { + const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + await datatoken.create(blob, minter) }) }) }) \ No newline at end of file From 2124ff2c82b728c625bc287cbb916adf4d42f93f Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Tue, 9 Jun 2020 13:06:01 +0200 Subject: [PATCH 06/11] wip fix mint test --- src/datatokens/Datatokens.ts | 32 ++++++++++++++++++++++--------- src/datatokens/FactoryABI.json | 23 ++++++++++++++++++++++ src/datatokens/FeeManagerABI.json | 2 +- test/unit/Datatokens.test.ts | 18 +++++++++++++---- 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index 1de56c81..e1b58a33 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -55,12 +55,12 @@ export class DataTokens { }) // Invoke createToken function of the contract const trxReceipt = await factory.methods - .createToken(metaDataStoreURI) - .send({ - from: account, - gas: estGas+1, - gasPrice: '30000000000000' - }) + .createToken(metaDataStoreURI) + .send({ + from: account, + gas: estGas+1, + gasPrice: '3000000000' + }) let tokenAddress = null try { @@ -108,13 +108,27 @@ export class DataTokens { amount: number, toAddress?: string ): Promise { - const address = toAddress || account.getId() + const address = toAddress || account const datatoken = new this.web3.eth.Contract( this.datatokensABI, dataTokenAddress, - { from: account.getId() } + { from: account } ) - const trxReceipt = await datatoken.methods.mint(address, amount).send() + let fee = await this.web3.utils.toWei('1', 'ether') + + const estGas = await datatoken.methods.mint(address, amount) + .estimateGas(function(err, estGas){ + return estGas + }) + + const trxReceipt = await datatoken.methods.mint(address, amount) + .send({ + value:fee, + from:account, + gas: estGas*2, + gasPrice: '3000000000' + }) + return trxReceipt } diff --git a/src/datatokens/FactoryABI.json b/src/datatokens/FactoryABI.json index 748fc10a..585bd738 100644 --- a/src/datatokens/FactoryABI.json +++ b/src/datatokens/FactoryABI.json @@ -1,4 +1,27 @@ [ + { + "constant": true, + "inputs": [ + { + "name": "str1", + "type": "string" + }, + { + "name": "str2", + "type": "string" + } + ], + "name": "concatenateStrings", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [ diff --git a/src/datatokens/FeeManagerABI.json b/src/datatokens/FeeManagerABI.json index dee6b4f1..ca611959 100644 --- a/src/datatokens/FeeManagerABI.json +++ b/src/datatokens/FeeManagerABI.json @@ -129,4 +129,4 @@ "stateMutability": "nonpayable", "type": "function" } -] \ No newline at end of file + ] \ No newline at end of file diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 12f3d33c..6fa5ab8c 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -22,6 +22,7 @@ describe('DataTokens', () => { let minter let zeroAddress let cap + let tokenAmount beforeEach(async () => { accounts = await web3.eth.getAccounts() @@ -34,9 +35,10 @@ describe('DataTokens', () => { minter = accounts[0] zeroAddress = '0x0000000000000000000000000000000000000000' cap = 1400000000 + tokenAmount = 1 // Deploy FeeManager - let feeManagerBytecode = "0x608060405234801561001057600080fd5b506103ec806100206000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806334e731221461005857806390d3d862146100a4575b600080fd5b61008e6004803603604081101561006e57600080fd5b8101908080359060200190929190803590602001909291905050506100e6565b6040518082815260200191505060405180910390f35b6100d0600480360360208110156100ba57600080fd5b81019080803590602001909291905050506101bc565b6040518082815260200191505060405180910390f35b60008282101561015e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b6000610169846101bc565b9050600061018261abe08361020990919063ffffffff16565b90506101b2600a6101a4610195876101bc565b8461028f90919063ffffffff16565b61028f90919063ffffffff16565b9250505092915050565b600080829050600080905060008090505b600a83106101fe576101e9600a8461028f90919063ffffffff16565b925060018201915080806001019150506101cd565b508092505050919050565b60008083141561021c5760009050610289565b600082840290508284828161022d57fe5b0414610284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103a06021913960400191505060405180910390fd5b809150505b92915050565b60006102d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506102d9565b905092915050565b60008083118290610385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561034a57808201518184015260208101905061032f565b50505050905090810190601f1680156103775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161039157fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820735116290a59582c41578d47cdb770b710e8e0c8f396b9079b0e3a7b077eb7e00029" + let feeManagerBytecode = "0x608060405234801561001057600080fd5b50600061002a6100cd640100000000026401000000009004565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d5565b600033905090565b610a61806100e46000396000f3fe60806040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161006b5780638da5cb5b146101165780638f32d59b1461016d57806390d3d8621461019c578063f2fde38b146101eb5761008d565b806334e731221461008f5780633ccfd60b146100e8578063715018a6146100ff575b005b34801561009b57600080fd5b506100d2600480360360408110156100b257600080fd5b81019080803590602001909291908035906020019092919050505061023c565b6040518082815260200191505060405180910390f35b3480156100f457600080fd5b506100fd610312565b005b34801561010b57600080fd5b50610114610479565b005b34801561012257600080fd5b5061012b6105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017957600080fd5b506101826105db565b604051808215151515815260200191505060405180910390f35b3480156101a857600080fd5b506101d5600480360360208110156101bf57600080fd5b8101908080359060200190929190505050610639565b6040518082815260200191505060405180910390f35b3480156101f757600080fd5b5061023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610686565b005b6000828210156102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b60006102bf84610639565b905060006102d861abe08361070c90919063ffffffff16565b9050610308600a6102fa6102eb87610639565b8461079290919063ffffffff16565b61079290919063ffffffff16565b9250505092915050565b61031a6105db565b61038c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111610419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4665654d616e616765723a205a65726f2062616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610476573d6000803e3d6000fd5b50565b6104816105db565b6104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061d6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600080829050600080905060008090505b600a831061067b57610666600a8461079290919063ffffffff16565b9250600182019150808060010191505061064a565b508092505050919050565b61068e6105db565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610709816107e4565b50565b60008083141561071f576000905061078c565b600082840290508284828161073057fe5b0414610787576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a156021913960400191505060405180910390fd5b809150505b92915050565b60006107d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610928565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109ef6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816109e057fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820770a5bd057ba57e1f78e0d5802439ff9854a0cefbd22024a4c1b401342d58c840029" // get est gascost let estGas = await FeeManager.deploy({ data:feeManagerBytecode @@ -56,7 +58,7 @@ describe('DataTokens', () => { }) // Deploy Template - let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef938038062002ef9833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e726030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec66033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e426030913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ea26024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a7806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127d06030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126fe6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126826035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126b76021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161278360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061272f6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128246033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126526030913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061275f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128576025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128006024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127ab6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126d8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820b54d9723feafd7361ec91ee50cac2c20a74cae682da4044e9cb4ca91f228d6a5002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c206163636573732064656e69656444617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" + let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef738038062002ef7833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e416030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec46033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002e95602f913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002e716024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a6806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127cf6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126ce6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126526035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161275360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126ff6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128236033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061277b602f913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061272f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128566025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127ff6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127aa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582083b0e963470108678e6928edbaf294e07eb4d1ae64d8849191eabff23d426d97002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" // get est gascost estGas = await Template.deploy({ data:templateBytecode, @@ -80,7 +82,7 @@ describe('DataTokens', () => { }) // Deploy Factory - let factoryBytecode = "0x6080604052600060025534801561001557600080fd5b50604051604080610dfc8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610dd0602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610c2f806101a16000396000f3fe608060405234801561001057600080fd5b5060043610610053576000357c01000000000000000000000000000000000000000000000000000000009004806345576f9414610058578063e939567914610153575b600080fd5b6101116004803603602081101561006e57600080fd5b810190808035906020019064010000000081111561008b57600080fd5b82018360208201111561009d57600080fd5b803590602001918460018302840111640100000000831117156100bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017f6004803603602081101561016957600080fd5b8101908080359060200190929190505050610977565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610227600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ac6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610bcc6038913960400191505060405180910390fd5b60606102bc600254610977565b905060606102cb600254610977565b905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b838110156104125780820151818401526020810190506103f7565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b8381101561047857808201518184015260208101905061045d565b50505050905090810190601f1680156104a55780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156104de5780820151818401526020810190506104c3565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b505050506040513d602081101561055b57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505061065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610ba0602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561074957808201518184015260208101905061072e565b50505050905090810190601f1680156107765780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106107b95780518252602082019150602081019050602083039250610796565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b6020831061081a57805182526020820191506020810190506020830392506107f7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610921578082015181840152602081019050610906565b50505050905090810190601f16801561094e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606060008214156109bf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610ac1565b600082905060005b600082146109e9578080600101915050600a82816109e157fe5b0491506109c7565b6060816040519080825280601f01601f191660200182016040528015610a1e5781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610ab957600a8481610a3f57fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610a7857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610ab157fe5b049350610a2d565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a7230582099a26461b126314f2bebc2f3e92b238004eaf4cf4ddb267bd3707ac6ca73011a0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" + let factoryBytecode = "0x6080604052600160025534801561001557600080fd5b506040516040806110ce8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806110a2602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610f01806101a16000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b81565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610c49565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610485576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e9e6038913960400191505060405180910390fd5b60606104d06040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104cb600254610c49565b610b81565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b8381101561061c578082015181840152602081019050610601565b50505050905090810190601f1680156106495780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b83811015610682578082015181840152602081019050610667565b50505050905090810190601f1680156106af5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156106e85780820151818401526020810190506106cd565b50505050905090810190601f1680156107155780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b505050506040513d602081101561076557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b8101908080519060200190929190505050610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e72602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610953578082015181840152602081019050610938565b50505050905090810190601f1680156109805780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106109c357805182526020820191506020810190506020830392506109a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b60208310610a245780518252602082019150602081019050602083039250610a01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b2b578082015181840152602081019050610b10565b50505050905090810190601f168015610b585780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610bbb5780518252602082019150602081019050602083039250610b98565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610c0c5780518252602082019150602081019050602083039250610be9565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c91576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d93565b600082905060005b60008214610cbb578080600101915050600a8281610cb357fe5b049150610c99565b6060816040519080825280601f01601f191660200182016040528015610cf05781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d8b57600a8481610d1157fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610d4a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d8357fe5b049350610cff565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058202cbfb0e269d688ce768ad0f31ff6e4db1f8c387141f96271ce308b6d39f6658f0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" estGas = await Factory.deploy({ data:factoryBytecode, arguments:[template, feeManager] @@ -111,7 +113,15 @@ describe('DataTokens', () => { it('should create Datatoken contract', async () => { const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - await datatoken.create(blob, minter) + const token = await datatoken.create(blob, minter) + assert(token !== null) + }) + + it('should mint Datatokens', async () => { + const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + const tokenAddress = await datatoken.create(blob, minter) + await datatoken.mint(tokenAddress, minter, tokenAmount) + // assert(token !== null) }) }) }) \ No newline at end of file From a3f9bf24f729b2253a6296fd87936ade2602f2da Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Wed, 10 Jun 2020 14:15:33 +0200 Subject: [PATCH 07/11] wip move deployment to TestContractsHandler --- package-lock.json | 255 ++++++++++++++++++++++++++++-- package.json | 1 + src/datatokens/DatatokensABI.json | 8 - src/datatokens/FactoryABI.json | 4 - src/datatokens/FeeManagerABI.json | 132 ---------------- test/unit/Datatokens.test.ts | 243 +++++++++++++++------------- test/unit/TestContractHandler.ts | 83 ++++++++++ 7 files changed, 459 insertions(+), 267 deletions(-) delete mode 100644 src/datatokens/FeeManagerABI.json create mode 100644 test/unit/TestContractHandler.ts diff --git a/package-lock.json b/package-lock.json index 46f355aa..64c763bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -487,6 +487,17 @@ "@ethersproject/logger": ">=5.0.0-beta.137" } }, + "@ethersproject/signing-key": { + "version": "5.0.0-beta.136", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.0-beta.136.tgz", + "integrity": "sha512-iFIpafhDoxziOsnQaq39Hzdedji3cnuJymBHuLbO/elKZBEFrAoxPNE5YroxXdug634gncy5xDYDzmsIZ9y7mg==", + "requires": { + "@ethersproject/bytes": ">=5.0.0-beta.137", + "@ethersproject/logger": ">=5.0.0-beta.137", + "@ethersproject/properties": ">=5.0.0-beta.140", + "elliptic": "6.5.2" + } + }, "@ethersproject/strings": { "version": "5.0.0-beta.137", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.0-beta.137.tgz", @@ -497,6 +508,22 @@ "@ethersproject/logger": ">=5.0.0-beta.137" } }, + "@ethersproject/transactions": { + "version": "5.0.0-beta.136", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.0-beta.136.tgz", + "integrity": "sha512-IActPKqttlerqexp0+3bVHiFAfQ5/kjaQ+kSwjM8+vdOjvncBQWLF5NHorpu2ikQM6ub1daPwTWZn1JJeKvhkA==", + "requires": { + "@ethersproject/address": ">=5.0.0-beta.134", + "@ethersproject/bignumber": ">=5.0.0-beta.138", + "@ethersproject/bytes": ">=5.0.0-beta.137", + "@ethersproject/constants": ">=5.0.0-beta.133", + "@ethersproject/keccak256": ">=5.0.0-beta.131", + "@ethersproject/logger": ">=5.0.0-beta.137", + "@ethersproject/properties": ">=5.0.0-beta.140", + "@ethersproject/rlp": ">=5.0.0-beta.132", + "@ethersproject/signing-key": ">=5.0.0-beta.135" + } + }, "@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -14312,6 +14339,24 @@ "web3-eth-personal": "1.2.8", "web3-net": "1.2.8", "web3-utils": "1.2.8" + }, + "dependencies": { + "web3-eth-contract": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.8.tgz", + "integrity": "sha512-EWRLVhZksbzGAyHd7RaOsakjCJBA2BREWiJmBDlrxDBqw8HltXFzKdkRug/mwVNa5ZYMabKSRF/MMh0Sx06CFw==", + "requires": { + "@types/bn.js": "^4.11.4", + "underscore": "1.9.1", + "web3-core": "1.2.8", + "web3-core-helpers": "1.2.8", + "web3-core-method": "1.2.8", + "web3-core-promievent": "1.2.8", + "web3-core-subscriptions": "1.2.8", + "web3-eth-abi": "1.2.8", + "web3-utils": "1.2.8" + } + } } }, "web3-eth-abi": { @@ -14360,19 +14405,191 @@ } }, "web3-eth-contract": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.8.tgz", - "integrity": "sha512-EWRLVhZksbzGAyHd7RaOsakjCJBA2BREWiJmBDlrxDBqw8HltXFzKdkRug/mwVNa5ZYMabKSRF/MMh0Sx06CFw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.9.tgz", + "integrity": "sha512-PYMvJf7EG/HyssUZa+pXrc8IB06K/YFfWYyW4R7ed3sab+9wWUys1TlWxBCBuiBXOokSAyM6H6P6/cKEx8FT8Q==", "requires": { "@types/bn.js": "^4.11.4", "underscore": "1.9.1", - "web3-core": "1.2.8", - "web3-core-helpers": "1.2.8", - "web3-core-method": "1.2.8", - "web3-core-promievent": "1.2.8", - "web3-core-subscriptions": "1.2.8", - "web3-eth-abi": "1.2.8", - "web3-utils": "1.2.8" + "web3-core": "1.2.9", + "web3-core-helpers": "1.2.9", + "web3-core-method": "1.2.9", + "web3-core-promievent": "1.2.9", + "web3-core-subscriptions": "1.2.9", + "web3-eth-abi": "1.2.9", + "web3-utils": "1.2.9" + }, + "dependencies": { + "@types/node": { + "version": "12.12.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz", + "integrity": "sha512-yzBInQFhdY8kaZmqoL2+3U5dSTMrKaYcb561VU+lDzAYvqt+2lojvBEy+hmpSNuXnPTx7m9+04CzWYOUqWME2A==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "web3-core": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.9.tgz", + "integrity": "sha512-fSYv21IP658Ty2wAuU9iqmW7V+75DOYMVZsDH/c14jcF/1VXnedOcxzxSj3vArsCvXZNe6XC5/wAuGZyQwR9RA==", + "requires": { + "@types/bn.js": "^4.11.4", + "@types/node": "^12.6.1", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.2.9", + "web3-core-method": "1.2.9", + "web3-core-requestmanager": "1.2.9", + "web3-utils": "1.2.9" + } + }, + "web3-core-helpers": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.9.tgz", + "integrity": "sha512-t0WAG3orLCE3lqi77ZoSRNFok3VQWZXTniZigDQjyOJYMAX7BU3F3js8HKbjVnAxlX3tiKoDxI0KBk9F3AxYuw==", + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.9", + "web3-utils": "1.2.9" + } + }, + "web3-core-method": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.9.tgz", + "integrity": "sha512-bjsIoqP3gs7A/gP8+QeLUCyOKJ8bopteCSNbCX36Pxk6TYfYWNuC6hP+2GzUuqdP3xaZNe+XEElQFUNpR3oyAg==", + "requires": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.9", + "web3-core-promievent": "1.2.9", + "web3-core-subscriptions": "1.2.9", + "web3-utils": "1.2.9" + } + }, + "web3-core-promievent": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.9.tgz", + "integrity": "sha512-0eAUA2zjgXTleSrnc1wdoKQPPIHU6KHf4fAscu4W9kKrR+mqP1KsjYrxY9wUyjNnXxfQ+5M29ipvbiaK8OqdOw==", + "requires": { + "eventemitter3": "3.1.2" + } + }, + "web3-core-requestmanager": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.9.tgz", + "integrity": "sha512-1PwKV2m46ALUnIN5VPPgjOj8yMLJhhqZYvYJE34hTN5SErOkwhzx5zScvo5MN7v7KyQGFnpVCZKKGCiEnDmtFA==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.9", + "web3-providers-http": "1.2.9", + "web3-providers-ipc": "1.2.9", + "web3-providers-ws": "1.2.9" + } + }, + "web3-core-subscriptions": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.9.tgz", + "integrity": "sha512-Y48TvXPSPxEM33OmXjGVDMzTd0j8X0t2+sDw66haeBS8eYnrEzasWuBZZXDq0zNUsqyxItgBGDn+cszkgEnFqg==", + "requires": { + "eventemitter3": "3.1.2", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.9" + } + }, + "web3-eth-abi": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.9.tgz", + "integrity": "sha512-3YwUYbh/DMfDbhMWEebAdjSd5bj3ZQieOjLzWFHU23CaLEqT34sUix1lba+hgUH/EN6A7bKAuKOhR3p0OvTn7Q==", + "requires": { + "@ethersproject/abi": "5.0.0-beta.153", + "underscore": "1.9.1", + "web3-utils": "1.2.9" + } + }, + "web3-eth-iban": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.9.tgz", + "integrity": "sha512-RtdVvJE0pyg9dHLy0GzDiqgnLnssSzfz/JYguhC1wsj9+Gnq1M6Diy3NixACWUAp6ty/zafyOaZnNQ+JuH9TjQ==", + "requires": { + "bn.js": "4.11.8", + "web3-utils": "1.2.9" + } + }, + "web3-providers-http": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.9.tgz", + "integrity": "sha512-F956tCIj60Ttr0UvEHWFIhx+be3He8msoPzyA44/kfzzYoMAsCFRn5cf0zQG6al0znE75g6HlWVSN6s3yAh51A==", + "requires": { + "web3-core-helpers": "1.2.9", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.9.tgz", + "integrity": "sha512-NQ8QnBleoHA2qTJlqoWu7EJAD/FR5uimf7Ielzk4Z2z+m+6UAuJdJMSuQNj+Umhz9L/Ys6vpS1vHx9NizFl+aQ==", + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.9" + } + }, + "web3-providers-ws": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.9.tgz", + "integrity": "sha512-6+UpvINeI//dglZoAKStUXqxDOXJy6Iitv2z3dbgInG4zb8tkYl/VBDL80UjUg3ZvzWG0g7EKY2nRPEpON2TFA==", + "requires": { + "eventemitter3": "^4.0.0", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.9", + "websocket": "^1.0.31" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + } + } + }, + "web3-utils": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.9.tgz", + "integrity": "sha512-9hcpuis3n/LxFzEVjwnVgvJzTirS2S9/MiNAa7l4WOEoywY+BSNwnRX4MuHnjkh9NY25B6QOjuNG6FNnSjTw1w==", + "requires": { + "bn.js": "4.11.8", + "eth-lib": "0.2.7", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + } + }, + "websocket": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", + "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + } + } } }, "web3-eth-ens": { @@ -14389,6 +14606,24 @@ "web3-eth-abi": "1.2.8", "web3-eth-contract": "1.2.8", "web3-utils": "1.2.8" + }, + "dependencies": { + "web3-eth-contract": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.8.tgz", + "integrity": "sha512-EWRLVhZksbzGAyHd7RaOsakjCJBA2BREWiJmBDlrxDBqw8HltXFzKdkRug/mwVNa5ZYMabKSRF/MMh0Sx06CFw==", + "requires": { + "@types/bn.js": "^4.11.4", + "underscore": "1.9.1", + "web3-core": "1.2.8", + "web3-core-helpers": "1.2.8", + "web3-core-method": "1.2.8", + "web3-core-promievent": "1.2.8", + "web3-core-subscriptions": "1.2.8", + "web3-eth-abi": "1.2.8", + "web3-utils": "1.2.8" + } + } } }, "web3-eth-iban": { diff --git a/package.json b/package.json index 5d384294..52166316 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "save-file": "^2.3.1", "uuid": "^8.0.0", "web3": "^1.2.6", + "web3-eth-contract": "^1.2.9", "whatwg-url": "^8.0.0" }, "devDependencies": { diff --git a/src/datatokens/DatatokensABI.json b/src/datatokens/DatatokensABI.json index 581efd94..e090a0e7 100644 --- a/src/datatokens/DatatokensABI.json +++ b/src/datatokens/DatatokensABI.json @@ -195,10 +195,6 @@ { "name": "blob", "type": "string" - }, - { - "name": "feeManager", - "type": "address" } ], "payable": false, @@ -271,10 +267,6 @@ { "name": "blob", "type": "string" - }, - { - "name": "feeManager", - "type": "address" } ], "name": "initialize", diff --git a/src/datatokens/FactoryABI.json b/src/datatokens/FactoryABI.json index 585bd738..b4eab0e7 100644 --- a/src/datatokens/FactoryABI.json +++ b/src/datatokens/FactoryABI.json @@ -46,10 +46,6 @@ { "name": "_template", "type": "address" - }, - { - "name": "_feeManager", - "type": "address" } ], "payable": false, diff --git a/src/datatokens/FeeManagerABI.json b/src/datatokens/FeeManagerABI.json deleted file mode 100644 index ca611959..00000000 --- a/src/datatokens/FeeManagerABI.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "constant": true, - "inputs": [ - { - "name": "tokens", - "type": "uint256" - }, - { - "name": "cap", - "type": "uint256" - } - ], - "name": "calculateFee", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "number", - "type": "uint256" - } - ], - "name": "calculateRange", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ] \ No newline at end of file diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 6fa5ab8c..d714d862 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -1,127 +1,144 @@ import { assert } from 'chai' import { DataTokens } from '../../src/datatokens/Datatokens' +import { TestContractHandler } from './TestContractHandler' -const Web3 = require('web3'); -const web3 = new Web3("http://127.0.0.1:8545"); +const Web3 = require('web3') +const web3 = new Web3("http://127.0.0.1:8545") const factoryABI = require('../../src/datatokens/FactoryABI.json') const datatokensABI = require('../../src/datatokens/DatatokensABI.json') -const feemanagerABI = require('../../src/datatokens/FeeManagerABI.json') +// const feemanagerABI = require('../../src/datatokens/FeeManagerABI.json') describe('DataTokens', () => { - let Factory - let Template - let FeeManager - - let feeManager - let template - let factory - - let accounts - let blob - let minter - let zeroAddress - let cap - let tokenAmount beforeEach(async () => { - accounts = await web3.eth.getAccounts() - - Factory = new web3.eth.Contract(factoryABI) - Template = new web3.eth.Contract(datatokensABI) - FeeManager = new web3.eth.Contract(feemanagerABI) - - blob = 'https://example.com/dataset-1' - minter = accounts[0] - zeroAddress = '0x0000000000000000000000000000000000000000' - cap = 1400000000 - tokenAmount = 1 - - // Deploy FeeManager - let feeManagerBytecode = "0x608060405234801561001057600080fd5b50600061002a6100cd640100000000026401000000009004565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d5565b600033905090565b610a61806100e46000396000f3fe60806040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161006b5780638da5cb5b146101165780638f32d59b1461016d57806390d3d8621461019c578063f2fde38b146101eb5761008d565b806334e731221461008f5780633ccfd60b146100e8578063715018a6146100ff575b005b34801561009b57600080fd5b506100d2600480360360408110156100b257600080fd5b81019080803590602001909291908035906020019092919050505061023c565b6040518082815260200191505060405180910390f35b3480156100f457600080fd5b506100fd610312565b005b34801561010b57600080fd5b50610114610479565b005b34801561012257600080fd5b5061012b6105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017957600080fd5b506101826105db565b604051808215151515815260200191505060405180910390f35b3480156101a857600080fd5b506101d5600480360360208110156101bf57600080fd5b8101908080359060200190929190505050610639565b6040518082815260200191505060405180910390f35b3480156101f757600080fd5b5061023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610686565b005b6000828210156102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b60006102bf84610639565b905060006102d861abe08361070c90919063ffffffff16565b9050610308600a6102fa6102eb87610639565b8461079290919063ffffffff16565b61079290919063ffffffff16565b9250505092915050565b61031a6105db565b61038c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111610419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4665654d616e616765723a205a65726f2062616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610476573d6000803e3d6000fd5b50565b6104816105db565b6104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061d6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600080829050600080905060008090505b600a831061067b57610666600a8461079290919063ffffffff16565b9250600182019150808060010191505061064a565b508092505050919050565b61068e6105db565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610709816107e4565b50565b60008083141561071f576000905061078c565b600082840290508284828161073057fe5b0414610787576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a156021913960400191505060405180910390fd5b809150505b92915050565b60006107d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610928565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109ef6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816109e057fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820770a5bd057ba57e1f78e0d5802439ff9854a0cefbd22024a4c1b401342d58c840029" - // get est gascost - let estGas = await FeeManager.deploy({ - data:feeManagerBytecode - }) - .estimateGas(function(err, estGas){ - return estGas - }) - // deploy the contract and get it's address - feeManager = await FeeManager.deploy({data:feeManagerBytecode}) - .send({ - from: minter, - gas: estGas+1, - gasPrice: '12345678' - }) - .then(function(contract){ - return contract.options.address - }) - - // Deploy Template - let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef738038062002ef7833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e416030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec46033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002e95602f913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002e716024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a6806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127cf6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126ce6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126526035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161275360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126ff6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128236033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061277b602f913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061272f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128566025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127ff6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127aa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582083b0e963470108678e6928edbaf294e07eb4d1ae64d8849191eabff23d426d97002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" - // get est gascost - estGas = await Template.deploy({ - data:templateBytecode, - arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] - }) - .estimateGas(function(err, estGas){ - return estGas - }) - // deploy the contract and get it's address - template = await Template.deploy({ - data:templateBytecode, - arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] - }) - .send({ - from: minter, - gas: estGas+1, - gasPrice: '12345678' - }) - .then(function(contract){ - return contract.options.address - }) - - // Deploy Factory - let factoryBytecode = "0x6080604052600160025534801561001557600080fd5b506040516040806110ce8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806110a2602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610f01806101a16000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b81565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610c49565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610485576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e9e6038913960400191505060405180910390fd5b60606104d06040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104cb600254610c49565b610b81565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b8381101561061c578082015181840152602081019050610601565b50505050905090810190601f1680156106495780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b83811015610682578082015181840152602081019050610667565b50505050905090810190601f1680156106af5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156106e85780820151818401526020810190506106cd565b50505050905090810190601f1680156107155780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b505050506040513d602081101561076557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b8101908080519060200190929190505050610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e72602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610953578082015181840152602081019050610938565b50505050905090810190601f1680156109805780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106109c357805182526020820191506020810190506020830392506109a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b60208310610a245780518252602082019150602081019050602083039250610a01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b2b578082015181840152602081019050610b10565b50505050905090810190601f168015610b585780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610bbb5780518252602082019150602081019050602083039250610b98565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610c0c5780518252602082019150602081019050602083039250610be9565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c91576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d93565b600082905060005b60008214610cbb578080600101915050600a8281610cb357fe5b049150610c99565b6060816040519080825280601f01601f191660200182016040528015610cf05781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d8b57600a8481610d1157fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610d4a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d8357fe5b049350610cff565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058202cbfb0e269d688ce768ad0f31ff6e4db1f8c387141f96271ce308b6d39f6658f0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" - estGas = await Factory.deploy({ - data:factoryBytecode, - arguments:[template, feeManager] - }) - .estimateGas(function(err, estGas){ - return estGas - }) - // deploy the contract and get it's address - factory = await Factory.deploy({ - data:factoryBytecode, - arguments:[template, feeManager] - }) - .send({ - from: minter, - gas: estGas+1, - gasPrice: '12345678' - }) - .then(function(contract){ - return contract.options.address - }) - }) + const contractHandler = new TestContractHandler(factoryABI,datatokensABI) + await contractHandler.getAccounts() + await contractHandler.deployContracts() + }) describe('#test', () => { - it('should create Datatoken object', async () => { - const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - assert(datatoken !== null) - }) - - it('should create Datatoken contract', async () => { - const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - const token = await datatoken.create(blob, minter) - assert(token !== null) - }) - - it('should mint Datatokens', async () => { - const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - const tokenAddress = await datatoken.create(blob, minter) - await datatoken.mint(tokenAddress, minter, tokenAmount) - // assert(token !== null) + it('should test', async () => { + let test = true + assert(test !== null) }) }) -}) \ No newline at end of file +}) + + // let Factory + // let Template + // let FeeManager + + // let feeManager + // let template + // let factory + + // let accounts + // let blob + // let minter + // let zeroAddress + // let cap + // let tokenAmount + + // beforeEach(async () => { + // accounts = await web3.eth.getAccounts() + + // Factory = new web3.eth.Contract(factoryABI) + // Template = new web3.eth.Contract(datatokensABI) + // FeeManager = new web3.eth.Contract(feemanagerABI) + + // blob = 'https://example.com/dataset-1' + // minter = accounts[0] + // zeroAddress = '0x0000000000000000000000000000000000000000' + // cap = 1400000000 + // tokenAmount = 1 + + // // Deploy FeeManager + // let feeManagerBytecode = "0x608060405234801561001057600080fd5b50600061002a6100cd640100000000026401000000009004565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d5565b600033905090565b610a61806100e46000396000f3fe60806040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161006b5780638da5cb5b146101165780638f32d59b1461016d57806390d3d8621461019c578063f2fde38b146101eb5761008d565b806334e731221461008f5780633ccfd60b146100e8578063715018a6146100ff575b005b34801561009b57600080fd5b506100d2600480360360408110156100b257600080fd5b81019080803590602001909291908035906020019092919050505061023c565b6040518082815260200191505060405180910390f35b3480156100f457600080fd5b506100fd610312565b005b34801561010b57600080fd5b50610114610479565b005b34801561012257600080fd5b5061012b6105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017957600080fd5b506101826105db565b604051808215151515815260200191505060405180910390f35b3480156101a857600080fd5b506101d5600480360360208110156101bf57600080fd5b8101908080359060200190929190505050610639565b6040518082815260200191505060405180910390f35b3480156101f757600080fd5b5061023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610686565b005b6000828210156102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b60006102bf84610639565b905060006102d861abe08361070c90919063ffffffff16565b9050610308600a6102fa6102eb87610639565b8461079290919063ffffffff16565b61079290919063ffffffff16565b9250505092915050565b61031a6105db565b61038c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111610419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4665654d616e616765723a205a65726f2062616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610476573d6000803e3d6000fd5b50565b6104816105db565b6104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061d6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600080829050600080905060008090505b600a831061067b57610666600a8461079290919063ffffffff16565b9250600182019150808060010191505061064a565b508092505050919050565b61068e6105db565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610709816107e4565b50565b60008083141561071f576000905061078c565b600082840290508284828161073057fe5b0414610787576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a156021913960400191505060405180910390fd5b809150505b92915050565b60006107d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610928565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109ef6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816109e057fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820770a5bd057ba57e1f78e0d5802439ff9854a0cefbd22024a4c1b401342d58c840029" + // // get est gascost + // let estGas = await FeeManager.deploy({ + // data:feeManagerBytecode + // }) + // .estimateGas(function(err, estGas){ + // return estGas + // }) + // // deploy the contract and get it's address + // feeManager = await FeeManager.deploy({data:feeManagerBytecode}) + // .send({ + // from: minter, + // gas: estGas+1, + // gasPrice: '12345678' + // }) + // .then(function(contract){ + // return contract.options.address + // }) + + // // Deploy Template + // let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef738038062002ef7833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e416030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec46033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002e95602f913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002e716024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a6806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127cf6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126ce6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126526035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161275360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126ff6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128236033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061277b602f913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061272f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128566025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127ff6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127aa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582083b0e963470108678e6928edbaf294e07eb4d1ae64d8849191eabff23d426d97002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" + // // get est gascost + // estGas = await Template.deploy({ + // data:templateBytecode, + // arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] + // }) + // .estimateGas(function(err, estGas){ + // return estGas + // }) + // // deploy the contract and get it's address + // template = await Template.deploy({ + // data:templateBytecode, + // arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] + // }) + // .send({ + // from: minter, + // gas: estGas+1, + // gasPrice: '12345678' + // }) + // .then(function(contract){ + // return contract.options.address + // }) + + // // Deploy Factory + // let factoryBytecode = "0x6080604052600160025534801561001557600080fd5b506040516040806110ce8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806110a2602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610f01806101a16000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b81565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610c49565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610485576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e9e6038913960400191505060405180910390fd5b60606104d06040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104cb600254610c49565b610b81565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b8381101561061c578082015181840152602081019050610601565b50505050905090810190601f1680156106495780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b83811015610682578082015181840152602081019050610667565b50505050905090810190601f1680156106af5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156106e85780820151818401526020810190506106cd565b50505050905090810190601f1680156107155780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b505050506040513d602081101561076557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b8101908080519060200190929190505050610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e72602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610953578082015181840152602081019050610938565b50505050905090810190601f1680156109805780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106109c357805182526020820191506020810190506020830392506109a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b60208310610a245780518252602082019150602081019050602083039250610a01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b2b578082015181840152602081019050610b10565b50505050905090810190601f168015610b585780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610bbb5780518252602082019150602081019050602083039250610b98565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610c0c5780518252602082019150602081019050602083039250610be9565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c91576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d93565b600082905060005b60008214610cbb578080600101915050600a8281610cb357fe5b049150610c99565b6060816040519080825280601f01601f191660200182016040528015610cf05781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d8b57600a8481610d1157fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610d4a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d8357fe5b049350610cff565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058202cbfb0e269d688ce768ad0f31ff6e4db1f8c387141f96271ce308b6d39f6658f0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" + // estGas = await Factory.deploy({ + // data:factoryBytecode, + // arguments:[template, feeManager] + // }) + // .estimateGas(function(err, estGas){ + // return estGas + // }) + // // deploy the contract and get it's address + // factory = await Factory.deploy({ + // data:factoryBytecode, + // arguments:[template, feeManager] + // }) + // .send({ + // from: minter, + // gas: estGas+1, + // gasPrice: '12345678' + // }) + // .then(function(contract){ + // return contract.options.address + // }) + // }) + + // describe('#test', () => { + // it('should create Datatoken object', async () => { + // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + // assert(datatoken !== null) + // }) + + // it('should create Datatoken contract', async () => { + // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + // const token = await datatoken.create(blob, minter) + // assert(token !== null) + // }) + + // it('should mint Datatokens', async () => { + // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) + // const tokenAddress = await datatoken.create(blob, minter) + // await datatoken.mint(tokenAddress, minter, tokenAmount) + // const feeBalance = await web3.eth.getBalance(feeManager) + // assert(feeBalance !== 0) + // }) + // }) + diff --git a/test/unit/TestContractHandler.ts b/test/unit/TestContractHandler.ts new file mode 100644 index 00000000..ea20058a --- /dev/null +++ b/test/unit/TestContractHandler.ts @@ -0,0 +1,83 @@ +import { Contract } from 'web3-eth-contract' + +const Web3 = require('web3') +const web3 = new Web3("http://127.0.0.1:8545") + +export class TestContractHandler { + public factory: Contract + public template: Contract + public accounts: string[] + + constructor( + factoryABI: object, + datatokensABI: object + ){ + this.factory = new web3.eth.Contract(factoryABI) + this.template = new web3.eth.Contract(datatokensABI) + } + + // public static async prepareContracts() { + // await TestContractHandler.deployContracts(deployerAddress) + // } + public async getAccounts() { + this.accounts = await web3.eth.getAccounts() + } + + public async deployContracts() { + + let blob = 'https://example.com/dataset-1' + let minter = this.accounts[0] + let zeroAddress = '0x0000000000000000000000000000000000000000' + let cap = 1400000000 + let tokenAmount = 1 + let estGas + + // Deploy Template + let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002b0838038062002b08833981018060405260a08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b5050929190505050620001998585858585620001a5640100000000026401000000009004565b505050505050620004b2565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200022e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002a856030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620002d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002ad9602f913960400191505060405180910390fd5b6000831162000332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ab56024913960400191505060405180910390fd5b60006008819055508260078190555085600490805190602001906200035992919062000403565b5081600690805190602001906200037292919062000403565b5084600590805190602001906200038b92919062000403565b5083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff16905095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200044657805160ff191683800117855562000477565b8280016001018555821562000477579182015b828111156200047657825182559160200191906001019062000459565b5b5090506200048691906200048a565b5090565b620004af91905b80821115620004ab57600081600090555060010162000491565b5090565b90565b6125c380620004c26000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806340c10f19116100c8578063a9059cbb1161008c578063a9059cbb14610821578063aa271e1a14610894578063b187bd26146108fd578063dd62ed3e1461092c578063fca3b5aa146109b1578063fde0e7a814610a0257610147565b806340c10f191461065457806370a08231146106a25780638456cb591461070757806395d89b411461071e578063a457c2d7146107ae57610147565b8063313ce5671161010f578063313ce56714610545578063355274ea14610570578063392e53cd1461059b57806339509351146105ca5780633f4ba83a1461063d57610147565b806306fdde031461014c578063095ea7b3146101dc5780630a6f3d9b1461024f57806318160ddd1461048757806323b872dd146104b2575b600080fd5b34801561015857600080fd5b50610161610a92565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b34565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b5061046d600480360360a081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184600183028401116401000000008311171561035a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103e757600080fd5b8201836020820111156103f957600080fd5b8035906020019184600183028401116401000000008311171561041b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610bae565b604051808215151515815260200191505060405180910390f35b34801561049357600080fd5b5061049c610c2e565b6040518082815260200191505060405180910390f35b3480156104be57600080fd5b5061052b600480360360608110156104d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c38565b604051808215151515815260200191505060405180910390f35b34801561055157600080fd5b5061055a610cb4565b6040518082815260200191505060405180910390f35b34801561057c57600080fd5b50610585610cbe565b6040518082815260200191505060405180910390f35b3480156105a757600080fd5b506105b0610cc8565b604051808215151515815260200191505060405180910390f35b3480156105d657600080fd5b50610623600480360360408110156105ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdf565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b50610652610d59565b005b6106a06004803603604081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e81565b005b3480156106ae57600080fd5b506106f1600480360360208110156106c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061102c565b6040518082815260200191505060405180910390f35b34801561071357600080fd5b5061071c611074565b005b34801561072a57600080fd5b5061073361119d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ba57600080fd5b50610807600480360360408110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123f565b604051808215151515815260200191505060405180910390f35b34801561082d57600080fd5b5061087a6004803603604081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b604051808215151515815260200191505060405180910390f35b3480156108a057600080fd5b506108e3600480360360208110156108b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611333565b604051808215151515815260200191505060405180910390f35b34801561090957600080fd5b5061091261138d565b604051808215151515815260200191505060405180910390f35b34801561093857600080fd5b5061099b6004803603604081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a4565b6040518082815260200191505060405180910390f35b3480156109bd57600080fd5b50610a00600480360360208110156109d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061142b565b005b348015610a0e57600080fd5b50610a1761157b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a57578082015181840152602081019050610a3c565b50505050905090810190601f168015610a845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610ba6838361161d565b905092915050565b6000600360019054906101000a900460ff1615610c16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806123d36035913960400191505060405180910390fd5b610c23868686868661163b565b905095945050505050565b6000600254905090565b6000600360009054906101000a900460ff1615610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610cab84848461188d565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610d518383611966565b905092915050565b600360009054906101000a900460ff16610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061251f6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610ee7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b600754610faa82610f9c610c2e565b611a1990919063ffffffff16565b111561101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b6110288282611aa1565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff16156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112355780601f1061120a57610100808354040283529160200191611235565b820191906000526020600020905b81548152906001019060200180831161121857829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff16156112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b6112b18383611c5c565b905092915050565b6000600360009054906101000a900460ff1615611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b61132b8383611d29565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116135780601f106115e857610100808354040283529160200191611613565b820191906000526020600020905b8154815290600101906020018083116115f657829003601f168201915b5050505050905090565b600061163161162a611d47565b8484611d4f565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061244f6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806124cb602f913960400191505060405180910390fd5b600083116117c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061247f6024913960400191505060405180910390fd5b60006008819055508260078190555085600490805190602001906117e79291906122bc565b5081600690805190602001906117fe9291906122bc565b5084600590805190602001906118159291906122bc565b5083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff16905095945050505050565b600061189a848484611f46565b61195b846118a6611d47565b611956856040518060600160405280602881526020016124a360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061190c611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b611d4f565b600190509392505050565b6000611a0f611973611d47565b84611a0a8560016000611984611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b611d4f565b6001905092915050565b600080828401905083811015611a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611b5981600254611a1990919063ffffffff16565b600281905550611bb0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611d1f611c69611d47565b84611d1a856040518060600160405280602581526020016125736025913960016000611c93611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b611d4f565b6001905092915050565b6000611d3d611d36611d47565b8484611f46565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061254f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123b16022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124fa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123626023913960400191505060405180910390fd5b6120bd81604051806060016040528060268152602001612429602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612150816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561226e578082015181840152602081019050612253565b50505050905090810190601f16801561229b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122fd57805160ff191683800117855561232b565b8280016001018555821561232b579182015b8281111561232a57825182559160200191906001019061230f565b5b509050612338919061233c565b5090565b61235e91905b8082111561235a576000816000905550600101612342565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820cb935813b86dca206b416693f24e646300f651bfdb0df08b80e68f17d10455a2002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f2061646472657373" + // get est gascost + estGas = await this.template.deploy({ + data:templateBytecode, + arguments:['Template Contract', 'TEMPLATE', minter, cap, blob] + }) + .estimateGas(function(err, estGas){ + return estGas + }) + // deploy the contract and get it's address + let templateAddress = await this.template.deploy({ + data:templateBytecode, + arguments:['Template Contract', 'TEMPLATE', minter, cap, blob] + }) + .send({ + from: minter, + gas: estGas+1, + gasPrice: '12345678' + }) + .then(function(contract){ + return contract.options.address + }) + + // Deploy Factory + let factoryBytecode = "0x60806040526001805534801561001457600080fd5b50604051602080610ff08339810180604052602081101561003457600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610fc4602c913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610ea98061011b6000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610bf1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fc6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d40565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610484576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e466038913960400191505060405180910390fd5b60606104cf6040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104ca600154610bf1565b610b29565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16630a6f3d9b8484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200180602001848103845289818151815260200191508051906020019080838360005b838110156105c75780820151818401526020810190506105ac565b50505050905090810190601f1680156105f45780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360005b8381101561062d578082015181840152602081019050610612565b50505050905090810190601f16801561065a5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015610693578082015181840152602081019050610678565b50505050905090810190601f1680156106c05780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60208110156107ad57600080fd5b8101908080519060200190929190505050610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e1a602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad846000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108fc5780820151818401526020810190506108e1565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b6020831061096c5780518252602082019150602081019050602083039250610949565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b602083106109cd57805182526020820191506020810190506020830392506109aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ad4578082015181840152602081019050610ab9565b50505050905090810190601f168015610b015780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a460018060008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610b635780518252602082019150602081019050602083039250610b40565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610bb45780518252602082019150602081019050602083039250610b91565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c39576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d3b565b600082905060005b60008214610c63578080600101915050600a8281610c5b57fe5b049150610c41565b6060816040519080825280601f01601f191660200182016040528015610c985781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d3357600a8481610cb957fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610cf257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d2b57fe5b049350610ca7565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058208661a4f1759a51204c39e8e7507448b81499f1f9e035fda3f65d9daaadaa2c1c0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" + estGas = await this.factory.deploy({ + data:factoryBytecode, + arguments:[templateAddress] + }) + .estimateGas(function(err, estGas){ + return estGas + }) + // deploy the contract and get it's address + let factoryAdress = await this.factory.deploy({ + data:factoryBytecode, + arguments:[templateAddress] + }) + .send({ + from: minter, + gas: estGas+1, + gasPrice: '12345678' + }) + .then(function(contract){ + return contract.options.address + }) + } + +} \ No newline at end of file From 3b8d986445b0f7f293bd83b74f8af9e39897d8b3 Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Wed, 10 Jun 2020 14:48:12 +0200 Subject: [PATCH 08/11] fix remove fee, clean up --- src/datatokens/Datatokens.ts | 4 +- test/unit/Datatokens.test.ts | 153 ++++++------------------------- test/unit/TestContractHandler.ts | 23 ++--- 3 files changed, 37 insertions(+), 143 deletions(-) diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index e1b58a33..d1a42bdd 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -114,8 +114,7 @@ export class DataTokens { dataTokenAddress, { from: account } ) - let fee = await this.web3.utils.toWei('1', 'ether') - + const estGas = await datatoken.methods.mint(address, amount) .estimateGas(function(err, estGas){ return estGas @@ -123,7 +122,6 @@ export class DataTokens { const trxReceipt = await datatoken.methods.mint(address, amount) .send({ - value:fee, from:account, gas: estGas*2, gasPrice: '3000000000' diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index d714d862..dd77ef2d 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -7,138 +7,39 @@ const web3 = new Web3("http://127.0.0.1:8545") const factoryABI = require('../../src/datatokens/FactoryABI.json') const datatokensABI = require('../../src/datatokens/DatatokensABI.json') -// const feemanagerABI = require('../../src/datatokens/FeeManagerABI.json') describe('DataTokens', () => { + let minter + let contracts + + let tokenAmount = 100 + let blob = 'https://example.com/dataset-1' + beforeEach(async () => { - const contractHandler = new TestContractHandler(factoryABI,datatokensABI) - await contractHandler.getAccounts() - await contractHandler.deployContracts() + contracts = new TestContractHandler(factoryABI,datatokensABI) + await contracts.getAccounts() + + minter = contracts.accounts[0] + await contracts.deployContracts(minter) }) describe('#test', () => { - it('should test', async () => { - let test = true - assert(test !== null) + it('should create Datatoken object', async () => { + const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) + assert(datatoken !== null) + }) + + it('should create Datatoken contract', async () => { + const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) + const token = await datatoken.create(blob, minter) + assert(token !== null) + }) + + it('should mint Datatokens', async () => { + const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) + const tokenAddress = await datatoken.create(blob, minter) + await datatoken.mint(tokenAddress, minter, tokenAmount) }) }) -}) - - // let Factory - // let Template - // let FeeManager - - // let feeManager - // let template - // let factory - - // let accounts - // let blob - // let minter - // let zeroAddress - // let cap - // let tokenAmount - - // beforeEach(async () => { - // accounts = await web3.eth.getAccounts() - - // Factory = new web3.eth.Contract(factoryABI) - // Template = new web3.eth.Contract(datatokensABI) - // FeeManager = new web3.eth.Contract(feemanagerABI) - - // blob = 'https://example.com/dataset-1' - // minter = accounts[0] - // zeroAddress = '0x0000000000000000000000000000000000000000' - // cap = 1400000000 - // tokenAmount = 1 - - // // Deploy FeeManager - // let feeManagerBytecode = "0x608060405234801561001057600080fd5b50600061002a6100cd640100000000026401000000009004565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d5565b600033905090565b610a61806100e46000396000f3fe60806040526004361061008d576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b1161006b5780638da5cb5b146101165780638f32d59b1461016d57806390d3d8621461019c578063f2fde38b146101eb5761008d565b806334e731221461008f5780633ccfd60b146100e8578063715018a6146100ff575b005b34801561009b57600080fd5b506100d2600480360360408110156100b257600080fd5b81019080803590602001909291908035906020019092919050505061023c565b6040518082815260200191505060405180910390f35b3480156100f457600080fd5b506100fd610312565b005b34801561010b57600080fd5b50610114610479565b005b34801561012257600080fd5b5061012b6105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017957600080fd5b506101826105db565b604051808215151515815260200191505060405180910390f35b3480156101a857600080fd5b506101d5600480360360208110156101bf57600080fd5b8101908080359060200190929190505050610639565b6040518082815260200191505060405180910390f35b3480156101f757600080fd5b5061023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610686565b005b6000828210156102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f46656543616c63756c61746f723a20496e76616c69642063617000000000000081525060200191505060405180910390fd5b60006102bf84610639565b905060006102d861abe08361070c90919063ffffffff16565b9050610308600a6102fa6102eb87610639565b8461079290919063ffffffff16565b61079290919063ffffffff16565b9250505092915050565b61031a6105db565b61038c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111610419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4665654d616e616765723a205a65726f2062616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610476573d6000803e3d6000fd5b50565b6104816105db565b6104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061d6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600080829050600080905060008090505b600a831061067b57610666600a8461079290919063ffffffff16565b9250600182019150808060010191505061064a565b508092505050919050565b61068e6105db565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610709816107e4565b50565b60008083141561071f576000905061078c565b600082840290508284828161073057fe5b0414610787576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a156021913960400191505060405180910390fd5b809150505b92915050565b60006107d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610928565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109ef6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816109e057fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a72305820770a5bd057ba57e1f78e0d5802439ff9854a0cefbd22024a4c1b401342d58c840029" - // // get est gascost - // let estGas = await FeeManager.deploy({ - // data:feeManagerBytecode - // }) - // .estimateGas(function(err, estGas){ - // return estGas - // }) - // // deploy the contract and get it's address - // feeManager = await FeeManager.deploy({data:feeManagerBytecode}) - // .send({ - // from: minter, - // gas: estGas+1, - // gasPrice: '12345678' - // }) - // .then(function(contract){ - // return contract.options.address - // }) - - // // Deploy Template - // let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002ef738038062002ef7833981018060405260c08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b505092919060200180519060200190929190505050620001a7868686868686620001b4640100000000026401000000009004565b505050505050506200058b565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002e416030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002ec46033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002e95602f913960400191505060405180910390fd5b60008411620003c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002e716024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190620003f0929190620004dc565b50826006908051906020019062000409929190620004dc565b50856005908051906020019062000422929190620004dc565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051f57805160ff191683800117855562000550565b8280016001018555821562000550579182015b828111156200054f57825182559160200191906001019062000532565b5b5090506200055f919062000563565b5090565b6200058891905b80821115620005845760008160009055506001016200056a565b5090565b90565b6128a6806200059b6000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100c8578063a9059cbb1161008c578063a9059cbb14610841578063aa271e1a146108b4578063b187bd261461091d578063dd62ed3e1461094c578063fca3b5aa146109d1578063fde0e7a814610a2257610147565b806370a082311461046a5780638456cb59146104cf5780639070d2f8146104e657806395d89b411461073e578063a457c2d7146107ce57610147565b8063355274ea1161010f578063355274ea14610338578063392e53cd1461036357806339509351146103925780633f4ba83a1461040557806340c10f191461041c57610147565b806306fdde031461014c578063095ea7b3146101dc57806318160ddd1461024f57806323b872dd1461027a578063313ce5671461030d575b600080fd5b34801561015857600080fd5b50610161610ab2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b54565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b50610264610bce565b6040518082815260200191505060405180910390f35b34801561028657600080fd5b506102f36004803603606081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd8565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b50610322610c54565b6040518082815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c5e565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b50610378610c68565b604051808215151515815260200191505060405180910390f35b34801561039e57600080fd5b506103eb600480360360408110156103b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c7f565b604051808215151515815260200191505060405180910390f35b34801561041157600080fd5b5061041a610cf9565b005b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46111a9565b005b3480156104f257600080fd5b50610724600480360360c081101561050957600080fd5b810190808035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d2565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b50610753611354565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610793578082015181840152602081019050610778565b50505050905090810190601f1680156107c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107da57600080fd5b50610827600480360360408110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f6565b604051808215151515815260200191505060405180910390f35b34801561084d57600080fd5b5061089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611470565b604051808215151515815260200191505060405180910390f35b3480156108c057600080fd5b50610903600480360360208110156108d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ea565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932611544565b604051808215151515815260200191505060405180910390f35b34801561095857600080fd5b506109bb6004803603604081101561096f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155b565b6040518082815260200191505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b005b348015610a2e57600080fd5b50610a37611732565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a77578082015181840152602081019050610a5c565b50505050905090810190601f168015610aa45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4a5780601f10610b1f57610100808354040283529160200191610b4a565b820191906000526020600020905b815481529060010190602001808311610b2d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610bc683836117d4565b905092915050565b6000600254905090565b6000600360009054906101000a900460ff1615610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610c4b8484846117f2565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b610cf183836118cb565b905092915050565b600360009054906101000a900460ff16610d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127cf6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b600754610f4a82610f3c610bce565b61197e90919063ffffffff16565b1115610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334e73122826007546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d602081101561108157600080fd5b81019080805190602001909291905050503410156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126ce6031913960400191505060405180910390fd5b6110f48282611a06565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561115c573d6000803e3d6000fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b6000600360019054906101000a900460ff161561133a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806126526035913960400191505060405180910390fd5b611348878787878787611bc1565b90509695505050505050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113ec5780601f106113c1576101008083540402835291602001916113ec565b820191906000526020600020905b8154815290600101906020018083116113cf57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff161561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114688383611edb565b905092915050565b6000600360009054906101000a900460ff16156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b6114e28383611fa8565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612604602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126876021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050905090565b60006117e86117e1611fc6565b8484611fce565b6001905092915050565b60006117ff8484846121c5565b6118c08461180b611fc6565b6118bb8560405180606001604052806028815260200161275360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611871611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b600190509392505050565b60006119746118d8611fc6565b8461196f85600160006118e9611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b611fce565b6001905092915050565b6000808284019050838110156119fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611abe8160025461197e90919063ffffffff16565b600281905550611b15816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806126ff6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128236033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061277b602f913960400191505060405180910390fd5b60008411611dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061272f6024913960400191505060405180910390fd5b6000600881905550836007819055508660049080519060200190611df392919061253b565b508260069080519060200190611e0a92919061253b565b508560059080519060200190611e2192919061253b565b5084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff1690509695505050505050565b6000611f9e611ee8611fc6565b84611f99856040518060600160405280602581526020016128566025913960016000611f12611fc6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b611fce565b6001905092915050565b6000611fbc611fb5611fc6565b84846121c5565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612054576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127ff6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126306022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127aa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806125e16023913960400191505060405180910390fd5b61233c816040518060600160405280602681526020016126a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124ed5780820151818401526020810190506124d2565b50505050905090810190601f16801561251a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257c57805160ff19168380011785556125aa565b828001600101855582156125aa579182015b828111156125a957825182559160200191906001019061258e565b5b5090506125b791906125bb565b5090565b6125dd91905b808211156125d95760008160009055506001016125c1565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20696e76616c6964206461746120746f6b656e206d696e74696e672066656544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582083b0e963470108678e6928edbaf294e07eb4d1ae64d8849191eabff23d426d97002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206665654d616e616765722c207a65726f2061646472657373" - // // get est gascost - // estGas = await Template.deploy({ - // data:templateBytecode, - // arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] - // }) - // .estimateGas(function(err, estGas){ - // return estGas - // }) - // // deploy the contract and get it's address - // template = await Template.deploy({ - // data:templateBytecode, - // arguments:['Template Contract', 'TEMPLATE', minter, cap, blob, feeManager] - // }) - // .send({ - // from: minter, - // gas: estGas+1, - // gasPrice: '12345678' - // }) - // .then(function(contract){ - // return contract.options.address - // }) - - // // Deploy Factory - // let factoryBytecode = "0x6080604052600160025534801561001557600080fd5b506040516040806110ce8339810180604052604081101561003557600080fd5b810190808051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100ba5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806110a2602c913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610f01806101a16000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b81565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610c49565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d98565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610485576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e9e6038913960400191505060405180910390fd5b60606104d06040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104cb600254610c49565b610b81565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16639070d2f88484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528a818151815260200191508051906020019080838360005b8381101561061c578082015181840152602081019050610601565b50505050905090810190601f1680156106495780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b83811015610682578082015181840152602081019050610667565b50505050905090810190601f1680156106af5780820380516001836020036101000a031916815260200191505b50848103825286818151815260200191508051906020019080838360005b838110156106e85780820151818401526020810190506106cd565b50505050905090810190601f1680156107155780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b15801561073b57600080fd5b505af115801561074f573d6000803e3d6000fd5b505050506040513d602081101561076557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b8101908080519060200190929190505050610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e72602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610953578082015181840152602081019050610938565b50505050905090810190601f1680156109805780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b602083106109c357805182526020820191506020810190506020830392506109a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b60208310610a245780518252602082019150602081019050602083039250610a01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b2b578082015181840152602081019050610b10565b50505050905090810190601f168015610b585780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46001600260008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610bbb5780518252602082019150602081019050602083039250610b98565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610c0c5780518252602082019150602081019050602083039250610be9565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c91576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d93565b600082905060005b60008214610cbb578080600101915050600a8281610cb357fe5b049150610c99565b6060816040519080825280601f01601f191660200182016040528015610cf05781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d8b57600a8481610d1157fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610d4a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d8357fe5b049350610cff565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058202cbfb0e269d688ce768ad0f31ff6e4db1f8c387141f96271ce308b6d39f6658f0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" - // estGas = await Factory.deploy({ - // data:factoryBytecode, - // arguments:[template, feeManager] - // }) - // .estimateGas(function(err, estGas){ - // return estGas - // }) - // // deploy the contract and get it's address - // factory = await Factory.deploy({ - // data:factoryBytecode, - // arguments:[template, feeManager] - // }) - // .send({ - // from: minter, - // gas: estGas+1, - // gasPrice: '12345678' - // }) - // .then(function(contract){ - // return contract.options.address - // }) - // }) - - // describe('#test', () => { - // it('should create Datatoken object', async () => { - // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - // assert(datatoken !== null) - // }) - - // it('should create Datatoken contract', async () => { - // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - // const token = await datatoken.create(blob, minter) - // assert(token !== null) - // }) - - // it('should mint Datatokens', async () => { - // const datatoken = new DataTokens(factory, factoryABI, datatokensABI, web3) - // const tokenAddress = await datatoken.create(blob, minter) - // await datatoken.mint(tokenAddress, minter, tokenAmount) - // const feeBalance = await web3.eth.getBalance(feeManager) - // assert(feeBalance !== 0) - // }) - // }) - +}) \ No newline at end of file diff --git a/test/unit/TestContractHandler.ts b/test/unit/TestContractHandler.ts index ea20058a..4de8068f 100644 --- a/test/unit/TestContractHandler.ts +++ b/test/unit/TestContractHandler.ts @@ -7,29 +7,26 @@ export class TestContractHandler { public factory: Contract public template: Contract public accounts: string[] + public factoryAddress: string + public templateAddress: string constructor( factoryABI: object, datatokensABI: object ){ - this.factory = new web3.eth.Contract(factoryABI) - this.template = new web3.eth.Contract(datatokensABI) + this.factory = new web3.eth.Contract(factoryABI) + this.template = new web3.eth.Contract(datatokensABI) } - // public static async prepareContracts() { - // await TestContractHandler.deployContracts(deployerAddress) - // } public async getAccounts() { this.accounts = await web3.eth.getAccounts() } - public async deployContracts() { + public async deployContracts(minter: string) { let blob = 'https://example.com/dataset-1' - let minter = this.accounts[0] let zeroAddress = '0x0000000000000000000000000000000000000000' let cap = 1400000000 - let tokenAmount = 1 let estGas // Deploy Template @@ -43,7 +40,7 @@ export class TestContractHandler { return estGas }) // deploy the contract and get it's address - let templateAddress = await this.template.deploy({ + this.templateAddress = await this.template.deploy({ data:templateBytecode, arguments:['Template Contract', 'TEMPLATE', minter, cap, blob] }) @@ -55,20 +52,19 @@ export class TestContractHandler { .then(function(contract){ return contract.options.address }) - // Deploy Factory let factoryBytecode = "0x60806040526001805534801561001457600080fd5b50604051602080610ff08339810180604052602081101561003457600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610fc4602c913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610ea98061011b6000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c01000000000000000000000000000000000000000000000000000000009004806345576f94146100635780637a36b3ee1461015e578063e939567914610329575b600080fd5b61011c6004803603602081101561007957600080fd5b810190808035906020019064010000000081111561009657600080fd5b8201836020820111156100a857600080fd5b803590602001918460018302840111640100000000831117156100ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506103d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ae6004803603604081101561017457600080fd5b810190808035906020019064010000000081111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460018302840111640100000000831117156101c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102ee5780820151818401526020810190506102d3565b50505050905090810190601f16801561031b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103556004803603602081101561033f57600080fd5b8101908080359060200190929190505050610bf1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561039557808201518184015260208101905061037a565b50505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006103fc6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d40565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610484576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610e466038913960400191505060405180910390fd5b60606104cf6040518060400160405280600281526020017f44540000000000000000000000000000000000000000000000000000000000008152506104ca600154610bf1565b610b29565b9050606081905060008390508073ffffffffffffffffffffffffffffffffffffffff16630a6f3d9b8484337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200180602001848103845289818151815260200191508051906020019080838360005b838110156105c75780820151818401526020810190506105ac565b50505050905090810190601f1680156105f45780820380516001836020036101000a031916815260200191505b50848103835288818151815260200191508051906020019080838360005b8381101561062d578082015181840152602081019050610612565b50505050905090810190601f16801561065a5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015610693578082015181840152602081019050610678565b50505050905090810190601f1680156106c05780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff1663392e53cd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60208110156107ad57600080fd5b8101908080519060200190929190505050610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610e1a602c913960400191505060405180910390fd5b7fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad846000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108fc5780820151818401526020810190506108e1565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1816040518082805190602001908083835b6020831061096c5780518252602082019150602081019050602083039250610949565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518082805190602001908083835b602083106109cd57805182526020820191506020810190506020830392506109aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff167f5242aec5021ca3b80047b99ba11a4f6ee963561e3ca5c01854964affbf18c0897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33438b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ad4578082015181840152602081019050610ab9565b50505050905090810190601f168015610b015780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a460018060008282540192505081905550505050919050565b606082826040516020018083805190602001908083835b60208310610b635780518252602082019150602081019050602083039250610b40565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310610bb45780518252602082019150602081019050602083039250610b91565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60606000821415610c39576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610d3b565b600082905060005b60008214610c63578080600101915050600a8281610c5b57fe5b049150610c41565b6060816040519080825280601f01601f191660200182016040528015610c985781602001600182028038833980820191505090505b50905060006001830390508593505b60008414610d3357600a8481610cb957fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110610cf257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481610d2b57fe5b049350610ca7565b819450505050505b919050565b600080826c010000000000000000000000000290506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15091905056fe466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058208661a4f1759a51204c39e8e7507448b81499f1f9e035fda3f65d9daaadaa2c1c0029466163746f72793a20496e76616c696420546f6b656e466163746f727920696e697469616c697a6174696f6e" estGas = await this.factory.deploy({ data:factoryBytecode, - arguments:[templateAddress] + arguments:[this.templateAddress] }) .estimateGas(function(err, estGas){ return estGas }) // deploy the contract and get it's address - let factoryAdress = await this.factory.deploy({ + this.factoryAddress = await this.factory.deploy({ data:factoryBytecode, - arguments:[templateAddress] + arguments:[this.templateAddress] }) .send({ from: minter, @@ -79,5 +75,4 @@ export class TestContractHandler { return contract.options.address }) } - } \ No newline at end of file From 435d0fd19c59271d24239cddf6a86c248cf1ccfc Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Wed, 10 Jun 2020 15:08:53 +0200 Subject: [PATCH 09/11] wip clean up --- src/datatokens/Datatokens.ts | 6 +++--- test/unit/Datatokens.test.ts | 16 +++++++++------- test/unit/TestContractHandler.ts | 3 +-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index d1a42bdd..6cb854f8 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -114,7 +114,7 @@ export class DataTokens { dataTokenAddress, { from: account } ) - + const estGas = await datatoken.methods.mint(address, amount) .estimateGas(function(err, estGas){ return estGas @@ -188,9 +188,9 @@ export class DataTokens { const datatoken = new this.web3.eth.Contract( this.datatokensABI, dataTokenAddress, - { from: account.getId() } + { from: account } ) - const trxReceipt = await datatoken.methods.balanceOf(account.getId()).call() + const trxReceipt = await datatoken.methods.balanceOf(account).call() return trxReceipt } diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index dd77ef2d..9fa9effe 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -1,6 +1,6 @@ import { assert } from 'chai' -import { DataTokens } from '../../src/datatokens/Datatokens' import { TestContractHandler } from './TestContractHandler' +import { DataTokens } from '../../src/datatokens/Datatokens' const Web3 = require('web3') const web3 = new Web3("http://127.0.0.1:8545") @@ -12,6 +12,8 @@ describe('DataTokens', () => { let minter let contracts + let datatoken + let tokenAddress let tokenAmount = 100 let blob = 'https://example.com/dataset-1' @@ -22,24 +24,24 @@ describe('DataTokens', () => { minter = contracts.accounts[0] await contracts.deployContracts(minter) - }) + }) describe('#test', () => { it('should create Datatoken object', async () => { - const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) + datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) assert(datatoken !== null) }) it('should create Datatoken contract', async () => { - const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) - const token = await datatoken.create(blob, minter) - assert(token !== null) + tokenAddress = await datatoken.create(blob, minter) + assert(tokenAddress !== null) }) it('should mint Datatokens', async () => { - const datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) const tokenAddress = await datatoken.create(blob, minter) await datatoken.mint(tokenAddress, minter, tokenAmount) + let balance = await datatoken.balance(tokenAddress, minter) + // assert(balance === tokenAmount) }) }) }) \ No newline at end of file diff --git a/test/unit/TestContractHandler.ts b/test/unit/TestContractHandler.ts index 4de8068f..d73d36b0 100644 --- a/test/unit/TestContractHandler.ts +++ b/test/unit/TestContractHandler.ts @@ -23,11 +23,10 @@ export class TestContractHandler { } public async deployContracts(minter: string) { + let estGas let blob = 'https://example.com/dataset-1' - let zeroAddress = '0x0000000000000000000000000000000000000000' let cap = 1400000000 - let estGas // Deploy Template let templateBytecode = "0x60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162002b0838038062002b08833981018060405260a08110156200006d57600080fd5b8101908080516401000000008111156200008657600080fd5b828101905060208101848111156200009d57600080fd5b8151856001820283011164010000000082111715620000bb57600080fd5b50509291906020018051640100000000811115620000d857600080fd5b82810190506020810184811115620000ef57600080fd5b81518560018202830111640100000000821117156200010d57600080fd5b5050929190602001805190602001909291908051906020019092919080516401000000008111156200013e57600080fd5b828101905060208101848111156200015557600080fd5b81518560018202830111640100000000821117156200017357600080fd5b5050929190505050620001998585858585620001a5640100000000026401000000009004565b505050505050620004b2565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200022e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062002a856030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620002d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062002ad9602f913960400191505060405180910390fd5b6000831162000332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ab56024913960400191505060405180910390fd5b60006008819055508260078190555085600490805190602001906200035992919062000403565b5081600690805190602001906200037292919062000403565b5084600590805190602001906200038b92919062000403565b5083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff16905095945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200044657805160ff191683800117855562000477565b8280016001018555821562000477579182015b828111156200047657825182559160200191906001019062000459565b5b5090506200048691906200048a565b5090565b620004af91905b80821115620004ab57600081600090555060010162000491565b5090565b90565b6125c380620004c26000396000f3fe608060405260043610610147576000357c01000000000000000000000000000000000000000000000000000000009004806340c10f19116100c8578063a9059cbb1161008c578063a9059cbb14610821578063aa271e1a14610894578063b187bd26146108fd578063dd62ed3e1461092c578063fca3b5aa146109b1578063fde0e7a814610a0257610147565b806340c10f191461065457806370a08231146106a25780638456cb591461070757806395d89b411461071e578063a457c2d7146107ae57610147565b8063313ce5671161010f578063313ce56714610545578063355274ea14610570578063392e53cd1461059b57806339509351146105ca5780633f4ba83a1461063d57610147565b806306fdde031461014c578063095ea7b3146101dc5780630a6f3d9b1461024f57806318160ddd1461048757806323b872dd146104b2575b600080fd5b34801561015857600080fd5b50610161610a92565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a1578082015181840152602081019050610186565b50505050905090810190601f1680156101ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e857600080fd5b50610235600480360360408110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b34565b604051808215151515815260200191505060405180910390f35b34801561025b57600080fd5b5061046d600480360360a081101561027257600080fd5b810190808035906020019064010000000081111561028f57600080fd5b8201836020820111156102a157600080fd5b803590602001918460018302840111640100000000831117156102c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184600183028401116401000000008311171561035a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103e757600080fd5b8201836020820111156103f957600080fd5b8035906020019184600183028401116401000000008311171561041b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610bae565b604051808215151515815260200191505060405180910390f35b34801561049357600080fd5b5061049c610c2e565b6040518082815260200191505060405180910390f35b3480156104be57600080fd5b5061052b600480360360608110156104d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c38565b604051808215151515815260200191505060405180910390f35b34801561055157600080fd5b5061055a610cb4565b6040518082815260200191505060405180910390f35b34801561057c57600080fd5b50610585610cbe565b6040518082815260200191505060405180910390f35b3480156105a757600080fd5b506105b0610cc8565b604051808215151515815260200191505060405180910390f35b3480156105d657600080fd5b50610623600480360360408110156105ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdf565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b50610652610d59565b005b6106a06004803603604081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e81565b005b3480156106ae57600080fd5b506106f1600480360360208110156106c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061102c565b6040518082815260200191505060405180910390f35b34801561071357600080fd5b5061071c611074565b005b34801561072a57600080fd5b5061073361119d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ba57600080fd5b50610807600480360360408110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123f565b604051808215151515815260200191505060405180910390f35b34801561082d57600080fd5b5061087a6004803603604081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b604051808215151515815260200191505060405180910390f35b3480156108a057600080fd5b506108e3600480360360208110156108b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611333565b604051808215151515815260200191505060405180910390f35b34801561090957600080fd5b5061091261138d565b604051808215151515815260200191505060405180910390f35b34801561093857600080fd5b5061099b6004803603604081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a4565b6040518082815260200191505060405180910390f35b3480156109bd57600080fd5b50610a00600480360360208110156109d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061142b565b005b348015610a0e57600080fd5b50610a1761157b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a57578082015181840152602081019050610a3c565b50505050905090810190601f168015610a845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff1615610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610ba6838361161d565b905092915050565b6000600360019054906101000a900460ff1615610c16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806123d36035913960400191505060405180910390fd5b610c23868686868661163b565b905095945050505050565b6000600254905090565b6000600360009054906101000a900460ff1615610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610cab84848461188d565b90509392505050565b6000600854905090565b6000600754905090565b6000600360019054906101000a900460ff16905090565b6000600360009054906101000a900460ff1615610d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b610d518383611966565b905092915050565b600360009054906101000a900460ff16610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061251f6030913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b6000600360006101000a81548160ff021916908315150217905550565b600360009054906101000a900460ff1615610ee7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b600754610faa82610f9c610c2e565b611a1990919063ffffffff16565b111561101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f44617461546f6b656e54656d706c6174653a206361702065786365656465640081525060200191505060405180910390fd5b6110288282611aa1565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900460ff16156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112355780601f1061120a57610100808354040283529160200191611235565b820191906000526020600020905b81548152906001019060200180831161121857829003601f168201915b5050505050905090565b6000600360009054906101000a900460ff16156112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b6112b18383611c5c565b905092915050565b6000600360009054906101000a900460ff1615611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b61132b8383611d29565b905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900460ff1615611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612385602c913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124086021913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116135780601f106115e857610100808354040283529160200191611613565b820191906000526020600020905b8154815290600101906020018083116115f657829003601f168201915b5050505050905090565b600061163161162a611d47565b8484611d4f565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061244f6030913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806124cb602f913960400191505060405180910390fd5b600083116117c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061247f6024913960400191505060405180910390fd5b60006008819055508260078190555085600490805190602001906117e79291906122bc565b5081600690805190602001906117fe9291906122bc565b5084600590805190602001906118159291906122bc565b5083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360016101000a81548160ff021916908315150217905550600360019054906101000a900460ff16905095945050505050565b600061189a848484611f46565b61195b846118a6611d47565b611956856040518060600160405280602881526020016124a360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061190c611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b611d4f565b600190509392505050565b6000611a0f611973611d47565b84611a0a8560016000611984611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b611d4f565b6001905092915050565b600080828401905083811015611a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611b5981600254611a1990919063ffffffff16565b600281905550611bb0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611d1f611c69611d47565b84611d1a856040518060600160405280602581526020016125736025913960016000611c93611d47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b611d4f565b6001905092915050565b6000611d3d611d36611d47565b8484611f46565b6001905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061254f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123b16022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806124fa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123626023913960400191505060405180910390fd5b6120bd81604051806060016040528060268152602001612429602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612150816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561226e578082015181840152602081019050612253565b50505050905090810190601f16801561229b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122fd57805160ff191683800117855561232b565b8280016001018555821561232b579182015b8281111561232a57825182559160200191906001019061230f565b5b509050612338919061233c565b5090565b61235e91905b8082111561235a576000816000905550600101612342565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e74726163742069732070617573656445524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332305061757361626c653a207468697320746f6b656e20636f6e7472616374206973206e6f742070617573656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820cb935813b86dca206b416693f24e646300f651bfdb0df08b80e68f17d10455a2002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f2061646472657373" From ad3d42f7b1ec0ce7a61d01c555cb08a6bb5fe6ee Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Thu, 11 Jun 2020 10:14:50 +0200 Subject: [PATCH 10/11] fix assert --- test/unit/Datatokens.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 9fa9effe..0a193431 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -41,7 +41,7 @@ describe('DataTokens', () => { const tokenAddress = await datatoken.create(blob, minter) await datatoken.mint(tokenAddress, minter, tokenAmount) let balance = await datatoken.balance(tokenAddress, minter) - // assert(balance === tokenAmount) + assert(balance.toString() === tokenAmount.toString()) }) }) }) \ No newline at end of file From 73b7a42e79021d56d9c4653c4f1391b976a5580b Mon Sep 17 00:00:00 2001 From: arsenyjin Date: Thu, 11 Jun 2020 13:17:56 +0200 Subject: [PATCH 11/11] add more tests --- src/datatokens/Datatokens.ts | 10 ++++----- test/unit/Datatokens.test.ts | 39 +++++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/datatokens/Datatokens.ts b/src/datatokens/Datatokens.ts index 6cb854f8..3024db66 100644 --- a/src/datatokens/Datatokens.ts +++ b/src/datatokens/Datatokens.ts @@ -88,7 +88,7 @@ export class DataTokens { const datatoken = new this.web3.eth.Contract( this.datatokensABI, dataTokenAddress, - { from: account.getId() } + { from: account } ) const trxReceipt = await datatoken.methods.approve(spender, amount).send() return trxReceipt @@ -147,7 +147,7 @@ export class DataTokens { const datatoken = new this.web3.eth.Contract( this.datatokensABI, dataTokenAddress, - { from: account.getId() } + { from: account } ) const trxReceipt = await datatoken.methods.transfer(toAddress, amount).send() return trxReceipt @@ -170,10 +170,10 @@ export class DataTokens { const datatoken = new this.web3.eth.Contract( this.datatokensABI, dataTokenAddress, - { from: account.getId() } + { from: account } ) const trxReceipt = await datatoken.methods - .transferFrom(fromAddress, account.getId(), amount) + .transferFrom(fromAddress, account, amount) .send() return trxReceipt } @@ -253,4 +253,4 @@ export class DataTokens { const trxReceipt = await datatoken.methods.cap().call() return trxReceipt } -} +} \ No newline at end of file diff --git a/test/unit/Datatokens.test.ts b/test/unit/Datatokens.test.ts index 0a193431..e362cfa9 100644 --- a/test/unit/Datatokens.test.ts +++ b/test/unit/Datatokens.test.ts @@ -11,6 +11,8 @@ const datatokensABI = require('../../src/datatokens/DatatokensABI.json') describe('DataTokens', () => { let minter + let spender + let balance let contracts let datatoken let tokenAddress @@ -18,15 +20,15 @@ describe('DataTokens', () => { let tokenAmount = 100 let blob = 'https://example.com/dataset-1' - beforeEach(async () => { - contracts = new TestContractHandler(factoryABI,datatokensABI) - await contracts.getAccounts() - - minter = contracts.accounts[0] - await contracts.deployContracts(minter) - }) - describe('#test', () => { + it('should deploy contracts', async () => { + contracts = new TestContractHandler(factoryABI,datatokensABI) + await contracts.getAccounts() + minter = contracts.accounts[0] + spender = contracts.accounts[1] + await contracts.deployContracts(minter) + }) + it('should create Datatoken object', async () => { datatoken = new DataTokens(contracts.factoryAddress, factoryABI, datatokensABI, web3) assert(datatoken !== null) @@ -38,10 +40,27 @@ describe('DataTokens', () => { }) it('should mint Datatokens', async () => { - const tokenAddress = await datatoken.create(blob, minter) await datatoken.mint(tokenAddress, minter, tokenAmount) - let balance = await datatoken.balance(tokenAddress, minter) + balance = await datatoken.balance(tokenAddress, minter) assert(balance.toString() === tokenAmount.toString()) }) + + it('should transfer Datatokens to spender', async () => { + await datatoken.transfer(tokenAddress, spender, tokenAmount, minter) + balance = await datatoken.balance(tokenAddress, spender) + assert(balance.toString() === tokenAmount.toString()) + + }) + + it('should approve Datatokens to spend', async () => { + await datatoken.approve(tokenAddress, minter, tokenAmount, spender) + }) + + it('should transferFrom Datatokens back to the minter', async () => { + await datatoken.transferFrom(tokenAddress, spender, tokenAmount, minter) + minter = await datatoken.balance(tokenAddress, spender) + assert(balance.toString() === tokenAmount.toString()) + }) + }) }) \ No newline at end of file