mirror of
				https://github.com/Instadapp/yield-contract.git
				synced 2024-07-29 21:47:29 +00:00 
			
		
		
		
	WIP: done with registry test cases
This commit is contained in:
		
							parent
							
								
									25511f0629
								
							
						
					
					
						commit
						a7fae35c8b
					
				|  | @ -30,7 +30,7 @@ interface RateInterface { | ||||||
|   function getTotalToken() external returns (uint totalUnderlyingTkn); |   function getTotalToken() external returns (uint totalUnderlyingTkn); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| contract PoolToken is ReentrancyGuard, ERC20Pausable, DSMath { | contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { | ||||||
|   using SafeERC20 for IERC20; |   using SafeERC20 for IERC20; | ||||||
| 
 | 
 | ||||||
|   event LogDeploy(address indexed token, uint amount); |   event LogDeploy(address indexed token, uint amount); | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								contracts/tests/daiLogic.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								contracts/tests/daiLogic.sol
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | // SPDX-License-Identifier: MIT | ||||||
|  | pragma solidity ^0.6.8; | ||||||
|  | 
 | ||||||
|  | interface TokenInterface { | ||||||
|  |     function balanceOf(address) external view returns (uint); | ||||||
|  |     function transfer(address, uint) external returns (bool); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | contract DaiRateLogic { | ||||||
|  |     address poolToken; | ||||||
|  |      | ||||||
|  |     TokenInterface baseToken; | ||||||
|  | 
 | ||||||
|  |     function getTotalToken() public returns (uint) { | ||||||
|  |         uint bal = baseToken.balanceOf(address(this)); | ||||||
|  |         bal += baseToken.balanceOf(address(poolToken)); | ||||||
|  |         return bal; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function reduceDai(uint amt) public { | ||||||
|  |         baseToken.transfer(address(this), amt); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constructor (address daiPool, address dai) public { | ||||||
|  |         poolToken = address(daiPool); | ||||||
|  |         baseToken = TokenInterface(address(dai)); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								contracts/tests/ethLogic.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								contracts/tests/ethLogic.sol
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | // SPDX-License-Identifier: MIT | ||||||
|  | pragma solidity ^0.6.8; | ||||||
|  | 
 | ||||||
|  | contract EthRateLogic { | ||||||
|  |     address poolToken; | ||||||
|  |      | ||||||
|  |     function getTotalToken() public returns (uint) { | ||||||
|  |         uint bal = (address(this).balance); | ||||||
|  |         bal += (address(poolToken).balance); | ||||||
|  |         return bal; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function reduceETH(uint amt) public { | ||||||
|  |         payable(address(0)).transfer(amt); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constructor (address ethPool) public { | ||||||
|  |         poolToken = address(ethPool); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										4
									
								
								migrations/2_registry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								migrations/2_registry.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | const Registry = artifacts.require("Registry"); | ||||||
|  | module.exports = async function(deployer, networks, accounts) { | ||||||
|  |     await deployer.deploy(Registry, accounts[0]); //deploy registry.sol contract
 | ||||||
|  | }; | ||||||
							
								
								
									
										10
									
								
								migrations/3_erc20Pool.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								migrations/3_erc20Pool.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | ||||||
|  | const PoolToken = artifacts.require("PoolToken"); | ||||||
|  | const DaiRateLogic = artifacts.require("DaiRateLogic"); | ||||||
|  | const Registry = artifacts.require("Registry"); | ||||||
|  | 
 | ||||||
|  | module.exports = async function(deployer, networks, accounts) { | ||||||
|  |     var DAI_Addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; | ||||||
|  |     var registryInstance = await Registry.deployed(); | ||||||
|  |     var daiPoolInstance = await deployer.deploy(PoolToken, registryInstance.address, "Insta DAI", "IDAI", DAI_Addr); | ||||||
|  |     var daiRateInstance = await deployer.deploy(DaiRateLogic, daiPoolInstance.address, DAI_Addr); | ||||||
|  | }; | ||||||
							
								
								
									
										11
									
								
								migrations/4_ethPool.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								migrations/4_ethPool.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | const PoolETH = artifacts.require("PoolETH"); | ||||||
|  | const Registry = artifacts.require("Registry"); | ||||||
|  | const EthRateLogic = artifacts.require("EthRateLogic"); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | module.exports = async function(deployer, networks, accounts) { | ||||||
|  |     var ETH_Addr = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; | ||||||
|  |     var registryInstance = await Registry.deployed(); | ||||||
|  |     var ethPoolInstance = await deployer.deploy(PoolETH, registryInstance.address, "Insta ETH", "IETH", ETH_Addr); | ||||||
|  |     var ethRateInstance = await deployer.deploy(EthRateLogic, ethPoolInstance.address); | ||||||
|  | }; | ||||||
							
								
								
									
										11372
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11372
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -4,7 +4,9 @@ | ||||||
|   "description": "DSA Yield ERC20 Pool Contract", |   "description": "DSA Yield ERC20 Pool Contract", | ||||||
|   "main": "index.js", |   "main": "index.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "echo \"Error: no test specified\" && exit 1" |     "deploy:fork": "truffle deploy", | ||||||
|  |     "test:fork": "truffle test", | ||||||
|  |     "ganache:fork": "dotenv -- cross-var ganache-cli --fork https://mainnet.infura.io/v3/%INFURA_KEY% --unlock 0xfCD22438AD6eD564a1C26151Df73F6B33B817B56 --unlock 0x6b175474e89094c44da98b954eedeac495271d0f --u 0x9eb7f2591ed42dee9315b6e2aaf21ba85ea69f8c" | ||||||
|   }, |   }, | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|  | @ -18,7 +20,11 @@ | ||||||
|   "homepage": "https://github.com/InstaDApp/dsa-yield-contract#readme", |   "homepage": "https://github.com/InstaDApp/dsa-yield-contract#readme", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@openzeppelin/contracts": "^3.1.0", |     "@openzeppelin/contracts": "^3.1.0", | ||||||
|  |     "cross-var": "^1.1.0", | ||||||
|  |     "dotenv": "^7.0.0", | ||||||
|  |     "dotenv-cli": "^3.2.0", | ||||||
|     "solc": "^0.6.8", |     "solc": "^0.6.8", | ||||||
|  |     "chai": "^4.2.0", | ||||||
|     "truffle-assertions": "^0.9.2", |     "truffle-assertions": "^0.9.2", | ||||||
|     "truffle-hdwallet-provider": "^1.0.17", |     "truffle-hdwallet-provider": "^1.0.17", | ||||||
|     "truffle-typings": "^1.0.8", |     "truffle-typings": "^1.0.8", | ||||||
|  | @ -26,6 +32,7 @@ | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@nomiclabs/buidler": "^1.4.3", |     "@nomiclabs/buidler": "^1.4.3", | ||||||
|  |     "@nomiclabs/buidler-ganache": "^1.3.3", | ||||||
|     "@nomiclabs/buidler-truffle5": "^1.3.4", |     "@nomiclabs/buidler-truffle5": "^1.3.4", | ||||||
|     "@nomiclabs/buidler-web3": "^1.3.4", |     "@nomiclabs/buidler-web3": "^1.3.4", | ||||||
|     "@openzeppelin/test-helpers": "^0.5.6", |     "@openzeppelin/test-helpers": "^0.5.6", | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								scripts/utils.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								scripts/utils.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | module.exports.asyncForEach = async (array, callback) => { | ||||||
|  |     for (let index = 0; index < array.length; index++) { | ||||||
|  |       await callback(array[index], index, array); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
							
								
								
									
										122
									
								
								test/1_registry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								test/1_registry.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,122 @@ | ||||||
|  | const { BN, ether, balance } = require('@openzeppelin/test-helpers'); | ||||||
|  | const { expect } = require('chai'); | ||||||
|  | 
 | ||||||
|  | const RegistryContract = artifacts.require("Registry"); | ||||||
|  | const PoolTokenContract = artifacts.require("PoolToken"); | ||||||
|  | const PoolETHContract = artifacts.require("PoolETH"); | ||||||
|  | 
 | ||||||
|  | const DaiRateLogic = artifacts.require("DaiRateLogic"); | ||||||
|  | const EthRateLogic = artifacts.require("EthRateLogic"); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const masterAddr = "0xfCD22438AD6eD564a1C26151Df73F6B33B817B56" | ||||||
|  | 
 | ||||||
|  | contract('Registry.sol', async accounts => { | ||||||
|  |     let ethAddr = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; | ||||||
|  |     let daiAddr = "0x6b175474e89094c44da98b954eedeac495271d0f"; | ||||||
|  | 
 | ||||||
|  |     let defaultAddr = "0x0000000000000000000000000000000000000000"; | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |     let ethPoolInstance; | ||||||
|  |     let daiPoolInstance; | ||||||
|  |     let registryInstance; | ||||||
|  | 
 | ||||||
|  |     let ethRateLogicInstance; | ||||||
|  |     let daiRateLogicInstance; | ||||||
|  |     before(async() => { | ||||||
|  |         registryInstance = await RegistryContract.deployed(); | ||||||
|  |         ethPoolInstance = await PoolETHContract.deployed(); | ||||||
|  |         daiPoolInstance = await PoolTokenContract.deployed(); | ||||||
|  | 
 | ||||||
|  |         ethRateLogicInstance = await EthRateLogic.deployed(); | ||||||
|  |         daiRateLogicInstance = await DaiRateLogic.deployed(); | ||||||
|  |     }) | ||||||
|  |      | ||||||
|  | 
 | ||||||
|  |     it('should send ether to the Master address', async () => { | ||||||
|  |         await web3.eth.sendTransaction({ | ||||||
|  |         from: accounts[0], | ||||||
|  |         to: masterAddr, | ||||||
|  |         value: ether('10') | ||||||
|  |         }); | ||||||
|  |         const ethBalance = await balance.current(masterAddr); | ||||||
|  |         expect(new BN(ethBalance)).to.be.bignumber.least(new BN(ether('10'))); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should add ETH pool in registry', async () => { | ||||||
|  |         await addPool(registryInstance, ethPoolInstance.address, ethAddr); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should enable ETH pool in registry', async () => { | ||||||
|  |         await enablePool(registryInstance, ethPoolInstance.address); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should remove ETH pool in registry', async () => { | ||||||
|  |         await removePool(registryInstance, ethAddr); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should disable ETH pool in registry', async () => { | ||||||
|  |         await disablePool(registryInstance, ethPoolInstance.address); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should add ETH pool in registry', async () => { | ||||||
|  |         await addPool(registryInstance, ethPoolInstance.address, ethAddr); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should enable ETH pool in registry', async () => { | ||||||
|  |         await enablePool(registryInstance, ethPoolInstance.address); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should add DAI pool in registry', async () => { | ||||||
|  |         await addPool(registryInstance, daiPoolInstance.address, daiAddr); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should enable DAI pool in registry', async () => { | ||||||
|  |         await enablePool(registryInstance, daiPoolInstance.address); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should update ETH Logic contract in registry', async () => { | ||||||
|  |         await updateRateLogic(registryInstance, ethPoolInstance.address, ethRateLogicInstance.address); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should update DAI Logic contract in registry', async () => { | ||||||
|  |         await updateRateLogic(registryInstance, daiPoolInstance.address, daiRateLogicInstance.address); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | async function addPool(registryInstance, poolAddr, tokenAddr) { | ||||||
|  |     await registryInstance.addPool(tokenAddr, poolAddr, {from: masterAddr}); | ||||||
|  |      | ||||||
|  |     var _poolAddr = await registryInstance.poolToken(tokenAddr); | ||||||
|  |     expect(_poolAddr).to.equal(poolAddr); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | async function removePool(registryInstance, tokenAddr) { | ||||||
|  |     await registryInstance.removePool(tokenAddr, {from: masterAddr}); | ||||||
|  |      | ||||||
|  |     var _poolAddr = await registryInstance.poolToken(tokenAddr); | ||||||
|  |     expect(_poolAddr).to.equal("0x0000000000000000000000000000000000000000"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | async function enablePool(registryInstance, poolAddr) { | ||||||
|  |    await registryInstance.updatePool(poolAddr, {from: masterAddr}); | ||||||
|  |     | ||||||
|  |    var _isPool = await registryInstance.isPool(poolAddr); | ||||||
|  |    expect(_isPool).to.equal(true); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | async function disablePool(registryInstance, poolAddr) { | ||||||
|  |     await registryInstance.updatePool(poolAddr, {from: masterAddr}); | ||||||
|  |      | ||||||
|  |     var _isPool = await registryInstance.isPool(poolAddr); | ||||||
|  |     expect(_isPool).to.equal(false); | ||||||
|  |  } | ||||||
|  | 
 | ||||||
|  | async function updateRateLogic(registryInstance, poolAddr, logicAddr) { | ||||||
|  |     await registryInstance.updatePoolLogic(poolAddr, logicAddr, {from: masterAddr}); | ||||||
|  | 
 | ||||||
|  |     var _logicAddr = await registryInstance.poolLogic(poolAddr); | ||||||
|  |     expect(_logicAddr).to.equal(logicAddr); | ||||||
|  | } | ||||||
							
								
								
									
										82
									
								
								test/2_daiPool.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								test/2_daiPool.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,82 @@ | ||||||
|  | const { BN, ether, balance } = require('@openzeppelin/test-helpers'); | ||||||
|  | const { expect } = require('chai'); | ||||||
|  | 
 | ||||||
|  | const RegistryContract = artifacts.require("Registry"); | ||||||
|  | const PoolTokenContract = artifacts.require("PoolToken"); | ||||||
|  | const PoolETHContract = artifacts.require("PoolETH"); | ||||||
|  | 
 | ||||||
|  | const DaiRateLogic = artifacts.require("DaiRateLogic"); | ||||||
|  | const EthRateLogic = artifacts.require("EthRateLogic"); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const masterAddr = "0xfCD22438AD6eD564a1C26151Df73F6B33B817B56" | ||||||
|  | 
 | ||||||
|  | // ABI
 | ||||||
|  | const daiABI = require('./abi/erc20'); | ||||||
|  | 
 | ||||||
|  | const userAddress = '0x9eb7f2591ed42dee9315b6e2aaf21ba85ea69f8c'; | ||||||
|  | const daiAddress = '0x6b175474e89094c44da98b954eedeac495271d0f'; | ||||||
|  | const daiContract = new web3.eth.Contract(daiABI, daiAddress); | ||||||
|  | 
 | ||||||
|  | contract('DAI Pool', async accounts => { | ||||||
|  |   let ethAddr = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; | ||||||
|  |     let daiAddr = "0x6b175474e89094c44da98b954eedeac495271d0f"; | ||||||
|  | 
 | ||||||
|  |     let defaultAddr = "0x0000000000000000000000000000000000000000"; | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |     let ethPoolInstance; | ||||||
|  |     let daiPoolInstance; | ||||||
|  |     let registryInstance; | ||||||
|  | 
 | ||||||
|  |     let ethRateLogicInstance; | ||||||
|  |     let daiRateLogicInstance; | ||||||
|  |     before(async() => { | ||||||
|  |         registryInstance = await RegistryContract.deployed(); | ||||||
|  |         ethPoolInstance = await PoolETHContract.deployed(); | ||||||
|  |         daiPoolInstance = await PoolTokenContract.deployed(); | ||||||
|  | 
 | ||||||
|  |         ethRateLogicInstance = await EthRateLogic.deployed(); | ||||||
|  |         daiRateLogicInstance = await DaiRateLogic.deployed(); | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |   it('should send ether to the user address', async () => { | ||||||
|  |     // Send 1 eth to userAddress to have gas to send an ERC20 tx.
 | ||||||
|  |     await web3.eth.sendTransaction({ | ||||||
|  |       from: accounts[0], | ||||||
|  |       to: userAddress, | ||||||
|  |       value: ether('1') | ||||||
|  |     }); | ||||||
|  |     const ethBalance = await balance.current(userAddress); | ||||||
|  |     expect(new BN(ethBalance)).to.be.bignumber.least(new BN(ether('1'))); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should give DAI allowance for DAI pool', async () => { | ||||||
|  |     await daiContract.methods | ||||||
|  |       .approve(daiPoolInstance.address, ether('1000').toString()) | ||||||
|  |       .send({ from: userAddress}); | ||||||
|  |     const daiBalance = await daiContract.methods.allowance(userAddress, daiPoolInstance.address).call(); | ||||||
|  |     expect(new BN(daiBalance)).to.be.bignumber.least(ether('1000')); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should deposit 100 DAI in DAI pool', async () => { | ||||||
|  |     var amountInWei = new BN(ether(100)).toString() | ||||||
|  |     await daiPoolInstance.deposit(amountInWei, {from: userAddress}); | ||||||
|  |     const daiBalance = await daiContract.methods.balanceOf(daiPoolInstance.address).call(); | ||||||
|  |     expect(new BN(daiBalance)).to.be.bignumber.least(amountInWei); | ||||||
|  |     var totalSupply = await poolInstance.totalSupply(); | ||||||
|  |     expect(new BN(totalSupply)).to.be.bignumber.least(amountInWei); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should add profit 10 DAI and calculate exchange rate', async () => { | ||||||
|  |     var amountInWei = new BN(ether(10)).toString() | ||||||
|  |     await daiContract.methods | ||||||
|  |     .transfer(daiRateLogicInstance.address, amountInWei) | ||||||
|  |     .send({ from: userAddress}); | ||||||
|  |     await daiPoolInstance.deposit(amountInWei, {from: userAddress}); | ||||||
|  |     const daiBalance = await daiContract.methods.balanceOf(daiPoolInstance.address).call(); | ||||||
|  |     expect(new BN(daiBalance)).to.be.bignumber.least(amountInWei); | ||||||
|  |     var totalSupply = await poolInstance.totalSupply(); | ||||||
|  |     expect(new BN(totalSupply)).to.be.bignumber.least(amountInWei); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
							
								
								
									
										325
									
								
								test/abi/erc20.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										325
									
								
								test/abi/erc20.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,325 @@ | ||||||
|  | module.exports = [ | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'name', | ||||||
|  |       outputs: [{ name: '', type: 'bytes32' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'stop', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'guy', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'approve', | ||||||
|  |       outputs: [{ name: '', type: 'bool' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'owner_', type: 'address' }], | ||||||
|  |       name: 'setOwner', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'totalSupply', | ||||||
|  |       outputs: [{ name: '', type: 'uint256' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'src', type: 'address' }, | ||||||
|  |         { name: 'dst', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'transferFrom', | ||||||
|  |       outputs: [{ name: '', type: 'bool' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'decimals', | ||||||
|  |       outputs: [{ name: '', type: 'uint256' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'guy', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'mint', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'wad', type: 'uint256' }], | ||||||
|  |       name: 'burn', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'name_', type: 'bytes32' }], | ||||||
|  |       name: 'setName', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [{ name: 'src', type: 'address' }], | ||||||
|  |       name: 'balanceOf', | ||||||
|  |       outputs: [{ name: '', type: 'uint256' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'stopped', | ||||||
|  |       outputs: [{ name: '', type: 'bool' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'authority_', type: 'address' }], | ||||||
|  |       name: 'setAuthority', | ||||||
|  |       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: 'symbol', | ||||||
|  |       outputs: [{ name: '', type: 'bytes32' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'guy', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'burn', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'wad', type: 'uint256' }], | ||||||
|  |       name: 'mint', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'dst', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'transfer', | ||||||
|  |       outputs: [{ name: '', type: 'bool' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'dst', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'push', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'src', type: 'address' }, | ||||||
|  |         { name: 'dst', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'move', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'start', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [], | ||||||
|  |       name: 'authority', | ||||||
|  |       outputs: [{ name: '', type: 'address' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [{ name: 'guy', type: 'address' }], | ||||||
|  |       name: 'approve', | ||||||
|  |       outputs: [{ name: '', type: 'bool' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: true, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'src', type: 'address' }, | ||||||
|  |         { name: 'guy', type: 'address' } | ||||||
|  |       ], | ||||||
|  |       name: 'allowance', | ||||||
|  |       outputs: [{ name: '', type: 'uint256' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'view', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       constant: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { name: 'src', type: 'address' }, | ||||||
|  |         { name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'pull', | ||||||
|  |       outputs: [], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'function' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       inputs: [{ name: 'symbol_', type: 'bytes32' }], | ||||||
|  |       payable: false, | ||||||
|  |       stateMutability: 'nonpayable', | ||||||
|  |       type: 'constructor' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { indexed: true, name: 'guy', type: 'address' }, | ||||||
|  |         { indexed: false, name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'Mint', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { indexed: true, name: 'guy', type: 'address' }, | ||||||
|  |         { indexed: false, name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'Burn', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [{ indexed: true, name: 'authority', type: 'address' }], | ||||||
|  |       name: 'LogSetAuthority', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [{ indexed: true, name: 'owner', type: 'address' }], | ||||||
|  |       name: 'LogSetOwner', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: true, | ||||||
|  |       inputs: [ | ||||||
|  |         { indexed: true, name: 'sig', type: 'bytes4' }, | ||||||
|  |         { indexed: true, name: 'guy', type: 'address' }, | ||||||
|  |         { indexed: true, name: 'foo', type: 'bytes32' }, | ||||||
|  |         { indexed: true, name: 'bar', type: 'bytes32' }, | ||||||
|  |         { indexed: false, name: 'wad', type: 'uint256' }, | ||||||
|  |         { indexed: false, name: 'fax', type: 'bytes' } | ||||||
|  |       ], | ||||||
|  |       name: 'LogNote', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { indexed: true, name: 'src', type: 'address' }, | ||||||
|  |         { indexed: true, name: 'guy', type: 'address' }, | ||||||
|  |         { indexed: false, name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'Approval', | ||||||
|  |       type: 'event' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       anonymous: false, | ||||||
|  |       inputs: [ | ||||||
|  |         { indexed: true, name: 'src', type: 'address' }, | ||||||
|  |         { indexed: true, name: 'dst', type: 'address' }, | ||||||
|  |         { indexed: false, name: 'wad', type: 'uint256' } | ||||||
|  |       ], | ||||||
|  |       name: 'Transfer', | ||||||
|  |       type: 'event' | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  | @ -42,11 +42,11 @@ module.exports = { | ||||||
|     // tab if you use this network and you must also set the `host`, `port` and `network_id`
 |     // tab if you use this network and you must also set the `host`, `port` and `network_id`
 | ||||||
|     // options below to some value.
 |     // options below to some value.
 | ||||||
|     //
 |     //
 | ||||||
|     // development: {
 |     development: { | ||||||
|     //  host: "127.0.0.1",     // Localhost (default: none)
 |      host: "127.0.0.1",     // Localhost (default: none)
 | ||||||
|     //  port: 8545,            // Standard Ethereum port (default: none)
 |      port: 8545,            // Standard Ethereum port (default: none)
 | ||||||
|     //  network_id: "*",       // Any network (default: none)
 |      network_id: "*",       // Any network (default: none)
 | ||||||
|     // },
 |     }, | ||||||
| 
 | 
 | ||||||
|     // Another network with more advanced options...
 |     // Another network with more advanced options...
 | ||||||
|     // advanced: {
 |     // advanced: {
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Thrilok Kumar
						Thrilok Kumar