From 8a809a97ce87ec734dd681d58ba1aced68f0c6e4 Mon Sep 17 00:00:00 2001 From: anton-karlovskiy-g Date: Mon, 8 Feb 2021 11:10:54 +0300 Subject: [PATCH 01/14] [chore] clean up --- .vscode/settings.json | 8 +++ migrations/1_initial_migration.js | 3 +- migrations/2_deploy_contracts.js | 27 +++++----- src/abis/DaiToken.json | 87 +++++++++++++++---------------- src/abis/DappToken.json | 87 +++++++++++++++---------------- src/abis/Migrations.json | 26 ++++----- src/abis/TokenFarm.json | 30 +++++------ truffle-config.js | 11 ++-- 8 files changed, 144 insertions(+), 135 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..7e6ac97c4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "cSpell.words": [ + "bignumber", + "browserslist", + "defi", + "identicon" + ] +} \ No newline at end of file diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js index ee2135d29..173dc4be5 100644 --- a/migrations/1_initial_migration.js +++ b/migrations/1_initial_migration.js @@ -1,4 +1,5 @@ -const Migrations = artifacts.require("Migrations"); + +const Migrations = artifacts.require('Migrations'); module.exports = function(deployer) { deployer.deploy(Migrations); diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index 6c294db82..4cd9fcb59 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -1,23 +1,24 @@ -const DappToken = artifacts.require('DappToken') -const DaiToken = artifacts.require('DaiToken') -const TokenFarm = artifacts.require('TokenFarm') + +const DappToken = artifacts.require('DappToken'); +const DaiToken = artifacts.require('DaiToken'); +const TokenFarm = artifacts.require('TokenFarm'); module.exports = async function(deployer, network, accounts) { // Deploy Mock DAI Token - await deployer.deploy(DaiToken) - const daiToken = await DaiToken.deployed() + await deployer.deploy(DaiToken); + const daiToken = await DaiToken.deployed(); // Deploy Dapp Token - await deployer.deploy(DappToken) - const dappToken = await DappToken.deployed() + await deployer.deploy(DappToken); + const dappToken = await DappToken.deployed(); // Deploy TokenFarm - await deployer.deploy(TokenFarm, dappToken.address, daiToken.address) - const tokenFarm = await TokenFarm.deployed() + await deployer.deploy(TokenFarm, dappToken.address, daiToken.address); + const tokenFarm = await TokenFarm.deployed(); // Transfer all tokens to TokenFarm (1 million) - await dappToken.transfer(tokenFarm.address, '1000000000000000000000000') + await dappToken.transfer(tokenFarm.address, '1000000000000000000000000'); - // Transfer 100 Mock DAI tokens to investor - await daiToken.transfer(accounts[1], '100000000000000000000') -} + // Transfer 100 Mock DAI tokens to investor (assume that accounts[0] => owner, accounts => investor) + await daiToken.transfer(accounts[1], '100000000000000000000'); +}; diff --git a/src/abis/DaiToken.json b/src/abis/DaiToken.json index cb6abd3a2..72799eba5 100644 --- a/src/abis/DaiToken.json +++ b/src/abis/DaiToken.json @@ -248,15 +248,15 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol\":\"DaiToken\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol\":{\"keccak256\":\"0xb1705dd761dc6ad152de0cee7c9aeecf3f03193ca314cdd08906efa1829cf6a0\",\"urls\":[\"bzz-raw://8750066fb987b8f721edebf3824a68869d209a36d2606ec99e38c34870557ce2\",\"dweb:/ipfs/QmefYSoK6EnM3m1LKo7vjCeZxrnSV7n89wjQGuCDfhdzHV\"]}},\"version\":1}", - "bytecode": "0x60806040526040518060400160405280600e81526020017f4d6f636b2044414920546f6b656e0000000000000000000000000000000000008152506000908051906020019061004f92919061011e565b506040518060400160405280600481526020017f6d444149000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b92919061011e565b5069d3c21bcecceda10000006002556012600360006101000a81548160ff021916908360ff1602179055503480156100d257600080fd5b50600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015f57805160ff191683800117855561018d565b8280016001018555821561018d579182015b8281111561018c578251825591602001919060010190610171565b5b50905061019a919061019e565b5090565b6101c091905b808211156101bc5760008160009055506001016101a4565b5090565b90565b610a7d806101d26000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820f02eb38dd50f8073a0ca479d11e6a283a4823cd1de25a5d81dbf6622886183d864736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820f02eb38dd50f8073a0ca479d11e6a283a4823cd1de25a5d81dbf6622886183d864736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol\":\"DaiToken\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol\":{\"keccak256\":\"0xb1705dd761dc6ad152de0cee7c9aeecf3f03193ca314cdd08906efa1829cf6a0\",\"urls\":[\"bzz-raw://8750066fb987b8f721edebf3824a68869d209a36d2606ec99e38c34870557ce2\",\"dweb:/ipfs/QmefYSoK6EnM3m1LKo7vjCeZxrnSV7n89wjQGuCDfhdzHV\"]}},\"version\":1}", + "bytecode": "0x60806040526040518060400160405280600e81526020017f4d6f636b2044414920546f6b656e0000000000000000000000000000000000008152506000908051906020019061004f92919061011e565b506040518060400160405280600481526020017f6d444149000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b92919061011e565b5069d3c21bcecceda10000006002556012600360006101000a81548160ff021916908360ff1602179055503480156100d257600080fd5b50600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015f57805160ff191683800117855561018d565b8280016001018555821561018d579182015b8281111561018c578251825591602001919060010190610171565b5b50905061019a919061019e565b5090565b6101c091905b808211156101bc5760008160009055506001016101a4565b5090565b90565b610a7d806101d26000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820c1307b06a7920cd1aa1ff5828c51a4a023f1e419d9666a1230d4e1b8ebbe94bc64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820c1307b06a7920cd1aa1ff5828c51a4a023f1e419d9666a1230d4e1b8ebbe94bc64736f6c63430005100032", "sourceMap": "25:1538:0:-;;;49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;93:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;158:25;129:54;;235:2;209:28;;;;;;;;;;;;;;;;;;;;593:73;8:9:-1;5:2;;;30:1;27;20:12;5:2;593:73:0;648:11;;624:9;:21;634:10;624:21;;;;;;;;;;;;;;;:35;;;;25:1538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "25:1538:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:1538:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;49:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;956:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;129:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1174:387;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1174:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;209:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;472:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;472:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;93:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;93:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:278;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;672:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;522:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;522:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;956:212::-;1023:12;1081:6;1047:9;:21;1057:10;1047:21;;;;;;;;;;;;;;;:31;1069:8;1047:31;;;;;;;;;;;;;;;:40;;;;1123:8;1102:38;;1111:10;1102:38;;;1133:6;1102:38;;;;;;;;;;;;;;;;;;1157:4;1150:11;;956:212;;;;:::o;129:54::-;;;;:::o;1174:387::-;1256:12;1298:9;:16;1308:5;1298:16;;;;;;;;;;;;;;;;1288:6;:26;;1280:35;;;;;;1343:9;:16;1353:5;1343:16;;;;;;;;;;;;;;;:28;1360:10;1343:28;;;;;;;;;;;;;;;;1333:6;:38;;1325:47;;;;;;1402:6;1382:9;:16;1392:5;1382:16;;;;;;;;;;;;;;;;:26;;;;;;;;;;;1436:6;1418:9;:14;1428:3;1418:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;1484:6;1452:9;:16;1462:5;1452:16;;;;;;;;;;;;;;;:28;1469:10;1452:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;1521:3;1505:28;;1514:5;1505:28;;;1526:6;1505:28;;;;;;;;;;;;;;;;;;1550:4;1543:11;;1174:387;;;;;:::o;209:28::-;;;;;;;;;;;;;:::o;472:44::-;;;;;;;;;;;;;;;;;:::o;93:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;672:278::-;735:12;792:6;767:9;:21;777:10;767:21;;;;;;;;;;;;;;;;:31;;759:40;;;;;;834:6;809:9;:21;819:10;809:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;868:6;850:9;:14;860:3;850:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;910:3;889:33;;898:10;889:33;;;915:6;889:33;;;;;;;;;;;;;;;;;;939:4;932:11;;672:278;;;;:::o;522:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.5.0;\n\ncontract DaiToken {\n string public name = \"Mock DAI Token\";\n string public symbol = \"mDAI\";\n uint256 public totalSupply = 1000000000000000000000000; // 1 million tokens\n uint8 public decimals = 18;\n\n event Transfer(\n address indexed _from,\n address indexed _to,\n uint256 _value\n );\n\n event Approval(\n address indexed _owner,\n address indexed _spender,\n uint256 _value\n );\n\n mapping(address => uint256) public balanceOf;\n mapping(address => mapping(address => uint256)) public allowance;\n\n constructor() public {\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address _to, uint256 _value) public returns (bool success) {\n require(balanceOf[msg.sender] >= _value);\n balanceOf[msg.sender] -= _value;\n balanceOf[_to] += _value;\n emit Transfer(msg.sender, _to, _value);\n return true;\n }\n\n function approve(address _spender, uint256 _value) public returns (bool success) {\n allowance[msg.sender][_spender] = _value;\n emit Approval(msg.sender, _spender, _value);\n return true;\n }\n\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {\n require(_value <= balanceOf[_from]);\n require(_value <= allowance[_from][msg.sender]);\n balanceOf[_from] -= _value;\n balanceOf[_to] += _value;\n allowance[_from][msg.sender] -= _value;\n emit Transfer(_from, _to, _value);\n return true;\n }\n}\n", - "sourcePath": "/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol", + "sourcePath": "F:\\07_development\\honing\\ethereum\\defi_tutorial\\src\\contracts\\DaiToken.sol", "ast": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol", "exportedSymbols": { "DaiToken": [ 180 @@ -804,7 +804,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "634:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -933,7 +933,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "777:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -998,10 +998,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "759:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1058,7 +1058,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "819:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1200,7 +1200,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "898:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1464,7 +1464,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1057:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1558,7 +1558,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1111:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1876,10 +1876,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "1280:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1985,7 +1985,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1360:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2035,10 +2035,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "1325:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2268,7 +2268,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1469:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2580,7 +2580,7 @@ "src": "0:1564:0" }, "legacyAST": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol", "exportedSymbols": { "DaiToken": [ 180 @@ -3128,7 +3128,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "634:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3257,7 +3257,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "777:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3322,10 +3322,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "759:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -3382,7 +3382,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "819:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3524,7 +3524,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "898:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3788,7 +3788,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1057:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3882,7 +3882,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1111:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4200,10 +4200,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "1280:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4309,7 +4309,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1360:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4359,10 +4359,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 599, - 600 + 639, + 640 ], - "referencedDeclaration": 599, + "referencedDeclaration": 639, "src": "1325:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4592,7 +4592,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 596, + "referencedDeclaration": 636, "src": "1469:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4962,13 +4962,12 @@ } }, "links": {}, - "address": "0x771c1F161FA839CB9c7684E2885446Ba563f9aec", - "transactionHash": "0x91f2c91190469ec42f148e2a8782bbdf77632167e87799709651e3c637c4c670" + "address": "0xaBB920A165c0DD7854a9A554aaead2922f405144", + "transactionHash": "0xf629043d3dbda08bad16e00fb45a06dde97d2c52a3329a2364754b3d613364b3" } }, "schemaVersion": "3.2.3", - "updatedAt": "2020-08-18T20:08:17.483Z", - "networkType": "ethereum", + "updatedAt": "2021-02-08T08:08:49.681Z", "devdoc": { "methods": {} }, diff --git a/src/abis/DappToken.json b/src/abis/DappToken.json index 863ada070..27f5712b5 100644 --- a/src/abis/DappToken.json +++ b/src/abis/DappToken.json @@ -248,15 +248,15 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol\":\"DappToken\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol\":{\"keccak256\":\"0x72dff62b13b1a6be4bcc10002df5dbaf9a7f84a54eabfcc9216b74327bd1c104\",\"urls\":[\"bzz-raw://3f60a240518bea8ad0e8b19ddc2d6638b8969edb528e48ac28f42a452d1fe214\",\"dweb:/ipfs/Qmc3qhuJ6v4sHHAvwBZPTJPLLpdPARDMig93awj3JtLZtE\"]}},\"version\":1}", - "bytecode": "0x60806040526040518060400160405280600a81526020017f4441707020546f6b656e000000000000000000000000000000000000000000008152506000908051906020019061004f92919061011e565b506040518060400160405280600481526020017f44415050000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b92919061011e565b5069d3c21bcecceda10000006002556012600360006101000a81548160ff021916908360ff1602179055503480156100d257600080fd5b50600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015f57805160ff191683800117855561018d565b8280016001018555821561018d579182015b8281111561018c578251825591602001919060010190610171565b5b50905061019a919061019e565b5090565b6101c091905b808211156101bc5760008160009055506001016101a4565b5090565b90565b610a7d806101d26000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820efbea20edb53e1d6d1375785e2df77d9968d6b695eae7e6c2906880a09d809ca64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a72315820efbea20edb53e1d6d1375785e2df77d9968d6b695eae7e6c2906880a09d809ca64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol\":\"DappToken\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol\":{\"keccak256\":\"0x72dff62b13b1a6be4bcc10002df5dbaf9a7f84a54eabfcc9216b74327bd1c104\",\"urls\":[\"bzz-raw://3f60a240518bea8ad0e8b19ddc2d6638b8969edb528e48ac28f42a452d1fe214\",\"dweb:/ipfs/Qmc3qhuJ6v4sHHAvwBZPTJPLLpdPARDMig93awj3JtLZtE\"]}},\"version\":1}", + "bytecode": "0x60806040526040518060400160405280600a81526020017f4441707020546f6b656e000000000000000000000000000000000000000000008152506000908051906020019061004f92919061011e565b506040518060400160405280600481526020017f44415050000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b92919061011e565b5069d3c21bcecceda10000006002556012600360006101000a81548160ff021916908360ff1602179055503480156100d257600080fd5b50600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506101c3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015f57805160ff191683800117855561018d565b8280016001018555821561018d579182015b8281111561018c578251825591602001919060010190610171565b5b50905061019a919061019e565b5090565b6101c091905b808211156101bc5760008160009055506001016101a4565b5090565b90565b610a7d806101d26000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a723158204c9ab4725273fb9a022ded61f76f432ece5d16c76f536d3523cae406b34dee2164736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461022557806370a082311461024957806395d89b41146102a1578063a9059cbb14610324578063dd62ed3e1461038a57610093565b806306fdde0314610098578063095ea7b31461011b57806318160ddd1461018157806323b872dd1461019f575b600080fd5b6100a0610402565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e05780820151818401526020810190506100c5565b50505050905090810190601f16801561010d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101676004803603604081101561013157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a0565b604051808215151515815260200191505060405180910390f35b610189610592565b6040518082815260200191505060405180910390f35b61020b600480360360608110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610598565b604051808215151515815260200191505060405180910390f35b61022d610803565b604051808260ff1660ff16815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610816565b6040518082815260200191505060405180910390f35b6102a961082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e95780820151818401526020810190506102ce565b50505050905090810190601f1680156103165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108cc565b604051808215151515815260200191505060405180910390f35b6103ec600480360360408110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a23565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156105e657600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561066f57600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561091a57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600560205281600052604060002060205280600052604060002060009150915050548156fea265627a7a723158204c9ab4725273fb9a022ded61f76f432ece5d16c76f536d3523cae406b34dee2164736f6c63430005100032", "sourceMap": "25:1535:1:-;;;50:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;90:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;155:25;126:54;;232:2;206:28;;;;;;;;;;;;;;;;;;;;590:73;8:9:-1;5:2;;;30:1;27;20:12;5:2;590:73:1;645:11;;621:9;:21;631:10;621:21;;;;;;;;;;;;;;;:35;;;;25:1535;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "25:1535:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:1535:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;50:34:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;953:212:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;126:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1171:387;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1171:387:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;206:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;469:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;469:44:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;90:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;90:30:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:278;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;669:278:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;519:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;519:64:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;50:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;953:212::-;1020:12;1078:6;1044:9;:21;1054:10;1044:21;;;;;;;;;;;;;;;:31;1066:8;1044:31;;;;;;;;;;;;;;;:40;;;;1120:8;1099:38;;1108:10;1099:38;;;1130:6;1099:38;;;;;;;;;;;;;;;;;;1154:4;1147:11;;953:212;;;;:::o;126:54::-;;;;:::o;1171:387::-;1253:12;1295:9;:16;1305:5;1295:16;;;;;;;;;;;;;;;;1285:6;:26;;1277:35;;;;;;1340:9;:16;1350:5;1340:16;;;;;;;;;;;;;;;:28;1357:10;1340:28;;;;;;;;;;;;;;;;1330:6;:38;;1322:47;;;;;;1399:6;1379:9;:16;1389:5;1379:16;;;;;;;;;;;;;;;;:26;;;;;;;;;;;1433:6;1415:9;:14;1425:3;1415:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;1481:6;1449:9;:16;1459:5;1449:16;;;;;;;;;;;;;;;:28;1466:10;1449:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;1518:3;1502:28;;1511:5;1502:28;;;1523:6;1502:28;;;;;;;;;;;;;;;;;;1547:4;1540:11;;1171:387;;;;;:::o;206:28::-;;;;;;;;;;;;;:::o;469:44::-;;;;;;;;;;;;;;;;;:::o;90:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;669:278::-;732:12;789:6;764:9;:21;774:10;764:21;;;;;;;;;;;;;;;;:31;;756:40;;;;;;831:6;806:9;:21;816:10;806:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;865:6;847:9;:14;857:3;847:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;907:3;886:33;;895:10;886:33;;;912:6;886:33;;;;;;;;;;;;;;;;;;936:4;929:11;;669:278;;;;:::o;519:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.5.0;\n\ncontract DappToken {\n string public name = \"DApp Token\";\n string public symbol = \"DAPP\";\n uint256 public totalSupply = 1000000000000000000000000; // 1 million tokens\n uint8 public decimals = 18;\n\n event Transfer(\n address indexed _from,\n address indexed _to,\n uint256 _value\n );\n\n event Approval(\n address indexed _owner,\n address indexed _spender,\n uint256 _value\n );\n\n mapping(address => uint256) public balanceOf;\n mapping(address => mapping(address => uint256)) public allowance;\n\n constructor() public {\n balanceOf[msg.sender] = totalSupply;\n }\n\n function transfer(address _to, uint256 _value) public returns (bool success) {\n require(balanceOf[msg.sender] >= _value);\n balanceOf[msg.sender] -= _value;\n balanceOf[_to] += _value;\n emit Transfer(msg.sender, _to, _value);\n return true;\n }\n\n function approve(address _spender, uint256 _value) public returns (bool success) {\n allowance[msg.sender][_spender] = _value;\n emit Approval(msg.sender, _spender, _value);\n return true;\n }\n\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {\n require(_value <= balanceOf[_from]);\n require(_value <= allowance[_from][msg.sender]);\n balanceOf[_from] -= _value;\n balanceOf[_to] += _value;\n allowance[_from][msg.sender] -= _value;\n emit Transfer(_from, _to, _value);\n return true;\n }\n}\n", - "sourcePath": "/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol", + "sourcePath": "F:\\07_development\\honing\\ethereum\\defi_tutorial\\src\\contracts\\DappToken.sol", "ast": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol", "exportedSymbols": { "DappToken": [ 361 @@ -804,7 +804,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "631:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -933,7 +933,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "774:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -998,10 +998,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "756:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1058,7 +1058,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "816:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1200,7 +1200,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "895:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1464,7 +1464,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1054:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1558,7 +1558,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1108:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1876,10 +1876,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "1277:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1985,7 +1985,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1357:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2035,10 +2035,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "1322:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -2268,7 +2268,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1466:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2580,7 +2580,7 @@ "src": "0:1561:1" }, "legacyAST": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol", "exportedSymbols": { "DappToken": [ 361 @@ -3128,7 +3128,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "631:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3257,7 +3257,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "774:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3322,10 +3322,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "756:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -3382,7 +3382,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "816:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3524,7 +3524,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "895:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3788,7 +3788,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1054:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3882,7 +3882,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1108:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4200,10 +4200,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "1277:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4309,7 +4309,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1357:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4359,10 +4359,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 464, - 465 + 639, + 640 ], - "referencedDeclaration": 464, + "referencedDeclaration": 639, "src": "1322:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -4592,7 +4592,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, + "referencedDeclaration": 636, "src": "1466:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -4962,13 +4962,12 @@ } }, "links": {}, - "address": "0xC47d5A20615319629d13B8486d1BB02B450b07ff", - "transactionHash": "0x3ce2b197007ea11d209c123c30ed2d041883be5468b53bb46ace141bafee4d76" + "address": "0x749952Dc35B3B04a9c3E348af01a2AFbE1406c39", + "transactionHash": "0xece5950b18497706d4eb89306f2a77f105121b9ac042ae0f0f1cfb01639f87a8" } }, "schemaVersion": "3.2.3", - "updatedAt": "2020-08-18T20:08:17.479Z", - "networkType": "ethereum", + "updatedAt": "2021-02-08T08:08:49.683Z", "devdoc": { "methods": {} }, diff --git a/src/abis/Migrations.json b/src/abis/Migrations.json index 09e6c0f15..6dc78de8d 100644 --- a/src/abis/Migrations.json +++ b/src/abis/Migrations.json @@ -68,15 +68,15 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_address\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/gregory/code/defi_tutorial/src/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/gregory/code/defi_tutorial/src/contracts/Migrations.sol\":{\"keccak256\":\"0xfdb731592344e2a2890faf03baec7b4bee7057ffba18ba6dbb6eec8db85f8f4c\",\"urls\":[\"bzz-raw://f9b488bbb84816dd04c1b155e943319758db16ee943943648fb264bccecc9879\",\"dweb:/ipfs/QmbW34mYrj3uLteyHf3S46pnp9bnwovtCXHbdBHfzMkSZx\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b7806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820c46be0c3c07eaa3e907f1557f7161dae5b9d38ef67f4c3f2adc1a2df7489fe4664736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820c46be0c3c07eaa3e907f1557f7161dae5b9d38ef67f4c3f2adc1a2df7489fe4664736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_address\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/Migrations.sol\":{\"keccak256\":\"0xfdb731592344e2a2890faf03baec7b4bee7057ffba18ba6dbb6eec8db85f8f4c\",\"urls\":[\"bzz-raw://f9b488bbb84816dd04c1b155e943319758db16ee943943648fb264bccecc9879\",\"dweb:/ipfs/QmbW34mYrj3uLteyHf3S46pnp9bnwovtCXHbdBHfzMkSZx\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b7806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820bf9eb05c99179e2c75a8ad95fa59310a99dceec7bc45b70b51c969691a9a2ac864736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820bf9eb05c99179e2c75a8ad95fa59310a99dceec7bc45b70b51c969691a9a2ac864736f6c63430005100032", "sourceMap": "34:480:2:-;;;123:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;123:50:2;158:10;150:5;;:18;;;;;;;;;;;;;;;;;;34:480;;;;;;", "deployedSourceMap": "34:480:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:480:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;347:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;347:165:2;;;;;;;;;;;;;;;;;;;:::i;:::-;;82:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;58:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;240:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;240:103:2;;;;;;;;;;;;;;;;;:::i;:::-;;347:165;223:5;;;;;;;;;;;209:19;;:10;:19;;;205:26;;;409:19;442:11;409:45;;460:8;:21;;;482:24;;460:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:47:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;460:47:2;;;;230:1;205:26;347:165;:::o;82:36::-;;;;:::o;58:20::-;;;;;;;;;;;;;:::o;240:103::-;223:5;;;;;;;;;;;209:19;;:10;:19;;;205:26;;;329:9;302:24;:36;;;;205:26;240:103;:::o", "source": "pragma solidity >=0.4.21 <0.6.0;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/gregory/code/defi_tutorial/src/contracts/Migrations.sol", + "sourcePath": "F:/07_development/honing/ethereum/defi_tutorial/src/contracts/Migrations.sol", "ast": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/Migrations.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 418 @@ -202,7 +202,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 636, "src": "158:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -286,7 +286,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 636, "src": "209:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -725,7 +725,7 @@ "src": "0:515:2" }, "legacyAST": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/Migrations.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 418 @@ -851,7 +851,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 636, "src": "158:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -935,7 +935,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 636, "src": "209:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1381,12 +1381,12 @@ "5777": { "events": {}, "links": {}, - "address": "0x237f74501d59e9d8E2D9725c187eCf69de89C2E4", - "transactionHash": "0xf4d4c484b28c131288e1e97c20e82a7cc83a941fce84a77424f27092362b29c8" + "address": "0xE7755853D891e2E46B8Df15f106784984BcA2f9B", + "transactionHash": "0xc7d14ae4a838b19782426acd053744431e391d3923f05f188b6fde3071121755" } }, "schemaVersion": "3.2.3", - "updatedAt": "2020-08-18T20:08:17.487Z", + "updatedAt": "2021-02-07T21:40:12.759Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/src/abis/TokenFarm.json b/src/abis/TokenFarm.json index e0c2cebde..7eec6e2c8 100644 --- a/src/abis/TokenFarm.json +++ b/src/abis/TokenFarm.json @@ -196,15 +196,15 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract DappToken\",\"name\":\"_dappToken\",\"type\":\"address\"},{\"internalType\":\"contract DaiToken\",\"name\":\"_daiToken\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"daiToken\",\"outputs\":[{\"internalType\":\"contract DaiToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dappToken\",\"outputs\":[{\"internalType\":\"contract DappToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hasStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isStaking\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"issueTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stakeTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakingBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unstakeTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/gregory/code/defi_tutorial/src/contracts/TokenFarm.sol\":\"TokenFarm\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol\":{\"keccak256\":\"0xb1705dd761dc6ad152de0cee7c9aeecf3f03193ca314cdd08906efa1829cf6a0\",\"urls\":[\"bzz-raw://8750066fb987b8f721edebf3824a68869d209a36d2606ec99e38c34870557ce2\",\"dweb:/ipfs/QmefYSoK6EnM3m1LKo7vjCeZxrnSV7n89wjQGuCDfhdzHV\"]},\"/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol\":{\"keccak256\":\"0x72dff62b13b1a6be4bcc10002df5dbaf9a7f84a54eabfcc9216b74327bd1c104\",\"urls\":[\"bzz-raw://3f60a240518bea8ad0e8b19ddc2d6638b8969edb528e48ac28f42a452d1fe214\",\"dweb:/ipfs/Qmc3qhuJ6v4sHHAvwBZPTJPLLpdPARDMig93awj3JtLZtE\"]},\"/Users/gregory/code/defi_tutorial/src/contracts/TokenFarm.sol\":{\"keccak256\":\"0xbab2c1ac837ce0a03c74496e883d68836a48c689e8d17ec91f7f1bef6d89425b\",\"urls\":[\"bzz-raw://8a0a982f43243c0273d887927eb94a21b407a7fbe8a7f58c9e9b912d66babc47\",\"dweb:/ipfs/QmZghhaYPexr8CX68o78ypJ52wE7ejhKGzzBNTzwVZo4Qw\"]}},\"version\":1}", - "bytecode": "0x60806040526040518060400160405280600f81526020017f4461707020546f6b656e204661726d00000000000000000000000000000000008152506000908051906020019061004f929190610164565b5034801561005c57600080fd5b50604051610fd5380380610fd58339818101604052604081101561007f57600080fd5b81019080805190602001909291908051906020019092919050505081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610209565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a557805160ff19168380011785556101d3565b828001600101855582156101d3579182015b828111156101d25782518255916020019190600101906101b7565b5b5090506101e091906101e4565b5090565b61020691905b808211156102025760008160009055506001016101ea565b5090565b90565b610dbd806102186000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637547c7a3116100715780637547c7a3146102395780638da5cb5b14610267578063a5ce413b146102b1578063be22f546146102bb578063c93c8f3414610305578063fd5e6dd114610361576100a9565b806306fdde03146100ae57806345bc78ab146101315780635eb186f81461018957806360ab5852146101d35780636f49712b146101dd575b600080fd5b6100b66103cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b6040518082815260200191505060405180910390f35b610191610485565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101db6104ab565b005b61021f600480360360208110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610702565b604051808215151515815260200191505060405180910390f35b6102656004803603602081101561024f57600080fd5b8101908080359060200190929190505050610722565b005b61026f610aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610ac7565b005b6102c3610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b61038d6004803603602081101561037757600080fd5b8101908080359060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b505050505081565b60056020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616c6c6572206d75737420626520746865206f776e6572000000000000000081525060200191505060405180910390fd5b60008090505b6004805490508110156106ff5760006004828154811061059057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156106f057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050506040513d60208110156106dd57600080fd5b8101908080519060200190929190505050505b50508080600101915050610574565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008111610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616d6f756e742063616e6e6f742062652030000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b81019080805190602001909291905050505080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ee5760043390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7374616b696e672062616c616e63652063616e6e6f742062652030000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c2a57600080fd5b505af1158015610c3e573d6000803e3d6000fd5b505050506040513d6020811015610c5457600080fd5b8101908080519060200190929190505050506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60048181548110610d5957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820e98c92d87faab2ca5a1ee132ee70c35c0a1fb42c17c8bd851f23b83efe08698b64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637547c7a3116100715780637547c7a3146102395780638da5cb5b14610267578063a5ce413b146102b1578063be22f546146102bb578063c93c8f3414610305578063fd5e6dd114610361576100a9565b806306fdde03146100ae57806345bc78ab146101315780635eb186f81461018957806360ab5852146101d35780636f49712b146101dd575b600080fd5b6100b66103cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b6040518082815260200191505060405180910390f35b610191610485565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101db6104ab565b005b61021f600480360360208110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610702565b604051808215151515815260200191505060405180910390f35b6102656004803603602081101561024f57600080fd5b8101908080359060200190929190505050610722565b005b61026f610aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610ac7565b005b6102c3610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b61038d6004803603602081101561037757600080fd5b8101908080359060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b505050505081565b60056020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616c6c6572206d75737420626520746865206f776e6572000000000000000081525060200191505060405180910390fd5b60008090505b6004805490508110156106ff5760006004828154811061059057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156106f057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050506040513d60208110156106dd57600080fd5b8101908080519060200190929190505050505b50508080600101915050610574565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008111610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616d6f756e742063616e6e6f742062652030000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b81019080805190602001909291905050505080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ee5760043390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7374616b696e672062616c616e63652063616e6e6f742062652030000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c2a57600080fd5b505af1158015610c3e573d6000803e3d6000fd5b505050506040513d6020811015610c5457600080fd5b8101908080519060200190929190505050506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60048181548110610d5957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820e98c92d87faab2ca5a1ee132ee70c35c0a1fb42c17c8bd851f23b83efe08698b64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract DappToken\",\"name\":\"_dappToken\",\"type\":\"address\"},{\"internalType\":\"contract DaiToken\",\"name\":\"_daiToken\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"daiToken\",\"outputs\":[{\"internalType\":\"contract DaiToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dappToken\",\"outputs\":[{\"internalType\":\"contract DappToken\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hasStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isStaking\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"issueTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stakeTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakingBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unstakeTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/TokenFarm.sol\":\"TokenFarm\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol\":{\"keccak256\":\"0xb1705dd761dc6ad152de0cee7c9aeecf3f03193ca314cdd08906efa1829cf6a0\",\"urls\":[\"bzz-raw://8750066fb987b8f721edebf3824a68869d209a36d2606ec99e38c34870557ce2\",\"dweb:/ipfs/QmefYSoK6EnM3m1LKo7vjCeZxrnSV7n89wjQGuCDfhdzHV\"]},\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol\":{\"keccak256\":\"0x72dff62b13b1a6be4bcc10002df5dbaf9a7f84a54eabfcc9216b74327bd1c104\",\"urls\":[\"bzz-raw://3f60a240518bea8ad0e8b19ddc2d6638b8969edb528e48ac28f42a452d1fe214\",\"dweb:/ipfs/Qmc3qhuJ6v4sHHAvwBZPTJPLLpdPARDMig93awj3JtLZtE\"]},\"/F/07_development/honing/ethereum/defi_tutorial/src/contracts/TokenFarm.sol\":{\"keccak256\":\"0xbab2c1ac837ce0a03c74496e883d68836a48c689e8d17ec91f7f1bef6d89425b\",\"urls\":[\"bzz-raw://8a0a982f43243c0273d887927eb94a21b407a7fbe8a7f58c9e9b912d66babc47\",\"dweb:/ipfs/QmZghhaYPexr8CX68o78ypJ52wE7ejhKGzzBNTzwVZo4Qw\"]}},\"version\":1}", + "bytecode": "0x60806040526040518060400160405280600f81526020017f4461707020546f6b656e204661726d00000000000000000000000000000000008152506000908051906020019061004f929190610164565b5034801561005c57600080fd5b50604051610fd5380380610fd58339818101604052604081101561007f57600080fd5b81019080805190602001909291908051906020019092919050505081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610209565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a557805160ff19168380011785556101d3565b828001600101855582156101d3579182015b828111156101d25782518255916020019190600101906101b7565b5b5090506101e091906101e4565b5090565b61020691905b808211156102025760008160009055506001016101ea565b5090565b90565b610dbd806102186000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637547c7a3116100715780637547c7a3146102395780638da5cb5b14610267578063a5ce413b146102b1578063be22f546146102bb578063c93c8f3414610305578063fd5e6dd114610361576100a9565b806306fdde03146100ae57806345bc78ab146101315780635eb186f81461018957806360ab5852146101d35780636f49712b146101dd575b600080fd5b6100b66103cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b6040518082815260200191505060405180910390f35b610191610485565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101db6104ab565b005b61021f600480360360208110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610702565b604051808215151515815260200191505060405180910390f35b6102656004803603602081101561024f57600080fd5b8101908080359060200190929190505050610722565b005b61026f610aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610ac7565b005b6102c3610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b61038d6004803603602081101561037757600080fd5b8101908080359060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b505050505081565b60056020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616c6c6572206d75737420626520746865206f776e6572000000000000000081525060200191505060405180910390fd5b60008090505b6004805490508110156106ff5760006004828154811061059057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156106f057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050506040513d60208110156106dd57600080fd5b8101908080519060200190929190505050505b50508080600101915050610574565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008111610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616d6f756e742063616e6e6f742062652030000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b81019080805190602001909291905050505080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ee5760043390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7374616b696e672062616c616e63652063616e6e6f742062652030000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c2a57600080fd5b505af1158015610c3e573d6000803e3d6000fd5b505050506040513d6020811015610c5457600080fd5b8101908080519060200190929190505050506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60048181548110610d5957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820a2b24edc559a896e35d6fb31ff188357e07f0bc41ca52c273ab1d4028497e2f464736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637547c7a3116100715780637547c7a3146102395780638da5cb5b14610267578063a5ce413b146102b1578063be22f546146102bb578063c93c8f3414610305578063fd5e6dd114610361576100a9565b806306fdde03146100ae57806345bc78ab146101315780635eb186f81461018957806360ab5852146101d35780636f49712b146101dd575b600080fd5b6100b66103cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b6040518082815260200191505060405180910390f35b610191610485565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101db6104ab565b005b61021f600480360360208110156101f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610702565b604051808215151515815260200191505060405180910390f35b6102656004803603602081101561024f57600080fd5b8101908080359060200190929190505050610722565b005b61026f610aa1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610ac7565b005b6102c3610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2c565b604051808215151515815260200191505060405180910390f35b61038d6004803603602081101561037757600080fd5b8101908080359060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b505050505081565b60056020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616c6c6572206d75737420626520746865206f776e6572000000000000000081525060200191505060405180910390fd5b60008090505b6004805490508110156106ff5760006004828154811061059057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156106f057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050506040513d60208110156106dd57600080fd5b8101908080519060200190929190505050505b50508080600101915050610574565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008111610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616d6f756e742063616e6e6f742062652030000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b81019080805190602001909291905050505080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109ee5760043390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7374616b696e672062616c616e63652063616e6e6f742062652030000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c2a57600080fd5b505af1158015610c3e573d6000803e3d6000fd5b505050506040513d6020811015610c5457600080fd5b8101908080519060200190929190505050506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b60048181548110610d5957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820a2b24edc559a896e35d6fb31ff188357e07f0bc41ca52c273ab1d4028497e2f464736f6c63430005100032", "sourceMap": "77:2157:3:-;;;102:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;412:158;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:158:3;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:158:3;;;;;;;;;;;;;;;;;;;;;;;;;495:10;483:9;;:22;;;;;;;;;;;;;;;;;;526:9;515:8;;:20;;;;;;;;;;;;;;;;;;553:10;545:5;;:18;;;;;;;;;;;;;;;;;;412:158;;77:2157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "77:2157:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:2157:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;102:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;102:38:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;265:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;265:46:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;172:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1788:444;;;:::i;:::-;;364:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;364:41:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;576:656;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;576:656:3;;;;;;;;;;;;;;;;;:::i;:::-;;146:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1273:487;;;:::i;:::-;;204:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;317:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;317:41:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;235:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;235:24:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;102:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;265:46::-;;;;;;;;;;;;;;;;;:::o;172:26::-;;;;;;;;;;;;;:::o;1788:444::-;1895:5;;;;;;;;;;;1881:19;;:10;:19;;;1873:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:6;1991:1;1984:8;;1979:247;1996:7;:14;;;;1994:1;:16;1979:247;;;2031:17;2051:7;2059:1;2051:10;;;;;;;;;;;;;;;;;;;;;;;;;2031:30;;2075:12;2090:14;:25;2105:9;2090:25;;;;;;;;;;;;;;;;2075:40;;2142:1;2132:7;:11;2129:87;;;2163:9;;;;;;;;;;;:18;;;2182:9;2193:7;2163:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2163:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2163:38:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2163:38:3;;;;;;;;;;;;;;;;;2129:87;1979:247;;2012:3;;;;;;;1979:247;;;;1788:444::o;364:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;576:656::-;687:1;677:7;:11;669:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;787:8;;;;;;;;;;;:21;;;809:10;829:4;836:7;787:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;787:57:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;787:57:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;787:57:3;;;;;;;;;;;;;;;;;947:7;918:14;:26;933:10;918:26;;;;;;;;;;;;;;;;:36;889:14;:26;904:10;889:26;;;;;;;;;;;;;;;:65;;;;1044:9;:21;1054:10;1044:21;;;;;;;;;;;;;;;;;;;;;;;;;1040:76;;1081:7;1094:10;1081:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1081:24:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:76;1183:4;1159:9;:21;1169:10;1159:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1221:4;1197:9;:21;1207:10;1197:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;576:656;:::o;146:20::-;;;;;;;;;;;;;:::o;1273:487::-;1348:12;1363:14;:26;1378:10;1363:26;;;;;;;;;;;;;;;;1348:41;;1459:1;1449:7;:11;1441:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:8;;;;;;;;;;;:17;;;1586:10;1598:7;1568:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1568:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1568:38:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1568:38:3;;;;;;;;;;;;;;;;;1679:1;1650:14;:26;1665:10;1650:26;;;;;;;;;;;;;;;:30;;;;1748:5;1724:9;:21;1734:10;1724:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1273:487;:::o;204:24::-;;;;;;;;;;;;;:::o;317:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;235:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.5.0;\n\nimport \"./DappToken.sol\";\nimport \"./DaiToken.sol\";\n\ncontract TokenFarm {\n string public name = \"Dapp Token Farm\";\n address public owner;\n DappToken public dappToken;\n DaiToken public daiToken;\n\n address[] public stakers;\n mapping(address => uint) public stakingBalance;\n mapping(address => bool) public hasStaked;\n mapping(address => bool) public isStaking;\n\n constructor(DappToken _dappToken, DaiToken _daiToken) public {\n dappToken = _dappToken;\n daiToken = _daiToken;\n owner = msg.sender;\n }\n\n function stakeTokens(uint _amount) public {\n // Require amount greater than 0\n require(_amount > 0, \"amount cannot be 0\");\n\n // Trasnfer Mock Dai tokens to this contract for staking\n daiToken.transferFrom(msg.sender, address(this), _amount);\n\n // Update staking balance\n stakingBalance[msg.sender] = stakingBalance[msg.sender] + _amount;\n\n // Add user to stakers array *only* if they haven't staked already\n if(!hasStaked[msg.sender]) {\n stakers.push(msg.sender);\n }\n\n // Update staking status\n isStaking[msg.sender] = true;\n hasStaked[msg.sender] = true;\n }\n\n // Unstaking Tokens (Withdraw)\n function unstakeTokens() public {\n // Fetch staking balance\n uint balance = stakingBalance[msg.sender];\n\n // Require amount greater than 0\n require(balance > 0, \"staking balance cannot be 0\");\n\n // Transfer Mock Dai tokens to this contract for staking\n daiToken.transfer(msg.sender, balance);\n\n // Reset staking balance\n stakingBalance[msg.sender] = 0;\n\n // Update staking status\n isStaking[msg.sender] = false;\n }\n\n // Issuing Tokens\n function issueTokens() public {\n // Only owner can call this function\n require(msg.sender == owner, \"caller must be the owner\");\n\n // Issue tokens to all stakers\n for (uint i=0; i 0) {\n dappToken.transfer(recipient, balance);\n }\n }\n }\n}\n", - "sourcePath": "/Users/gregory/code/defi_tutorial/src/contracts/TokenFarm.sol", + "sourcePath": "F:/07_development/honing/ethereum/defi_tutorial/src/contracts/TokenFarm.sol", "ast": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/TokenFarm.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/TokenFarm.sol", "exportedSymbols": { "TokenFarm": [ 621 @@ -225,7 +225,7 @@ "src": "0:23:3" }, { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol", "file": "./DappToken.sol", "id": 421, "nodeType": "ImportDirective", @@ -236,7 +236,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol", "file": "./DaiToken.sol", "id": 422, "nodeType": "ImportDirective", @@ -965,7 +965,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 654, + "referencedDeclaration": 656, "src": "829:4:3", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenFarm_$621", @@ -2822,7 +2822,7 @@ "src": "0:2235:3" }, "legacyAST": { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/TokenFarm.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/TokenFarm.sol", "exportedSymbols": { "TokenFarm": [ 621 @@ -2843,7 +2843,7 @@ "src": "0:23:3" }, { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DappToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DappToken.sol", "file": "./DappToken.sol", "id": 421, "nodeType": "ImportDirective", @@ -2854,7 +2854,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/gregory/code/defi_tutorial/src/contracts/DaiToken.sol", + "absolutePath": "/F/07_development/honing/ethereum/defi_tutorial/src/contracts/DaiToken.sol", "file": "./DaiToken.sol", "id": 422, "nodeType": "ImportDirective", @@ -3583,7 +3583,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 654, + "referencedDeclaration": 656, "src": "829:4:3", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenFarm_$621", @@ -5447,12 +5447,12 @@ "5777": { "events": {}, "links": {}, - "address": "0x689cB867e929Cdd1c69b78B27fb11DAb86B6393e", - "transactionHash": "0x72a1f6b5d98180effbdf5231abfac2a6e06413e2c42e4399647bc90a351385b9" + "address": "0x4466c37D8f2F615C705b2b29230055894179C343", + "transactionHash": "0x71bed8904f6d3b8c065bf1631f0ade8adb05544a3bd7a1216305657d838917bf" } }, "schemaVersion": "3.2.3", - "updatedAt": "2020-08-18T20:08:17.486Z", + "updatedAt": "2021-02-07T21:40:12.756Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/truffle-config.js b/truffle-config.js index 1466c8206..4fa5fdf07 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -1,13 +1,14 @@ + require('babel-register'); require('babel-polyfill'); module.exports = { networks: { development: { - host: "127.0.0.1", + host: '127.0.0.1', port: 7545, - network_id: "*" // Match any network id - }, + network_id: '*' // Match any network id + } }, contracts_directory: './src/contracts/', contracts_build_directory: './src/abis/', @@ -17,7 +18,7 @@ module.exports = { enabled: true, runs: 200 }, - evmVersion: "petersburg" + evmVersion: 'petersburg' } } -} +}; From 31904f5e81290a359f3096d50fee2fa4f36a6227 Mon Sep 17 00:00:00 2001 From: anton-karlovskiy-g Date: Mon, 8 Feb 2021 13:38:10 +0300 Subject: [PATCH 02/14] [chore] clean up --- .vscode/settings.json | 4 +- package.json | 11 ++- scripts/issue-token.js | 11 +-- src/abis/DaiToken.json | 6 +- src/abis/DappToken.json | 6 +- src/abis/Migrations.json | 6 +- src/abis/TokenFarm.json | 6 +- src/contracts/TokenFarm.sol | 6 +- test/TokenFarm.test.js | 129 ++++++++++++++++++------------------ truffle-config.js | 1 + 10 files changed, 99 insertions(+), 87 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7e6ac97c4..683d2877a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,10 @@ { "cSpell.words": [ + "Unstake", "bignumber", "browserslist", "defi", - "identicon" + "identicon", + "unstaking" ] } \ No newline at end of file diff --git a/package.json b/package.json index a03085e95..4b9135014 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "description": "DeFi Token Staking App", "author": "gregory@dappuniversity.com", + "contributors": [ + "gregory@dappuniversity.com", + "Anton K. " + ], "dependencies": { "babel-polyfill": "6.26.0", "babel-preset-env": "1.7.0", @@ -26,7 +30,12 @@ "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", - "eject": "react-scripts eject" + "eject": "react-scripts eject", + "truffle-compile": "truffle compile", + "truffle-migrate": "truffle migrate", + "truffle-migrate-reset": "truffle migrate --reset", + "truffle-console": "truffle console", + "truffle-test": "truffle test" }, "eslintConfig": { "extends": "react-app" diff --git a/scripts/issue-token.js b/scripts/issue-token.js index 9addf8906..af6ed36a7 100644 --- a/scripts/issue-token.js +++ b/scripts/issue-token.js @@ -1,9 +1,10 @@ -const TokenFarm = artifacts.require('TokenFarm') + +const TokenFarm = artifacts.require('TokenFarm'); module.exports = async function(callback) { - let tokenFarm = await TokenFarm.deployed() - await tokenFarm.issueTokens() + let tokenFarm = await TokenFarm.deployed(); + await tokenFarm.issueTokens(); // Code goes here... - console.log("Tokens issued!") - callback() + console.log('Tokens issued!'); + callback(); } diff --git a/src/abis/DaiToken.json b/src/abis/DaiToken.json index 72799eba5..141b9f941 100644 --- a/src/abis/DaiToken.json +++ b/src/abis/DaiToken.json @@ -4962,12 +4962,12 @@ } }, "links": {}, - "address": "0xaBB920A165c0DD7854a9A554aaead2922f405144", - "transactionHash": "0xf629043d3dbda08bad16e00fb45a06dde97d2c52a3329a2364754b3d613364b3" + "address": "0x645F27AF45Cf2B392F2E52DC55999b898aEA81E5", + "transactionHash": "0x199823adb8520ae42b4366bd984820b4d2a09feb0c9b662abd06ab6c44f1846f" } }, "schemaVersion": "3.2.3", - "updatedAt": "2021-02-08T08:08:49.681Z", + "updatedAt": "2021-02-08T08:21:30.487Z", "devdoc": { "methods": {} }, diff --git a/src/abis/DappToken.json b/src/abis/DappToken.json index 27f5712b5..74909eb98 100644 --- a/src/abis/DappToken.json +++ b/src/abis/DappToken.json @@ -4962,12 +4962,12 @@ } }, "links": {}, - "address": "0x749952Dc35B3B04a9c3E348af01a2AFbE1406c39", - "transactionHash": "0xece5950b18497706d4eb89306f2a77f105121b9ac042ae0f0f1cfb01639f87a8" + "address": "0xCb8c94B0689eF6D4C58Cf300B92C312F2B46d05f", + "transactionHash": "0x4b9075b4c1d87ba7af7914cce33104dc4a5e3f8c0f42e09ebec4dfa36828070d" } }, "schemaVersion": "3.2.3", - "updatedAt": "2021-02-08T08:08:49.683Z", + "updatedAt": "2021-02-08T08:21:30.489Z", "devdoc": { "methods": {} }, diff --git a/src/abis/Migrations.json b/src/abis/Migrations.json index 6dc78de8d..6c8a0fcaa 100644 --- a/src/abis/Migrations.json +++ b/src/abis/Migrations.json @@ -1381,12 +1381,12 @@ "5777": { "events": {}, "links": {}, - "address": "0xE7755853D891e2E46B8Df15f106784984BcA2f9B", - "transactionHash": "0xc7d14ae4a838b19782426acd053744431e391d3923f05f188b6fde3071121755" + "address": "0xc9441262d793bDc7bC5298F8270c7C1d5B87D0D0", + "transactionHash": "0x1870768d527d69e803ed97320a9060d976066d2dc9f4348e2d532aeba8bb7720" } }, "schemaVersion": "3.2.3", - "updatedAt": "2021-02-07T21:40:12.759Z", + "updatedAt": "2021-02-08T08:14:35.746Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/src/abis/TokenFarm.json b/src/abis/TokenFarm.json index 7eec6e2c8..a6f5777ab 100644 --- a/src/abis/TokenFarm.json +++ b/src/abis/TokenFarm.json @@ -5447,12 +5447,12 @@ "5777": { "events": {}, "links": {}, - "address": "0x4466c37D8f2F615C705b2b29230055894179C343", - "transactionHash": "0x71bed8904f6d3b8c065bf1631f0ade8adb05544a3bd7a1216305657d838917bf" + "address": "0x8C573EdA663fe28fa8eeD17367184c79df2e83e3", + "transactionHash": "0x855244b9ebcd3624c36644101e0431f395f1e87f67a99e1d2905d21ee93b5c5d" } }, "schemaVersion": "3.2.3", - "updatedAt": "2021-02-07T21:40:12.756Z", + "updatedAt": "2021-02-08T08:14:35.744Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/src/contracts/TokenFarm.sol b/src/contracts/TokenFarm.sol index 6a003f625..d12f21a06 100644 --- a/src/contracts/TokenFarm.sol +++ b/src/contracts/TokenFarm.sol @@ -24,7 +24,7 @@ contract TokenFarm { // Require amount greater than 0 require(_amount > 0, "amount cannot be 0"); - // Trasnfer Mock Dai tokens to this contract for staking + // Transfer Mock DAI tokens to this contract for staking daiToken.transferFrom(msg.sender, address(this), _amount); // Update staking balance @@ -48,7 +48,7 @@ contract TokenFarm { // Require amount greater than 0 require(balance > 0, "staking balance cannot be 0"); - // Transfer Mock Dai tokens to this contract for staking + // Transfer deposited Mock DAI tokens from this contract to the caller of this method for unstaking daiToken.transfer(msg.sender, balance); // Reset staking balance @@ -64,7 +64,7 @@ contract TokenFarm { require(msg.sender == owner, "caller must be the owner"); // Issue tokens to all stakers - for (uint i=0; i 0) { diff --git a/test/TokenFarm.test.js b/test/TokenFarm.test.js index 87940869b..e56db0d47 100644 --- a/test/TokenFarm.test.js +++ b/test/TokenFarm.test.js @@ -1,109 +1,108 @@ -const DaiToken = artifacts.require('DaiToken') -const DappToken = artifacts.require('DappToken') -const TokenFarm = artifacts.require('TokenFarm') + +const DaiToken = artifacts.require('DaiToken'); +const DappToken = artifacts.require('DappToken'); +const TokenFarm = artifacts.require('TokenFarm'); require('chai') .use(require('chai-as-promised')) - .should() + .should(); function tokens(n) { return web3.utils.toWei(n, 'ether'); } contract('TokenFarm', ([owner, investor]) => { - let daiToken, dappToken, tokenFarm + let daiToken, dappToken, tokenFarm; before(async () => { // Load Contracts - daiToken = await DaiToken.new() - dappToken = await DappToken.new() - tokenFarm = await TokenFarm.new(dappToken.address, daiToken.address) + daiToken = await DaiToken.new(); + dappToken = await DappToken.new(); + tokenFarm = await TokenFarm.new(dappToken.address, daiToken.address); // Transfer all Dapp tokens to farm (1 million) - await dappToken.transfer(tokenFarm.address, tokens('1000000')) + await dappToken.transfer(tokenFarm.address, tokens('1000000')); - // Send tokens to investor - await daiToken.transfer(investor, tokens('100'), { from: owner }) - }) + // Send some of Mock DAI tokens to investor + await daiToken.transfer(investor, tokens('100'), { from: owner }); + }); - describe('Mock DAI deployment', async () => { - it('has a name', async () => { - const name = await daiToken.name() - assert.equal(name, 'Mock DAI Token') - }) - }) + describe('Mock DAI Token deployment', async () => { + it('Mock DAI Token has a name', async () => { + const name = await daiToken.name(); + assert.equal(name, 'Mock DAI Token'); + }); + }); describe('Dapp Token deployment', async () => { - it('has a name', async () => { - const name = await dappToken.name() - assert.equal(name, 'DApp Token') - }) - }) + it('Dapp Token has a name', async () => { + const name = await dappToken.name(); + assert.equal(name, 'DApp Token'); + }); + }); describe('Token Farm deployment', async () => { - it('has a name', async () => { - const name = await tokenFarm.name() - assert.equal(name, 'Dapp Token Farm') - }) - - it('contract has tokens', async () => { - let balance = await dappToken.balanceOf(tokenFarm.address) - assert.equal(balance.toString(), tokens('1000000')) - }) - }) + it('Token Farm has a name', async () => { + const name = await tokenFarm.name(); + assert.equal(name, 'Dapp Token Farm'); + }); - describe('Farming tokens', async () => { + it('Token Farm contract has all Dapp tokens', async () => { + let balance = await dappToken.balanceOf(tokenFarm.address); + assert.equal(balance.toString(), tokens('1000000')); + }); + }); - it('rewards investors for staking mDai tokens', async () => { - let result + describe('Farming Dapp tokens', async () => { + it('rewards investors for staking Mock DAI tokens', async () => { + let result; // Check investor balance before staking - result = await daiToken.balanceOf(investor) - assert.equal(result.toString(), tokens('100'), 'investor Mock DAI wallet balance correct before staking') + result = await daiToken.balanceOf(investor); + assert.equal(result.toString(), tokens('100'), 'investor Mock DAI wallet balance correct before staking'); // Stake Mock DAI Tokens - await daiToken.approve(tokenFarm.address, tokens('100'), { from: investor }) - await tokenFarm.stakeTokens(tokens('100'), { from: investor }) + await daiToken.approve(tokenFarm.address, tokens('100'), { from: investor }); + await tokenFarm.stakeTokens(tokens('100'), { from: investor }); // Check staking result - result = await daiToken.balanceOf(investor) - assert.equal(result.toString(), tokens('0'), 'investor Mock DAI wallet balance correct after staking') + result = await daiToken.balanceOf(investor); + assert.equal(result.toString(), tokens('0'), 'investor Mock DAI wallet balance correct after staking'); - result = await daiToken.balanceOf(tokenFarm.address) - assert.equal(result.toString(), tokens('100'), 'Token Farm Mock DAI balance correct after staking') + result = await daiToken.balanceOf(tokenFarm.address); + assert.equal(result.toString(), tokens('100'), 'Token Farm Mock DAI balance correct after staking'); - result = await tokenFarm.stakingBalance(investor) - assert.equal(result.toString(), tokens('100'), 'investor staking balance correct after staking') + result = await tokenFarm.stakingBalance(investor); + assert.equal(result.toString(), tokens('100'), 'investor staking balance correct after staking'); - result = await tokenFarm.isStaking(investor) - assert.equal(result.toString(), 'true', 'investor staking status correct after staking') + result = await tokenFarm.isStaking(investor); + assert.equal(result.toString(), 'true', 'investor staking status correct after staking'); // Issue Tokens - await tokenFarm.issueTokens({ from: owner }) + await tokenFarm.issueTokens({ from: owner }); // Check balances after issuance - result = await dappToken.balanceOf(investor) - assert.equal(result.toString(), tokens('100'), 'investor DApp Token wallet balance correct affter issuance') + result = await dappToken.balanceOf(investor); + assert.equal(result.toString(), tokens('100'), 'investor DApp Token wallet balance correct after issuance'); - // Ensure that only onwer can issue tokens + // Ensure that only owner can issue tokens await tokenFarm.issueTokens({ from: investor }).should.be.rejected; // Unstake tokens - await tokenFarm.unstakeTokens({ from: investor }) + await tokenFarm.unstakeTokens({ from: investor }); // Check results after unstaking - result = await daiToken.balanceOf(investor) - assert.equal(result.toString(), tokens('100'), 'investor Mock DAI wallet balance correct after staking') - - result = await daiToken.balanceOf(tokenFarm.address) - assert.equal(result.toString(), tokens('0'), 'Token Farm Mock DAI balance correct after staking') + result = await daiToken.balanceOf(investor); + assert.equal(result.toString(), tokens('100'), 'investor Mock DAI wallet balance correct after unstaking'); - result = await tokenFarm.stakingBalance(investor) - assert.equal(result.toString(), tokens('0'), 'investor staking balance correct after staking') + result = await daiToken.balanceOf(tokenFarm.address); + assert.equal(result.toString(), tokens('0'), 'Token Farm Mock DAI balance correct after unstaking'); - result = await tokenFarm.isStaking(investor) - assert.equal(result.toString(), 'false', 'investor staking status correct after staking') - }) - }) + result = await tokenFarm.stakingBalance(investor); + assert.equal(result.toString(), tokens('0'), 'investor staking balance correct after unstaking'); -}) + result = await tokenFarm.isStaking(investor); + assert.equal(result.toString(), 'false', 'investor staking status correct after unstaking'); + }); + }); +}); diff --git a/truffle-config.js b/truffle-config.js index 4fa5fdf07..280d8a945 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -4,6 +4,7 @@ require('babel-polyfill'); module.exports = { networks: { + // Connection to Ganache development: { host: '127.0.0.1', port: 7545, From 02134f4d438ef337cc61897cae5783a4a8069f64 Mon Sep 17 00:00:00 2001 From: anton-karlovskiy-g Date: Mon, 8 Feb 2021 17:22:32 +0300 Subject: [PATCH 03/14] [chore] clean up --- .vscode/settings.json | 3 + src/components/App.js | 153 +++++++++++++++++++-------------------- src/components/Main.js | 15 ++-- src/components/Navbar.js | 10 +-- 4 files changed, 86 insertions(+), 95 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 683d2877a..70af83a91 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,9 +2,12 @@ "cSpell.words": [ "Unstake", "bignumber", + "borderless", "browserslist", "defi", "identicon", + "noopener", + "noreferrer", "unstaking" ] } \ No newline at end of file diff --git a/src/components/App.js b/src/components/App.js index 1d1c880ec..3900705d6 100755 --- a/src/components/App.js +++ b/src/components/App.js @@ -1,110 +1,108 @@ -import React, { Component } from 'react' -import Web3 from 'web3' -import DaiToken from '../abis/DaiToken.json' -import DappToken from '../abis/DappToken.json' -import TokenFarm from '../abis/TokenFarm.json' -import Navbar from './Navbar' -import Main from './Main' -import './App.css' + +import React, { Component } from 'react'; +import Web3 from 'web3'; +import DaiToken from '../abis/DaiToken.json'; +import DappToken from '../abis/DappToken.json'; +import TokenFarm from '../abis/TokenFarm.json'; +import Navbar from './Navbar'; +import Main from './Main'; +import './App.css'; class App extends Component { + constructor(props) { + super(props); + this.state = { + account: '0x0', + daiToken: {}, + dappToken: {}, + tokenFarm: {}, + daiTokenBalance: '0', + dappTokenBalance: '0', + stakingBalance: '0', + loading: true + }; + } async componentWillMount() { - await this.loadWeb3() - await this.loadBlockchainData() + await this.loadWeb3(); + await this.loadBlockchainData(); + } + + async loadWeb3() { + if (window.ethereum) { + window.web3 = new Web3(window.ethereum); + await window.ethereum.enable(); + } else if (window.web3) { + window.web3 = new Web3(window.web3.currentProvider); + } else { + window.alert('Non-Ethereum browser detected. You should consider trying MetaMask!'); + } } async loadBlockchainData() { - const web3 = window.web3 + const web3 = window.web3; - const accounts = await web3.eth.getAccounts() - this.setState({ account: accounts[0] }) + const accounts = await web3.eth.getAccounts(); + this.setState({ account: accounts[0] }); - const networkId = await web3.eth.net.getId() + const networkId = await web3.eth.net.getId(); // Load DaiToken - const daiTokenData = DaiToken.networks[networkId] + const daiTokenData = DaiToken.networks[networkId]; if(daiTokenData) { - const daiToken = new web3.eth.Contract(DaiToken.abi, daiTokenData.address) - this.setState({ daiToken }) - let daiTokenBalance = await daiToken.methods.balanceOf(this.state.account).call() - this.setState({ daiTokenBalance: daiTokenBalance.toString() }) + const daiToken = new web3.eth.Contract(DaiToken.abi, daiTokenData.address); + this.setState({ daiToken }); + let daiTokenBalance = await daiToken.methods.balanceOf(this.state.account).call(); + this.setState({ daiTokenBalance: daiTokenBalance.toString() }); } else { - window.alert('DaiToken contract not deployed to detected network.') + window.alert('DaiToken contract not deployed to detected network.'); } // Load DappToken - const dappTokenData = DappToken.networks[networkId] + const dappTokenData = DappToken.networks[networkId]; if(dappTokenData) { - const dappToken = new web3.eth.Contract(DappToken.abi, dappTokenData.address) - this.setState({ dappToken }) - let dappTokenBalance = await dappToken.methods.balanceOf(this.state.account).call() - this.setState({ dappTokenBalance: dappTokenBalance.toString() }) + const dappToken = new web3.eth.Contract(DappToken.abi, dappTokenData.address); + this.setState({ dappToken }); + let dappTokenBalance = await dappToken.methods.balanceOf(this.state.account).call(); + this.setState({ dappTokenBalance: dappTokenBalance.toString() }); } else { - window.alert('DappToken contract not deployed to detected network.') + window.alert('DappToken contract not deployed to detected network.'); } // Load TokenFarm - const tokenFarmData = TokenFarm.networks[networkId] + const tokenFarmData = TokenFarm.networks[networkId]; if(tokenFarmData) { - const tokenFarm = new web3.eth.Contract(TokenFarm.abi, tokenFarmData.address) - this.setState({ tokenFarm }) - let stakingBalance = await tokenFarm.methods.stakingBalance(this.state.account).call() - this.setState({ stakingBalance: stakingBalance.toString() }) + const tokenFarm = new web3.eth.Contract(TokenFarm.abi, tokenFarmData.address); + this.setState({ tokenFarm }); + let stakingBalance = await tokenFarm.methods.stakingBalance(this.state.account).call(); + this.setState({ stakingBalance: stakingBalance.toString() }); } else { - window.alert('TokenFarm contract not deployed to detected network.') - } - - this.setState({ loading: false }) - } - - async loadWeb3() { - if (window.ethereum) { - window.web3 = new Web3(window.ethereum) - await window.ethereum.enable() - } - else if (window.web3) { - window.web3 = new Web3(window.web3.currentProvider) + window.alert('TokenFarm contract not deployed to detected network.'); } - else { - window.alert('Non-Ethereum browser detected. You should consider trying MetaMask!') - } - } - stakeTokens = (amount) => { - this.setState({ loading: true }) - this.state.daiToken.methods.approve(this.state.tokenFarm._address, amount).send({ from: this.state.account }).on('transactionHash', (hash) => { - this.state.tokenFarm.methods.stakeTokens(amount).send({ from: this.state.account }).on('transactionHash', (hash) => { - this.setState({ loading: false }) - }) - }) + this.setState({ loading: false }); } - unstakeTokens = (amount) => { - this.setState({ loading: true }) - this.state.tokenFarm.methods.unstakeTokens().send({ from: this.state.account }).on('transactionHash', (hash) => { - this.setState({ loading: false }) - }) + stakeTokens = amount => { + this.setState({ loading: true }); + this.state.daiToken.methods.approve(this.state.tokenFarm._address, amount).send({ from: this.state.account }).on('transactionHash', hash => { + this.state.tokenFarm.methods.stakeTokens(amount).send({ from: this.state.account }).on('transactionHash', hash => { + this.setState({ loading: false }); + }); + }); } - constructor(props) { - super(props) - this.state = { - account: '0x0', - daiToken: {}, - dappToken: {}, - tokenFarm: {}, - daiTokenBalance: '0', - dappTokenBalance: '0', - stakingBalance: '0', - loading: true - } + unstakeTokens = amount => { + this.setState({ loading: true }); + this.state.tokenFarm.methods.unstakeTokens().send({ from: this.state.account }).on('transactionHash', hash => { + this.setState({ loading: false }); + }); } render() { - let content + let content; if(this.state.loading) { - content =

Loading...

+ content =

Loading...

; } else { content =
+ />; } return ( @@ -125,12 +123,9 @@ class App extends Component { + rel="noopener noreferrer"> - {content} -
diff --git a/src/components/Main.js b/src/components/Main.js index 832ededac..ea29457ff 100644 --- a/src/components/Main.js +++ b/src/components/Main.js @@ -1,12 +1,11 @@ -import React, { Component } from 'react' -import dai from '../dai.png' -class Main extends Component { +import React, { Component } from 'react'; +import dai from '../dai.png'; +class Main extends Component { render() { return (
- @@ -21,11 +20,8 @@ class Main extends Component {
-
-
-
{ event.preventDefault() let amount @@ -62,11 +58,10 @@ class Main extends Component { event.preventDefault() this.props.unstakeTokens() }}> - UN-STAKE... - + UN-STAKE... +
-
); } diff --git a/src/components/Navbar.js b/src/components/Navbar.js index 4bbe714ec..a2e32d81c 100644 --- a/src/components/Navbar.js +++ b/src/components/Navbar.js @@ -1,8 +1,8 @@ -import React, { Component } from 'react' -import farmer from '../farmer.png' -class Navbar extends Component { +import React, { Component } from 'react'; +import farmer from '../farmer.png'; +class Navbar extends Component { render() { return (